docs: the two addendum defects recorded as invariants with their measurements

[skip-docs]

PM addenda 4 and 5 to order 20260902T151931Z-250257273. Each row carries the
decision, the measurement that forced it, and the mutations that turn it red --
including the two the measurement itself corrected: that reverting both
current_progress sites left only a source-inspection arm red, and that an
actorless verified value never reaches trust_tier through evidence_for at all.
This commit is contained in:
Kjell Tore Guttormsen 2026-09-03 01:29:01 +02:00
commit 24c45f3ebd

View file

@ -1073,6 +1073,48 @@ Python ≥3.10. MAF (`agent-framework-core` 1.16.0, `-orchestrations` 1.1.1 —
nye verktøyet, så at en manager velger BEDRE med et utdrag enn med hele indeksen er ikke bevist nye verktøyet, så at en manager velger BEDRE med et utdrag enn med hele indeksen er ikke bevist
(structured-output-grensens klasse); og ordrens nevner for N100:2023 var 34 mens disken viser 40 — (structured-output-grensens klasse); og ordrens nevner for N100:2023 var 34 mens disken viser 40 —
tallene bruker den målte nevneren. Måling: `docs/2026-08-26-katalogkostnaden.md`. tallene bruker den målte nevneren. Måling: `docs/2026-08-26-katalogkostnaden.md`.
- **Et fravær ved en signeringsport sies i ORD; i dataene sies det ved å være borte (PM-tillegg 4,
økt 77):** `PlanReviewRequest.current_progress` og `ParkedExploration.current_progress` ble begge
bygget med `str(review.current_progress)`. Verdien er en `MagenticProgressLedger | None` og er
`None` i hver kjøring målt så langt, så `str()` ga de fire tegnene `None`, rendererens
truthiness-vakt fant dem ikke-tomme, og eksperten som skulle SIGNERE en plan ble vist en
«progress so far»-seksjon hvis eneste innhold var ordet `None` — og de samme fire tegnene ble
skrevet inn i `{run_id}-plan-review.json`, det ENESTE som krysser prosessgrensen i U12s asynkrone
dør. `_progress_text` er den ENE konverteringen (ved siden av `_plan_text`): fravær blir tom
streng, aldri `"None"`. **Datalaget sier fravær ved å være tomt** (`Bundle.skipped`s
tom-tuppel-regel), mens **TERMINALEN sier det i ord** — det er den ene flaten der omisjon er
feil, fordi stillhet ved en port noen signerer er nøyaktig dét `PlanReviewInputError` alt nekter
for EOF. **Målingen endret testen:** å reversere BEGGE kallsteder lot KUN en kildeinspeksjons-arm
bli rød — en lint, ikke en gate, fordi de første armene konstruerer en `PlanReviewRequest` selv og
aldri går inn i noen av stedene. Hvert sted har nå et ATFERDSMESSIG vitne som driver den EKTE
døra: terminalen for den synkrone, den parkerte spørsmålsFILA for den asynkrone. Load-bearing
MÅLT (`tests/test_plan_review_progress_line_loadbearing.py`, 7 armer), fem mutasjoner alle røde
mot HELE suiten, hver med sin egen signatur + grønn kontroll 1202/5 og golden BYTE-UENDRET:
begge steder reversert (3 røde) · det synkrone alene (2) · det parkerte alene (2) · terminalen går
stille igjen (2) · plassholderen fyrer alltid og sluker en ekte ledger (1, kontrollen alene).
Recorder-wiringen i `resume_exploration` er URØRT (uvitnet, defensiv — S2b).
- **`evidence_for` avleder en tier KUN for nøkkelen SPEC §5.3 tierer (PM-tillegg 5, økt 77):**
`evidence_for(path, key="sources")` REISTE `ValueError`. Tieren ble avledet UBETINGET gjennom
`trust_tier`, som nekter en oppføring uten `by`-aktør — riktig, fordi en tillitsgrad avledet av
en oppføring som identifiserer ingen mynter den proveniensen den påstår å lese. Men `by` er
påkrevd av en VERIFIKASJONS-oppføring (SPEC §5.2), ikke av enhver provenienss-nøkkel: den avtalte
segmenterte formen bærer `segment_id`/`source_offset`, en `sources`-liste bærer `id`/`resource`.
Vakten tilhørende ÉN nøkkel ble anvendt på ALLE. **`trust_tier` er URØRT** — `_TIERED_KEY` navngir
den ene nøkkelen §5.3 tierer, og enhver annen nøkkel kommer tilbake med
`state`/`reason`/`items_seen`/`entries` og `tier=None`. **`admits_falsification` flyttet MED, og
det er samme faktum, ikke scope-krype:** den leste `tier != "unverified"`, og `None != "unverified"`
er SANT, så en `sources`-liste som FINNES ville klarert en terskel om verifisering; den navngir nå
tierene som klarerer. For hver verdi som var nåbar før endringen er de to skrivemåtene identiske —
derfor står de eksisterende K5-armene grønne, og derfor er dette en innstramming og ikke en ny
regel. **Målingen korrigerte testen:** en `verified`-verdi UTEN aktør når aldri `trust_tier`
gjennom `evidence_for` i det hele tatt — dekoderen nekter formen først, som
`unreadable`/`unsupported-flow`; begge vakter asserteres nå der hver av dem FAKTISK bor.
**Defekten fantes fordi parameteren aldri var ØVET:** alle 11 kallsteder brukte defaulten (målt
ved B4s slutt). Load-bearing MÅLT (`tests/test_evidence_key_parameter_loadbearing.py`, 6 armer),
fire mutasjoner alle røde mot HELE suiten + grønn kontroll 1208/5 og golden BYTE-UENDRET: avled
tieren ubetinget (3 røde) · reverter K5-terskelen (1, konsekvens-armen alene) · «fiks» det ved
aldri å tiere (3, inkludert to eksisterende falsifiserings-armer) · løsne `trust_tier` i stedet
(2, inkludert dens egen eksisterende gate).
- **`read_bundle` koster O(DOKUMENTER i én base), aldri O(bytes av den — S2c/MAJOR-3, økt 77):** - **`read_bundle` koster O(DOKUMENTER i én base), aldri O(bytes av den — S2c/MAJOR-3, økt 77):**
verktøyet returnerte `okf.bundle_context`, altså HELE den navigerte basen, og fordi utforskningens verktøyet returnerte `okf.bundle_context`, altså HELE den navigerte basen, og fordi utforskningens
deltakere deler ÉN samtalehistorikk red det ene `function_result`-et med i **hver senere prompt** deltakere deler ÉN samtalehistorikk red det ene `function_result`-et med i **hver senere prompt**