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:
parent
c8f0c8f7c4
commit
e513bc97ad
4 changed files with 139 additions and 3 deletions
|
|
@ -1740,7 +1740,20 @@ async def run_project(
|
|||
"validated"
|
||||
if isinstance(approach_outcome, ValidatedProposal)
|
||||
else "rejected"
|
||||
)
|
||||
),
|
||||
# P20: ``code_forms`` must follow ITS OWN approach too, for
|
||||
# ``validator_decision``'s reason exactly. MEASURED on round 3 and
|
||||
# round 4: every per-approach artefact carried the SELECTED proposal's
|
||||
# codes, so ``code_forms`` described a candidate the artefact is not
|
||||
# about — and the judge, which reads this field first, reported an
|
||||
# empty ``prose_codes`` for every approach but one. The field's own
|
||||
# docstring 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.
|
||||
"code_forms": classify_codes(
|
||||
[i.code for i in approach_outcome.proposal.affected_items],
|
||||
delivered,
|
||||
),
|
||||
}
|
||||
),
|
||||
checker_verdict=checker_decision,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue