docs(spec): Amendment A1 — sources som flow-sekvens + falsification-reviewer-persona

Ordre 20260902T113745Z-1250119413-from-.claude (S4), inkl. PM-amendmentet 02.09 14:20Z
som flyttet punkt 2 fra blokkliste til flow-sekvens.

1. skills/falsification-reviewer/ — andre framework-nøytrale persona ved siden av
   expert-reviewer, ordrett etter Handoff-specen (portfolio-optimiser plan.md § Handoff).
   Bærer evidens-trikotomien present/absent/unreadable der unreadable NAVNGIR formen den
   ikke kunne lese + items_seen; adjudication med `unknown` og `proposed` eksplisitt
   navngitt og aldri kollapset; K5-terskelen (B3) som skillens regel — en dom hviler på et
   konsept KUN når state == present OG trust_tier != unverified, alt annet rapporteres som
   (state, reason, items_seen) og DISKONTERES, aldri avvises (consumption-contract § 6.3:
   trust tiers er rådgivende signaler, ikke access control; machine-confirmed klarerer
   terskelen). En refutasjon som ikke navngir en refuter er ingen refutasjon.
   example-evidence.json bærer frontmatteren ORDRETT, ikke bare som dict — formspørsmålet
   A1 avgjør er ikke avgjørbart fra {"sources": [{...}]} alene.

2. method-spec.md § 3 Steg 1: Amendment A1. Linjeorientert parsing RESTATED som normativ
   (ikke relaksert); `sources` pinnes som énlinjes flow-sekvens av én eller flere
   flow-mappinger, blokkliste MÅ IKKE emitteres, og en konsument som møter en rapporterer
   den som unreadable med form + antall. Ny rad i § 12. Begrunnelse målt: linjeorientert
   parsing har én verdi per nøkkel, så en blokkliste mister alle oppføringer unntatt én
   STILLE; K5-taket målt 01.09 = 2 av 5 nøkler på ÉN kilde.

   AKSE-NOTE, skrevet inn i spec-en: A1 binder EMISJON. Konsumentens egen plan sier
   ordrett «A block sequence and a block mapping are both conformant OKF; they are simply
   outside the accepted subset, and the decoder is not entitled to an opinion about whether
   the author erred» — sitert verbatim i spec-en. Et flatt forbud uten denne noten ville
   gjort konsumentens egen SPEC-kanoniske fikstur ikke-konform.

   ÅPENT FUNN, målt 02.09 mot llm-ingestion-guard 1.2.0 (kjent-positiv: title PASS,
   verified flow-mapping PASS): porten AVVISER BEGGE former — flow-sekvens med
   «disallowed YAML indicator '['», blokkliste med «a mapping is not expressible». A1
   pinner altså en form ingen shippet versjon av porten leser i dag. Ført i spec-en og
   CHANGELOG, ikke omgått: alternativet feiler av en verre grunn (mister data).

3. De to køplasserte postene fra 25.08 STÅR (§ 10.1 og § 11.1). Ordren spurte på
   SCOPE-aksen; avslaget ligger på RATIFIKASJONS-aksen — begge er ren spec-tekst, men
   løsningen er fortsatt operatørens å velge blant åpne opsjoner (D-A/D-F), og
   :29-referenten endrer en konformans-MUST to konsumenter måles mot. Premisser re-målt:
   git log --since=2026-08-25 tomt, ingen ordre i arkivet mellom 25.08 og 02.09,
   ingest-spec.md:29 ordrett uendret.

Verifisering kjørt (commons eier ingen kjørbar kode — nevner: 69 filer, 0 .py/.sh/CI):
konsumentens egne guards kjørt mot artefaktene her — _FRAMEWORK_NAMES (14 navn,
IGNORECASE) og persona-testens _FORBIDDEN over 6 filer: 0 treff, kjent-positiv PASS.
grep -c 'OKF bundle' i skillen: 0 (kjent-positiv 'knowledge bundle': 1). json.tool OK.
Steg 1-8-markørene og MUST-språket intakt etter amendmentet.

IKKE PUSHET (open/ krever operatørtoken). Ingen versjonsbump, ingen tag.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-02 17:02:53 +02:00
commit ff7b9b7c73
6 changed files with 328 additions and 0 deletions

View file

@ -16,6 +16,41 @@ Version numbers apply to the repository as a whole. The `manifest_version` in
[`ingest-spec.md`](ingest-spec.md) §4 is a separate, independent schema version and is not
affected by this file.
## [Unreleased]
### Added
- **[`method-spec.md`](method-spec.md) §3 Step 1 — Amendment A1 (2026-09-02), multi-source
provenance.** `sources` is normatively written as a **single-line flow sequence of one or
more flow mappings**; a block list MUST NOT be emitted, and a consumer that meets one reports
it as unreadable, naming the shape and the number of entries seen. Line-oriented `key: value`
parsing is untouched and restated as normative — A1 is a form pinned *within* it, not a
relaxation of it. A single mapping normalises to a one-element tuple, so one source and
several sources read the same way and last-write-wins never arises. Rationale, measured:
line-oriented parsing carries one value per key, so a multi-source concept written as a block
list loses every entry but one *silently*; on the reference corpus 2026-09-01, **2 of 5 keys
were carried on a single source**. Added the matching `sources` row to §12.
- **Axis note, in the spec:** A1 binds **emission**. It does not reclassify a block list as
malformed OKF, and the reference consumer's own decoder is quoted verbatim saying it is
conformant-but-outside-the-accepted-subset.
- **Open finding, measured 2026-09-02, recorded not worked around:** `llm-ingestion-guard`
1.2.0 rejects *both* forms (`'['` indicator for the flow sequence, "a mapping is not
expressible" for the block list), with `title` and `verified: { by, at }` as
known-positives. A1 therefore pins a form no shipped version of that gate reads today.
- **[`skills/falsification-reviewer/`](skills/falsification-reviewer/)** — a second
framework-neutral persona, alongside `expert-reviewer`: it attempts to *refute* a claim
against a project's curated knowledge base, and reports what the knowledge base could not
tell it as part of the verdict. Carries the evidence-state trichotomy (`present` / `absent` /
`unreadable`, where `unreadable` names the shape it could not read and the count of entries
seen), the `adjudication` set with `unknown` written explicitly rather than collapsed into
`proposed`, the reliance threshold (a verdict may rest on a concept only when state is
`present` and `trust_tier` is not `unverified` — everything else is reported as
`(state, reason, items_seen)` and **discounted, never rejected**), and the rule that a
refutation naming no refuter is not a refutation.
[`references/example-evidence.json`](skills/falsification-reviewer/references/example-evidence.json)
carries the frontmatter verbatim, so the form question A1 settles is decidable from the
example itself.
## [0.1.0] - 2026-08-17
First tagged release. It carries the full contents accumulated since the repository was opened