fix(p20): code_forms follows ITS OWN approach, and the announcement has a witness [skip-docs]

Two defects the mutation battery and the paid round found, both measured before
being touched.

(1) code_forms described the WRONG candidate. Every per-approach artefact copied
the run's stamp and overrode only validator_decision, so an artefact about
approach 2 reported approach 1's codes. Measured in BOTH round 3 and round 4 --
and stress.py, which reads this field before re-deriving, then produced an EMPTY
prose_codes for every approach but the first, which is what round 3's table was
built on. The field's own comment already says it is stamped "off the proposal
being stamped"; run-level was the drift, not the intent. Model, citations and
token usage stay the run's, because they are the run's.

(2) The C2 announcement seam had no witness. Mutation C-iii reverted the call
site to `args.project_id or "the portfolio"` and the WHOLE suite stayed green
(1808/5): all three arms drove announced_subject directly. The missing arm drives
main() on a free dry run and reads the announcement off STDOUT, where an operator
reads it, and is red against exactly that mutation.

Sixteen mutations, ALL red against the whole suite. Green control 1809/5 (from
1781, +28, 0 removed), golden demo-transcript.stdout BYTE-UNCHANGED
(shasum -a 1 of the CONTENT = ea8c534773acdbe41ae68f2c55724d69aaf8be4f).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-15 08:28:44 +02:00
commit e513bc97ad
4 changed files with 139 additions and 3 deletions

View file

@ -2805,7 +2805,12 @@ Python ≥3.10. MAF (`agent-framework-core` 1.16.0, `-orchestrations` 1.1.1 —
ville endret `total_matches` for hvert navigatørkall. `code_forms` får en TREDJE verdi,
`requirement`, for en kode basen FAKTISK erklærer (ordrens kjent-negative (c): alle
`must_cite`-referanser klassifiseres slik) — rapport, aldri gaten, som fyrer på komplementet.
Load-bearing MÅLT (`tests/test_requirement_number_gate_loadbearing.py`, 11 armer).
Load-bearing MÅLT (`tests/test_requirement_number_gate_loadbearing.py`, 12 armer), ni mutasjoner
alle røde mot HELE suiten. **FUNN UNDERVEIS, FIKSET:** `code_forms` bar den SELEKTERTE kandidatens
koder i HVERT per-approach-artefakt (målt i BÅDE runde 3 og runde 4) — `stamp.model_copy` overstyrte
kun `validator_decision`, mens feltets eget kommentar sier det er stemplet «off the proposal being
stamped». Følgen var at dommeren, som leser feltet FØRST, rapporterte TOM `prose_codes` for hver
approach unntatt den første.
- **Erklæringen svarer med DOKUMENTETS egne ord, og kommisjonens kriterier når leseren som kan
handle på dem (P20 DEL A, 15.09):** P19 DEL A gjorde at en retning MÅ navngi kravet som binder
den, og rungen virker — MÅLT ga runde 3 ni erklæringer over fem betalte kjøringer og P17b fire
@ -2825,7 +2830,9 @@ Python ≥3.10. MAF (`agent-framework-core` 1.16.0, `-orchestrations` 1.1.1 —
hva som holder hver prompt i hver ukommisjonert kjøring byte-identisk, demoens inkludert.
**A2s plassering er MÅLT:** på utforskningsstien finnes ingenting å bære — `main()` sender
`explore()` ingen `success_criteria` i det hele tatt, så objektivet ER prompten og når oppgaven
alt. Load-bearing MÅLT (`tests/test_right_requirement_loadbearing.py`, 8 armer).
alt. Load-bearing MÅLT (`tests/test_right_requirement_loadbearing.py`, 8 armer), fire mutasjoner røde.
**ORDRENS SPÅDDE SIGNATUR BLE FALSIFISERT:** A-iii skulle gjøre goldenen rød, men demoen kjører uten
mandat, så `criteria` er tom uansett og bare rendererens egen arm faller.
- **En parse-feil brenner ikke lenger rundeboka i stillhet, og annonseringen navngir hva den
handler om (P20 DEL C, 15.09):** `_fetch_parsed` prøvde på nytt med den BYTE-IDENTISKE prompten.
MÅLT (P19 F4): `kontrakt-sorasen-04` etterlot `{run_id}-parse-failures.json` med **elleve** rader,