feat(p22): declare_requirement answers with a COMPARISON, not a confirmation
P19 DEL A made a direction name the requirement that binds it; P20/A1 made the reply carry the DOCUMENT's own title and number instead of echoing the caller's arguments. Re-measured at the head of this session against the six round-5 debate traces: requirement_hit is 0 of 20 approach rows and 0 of 12 declarations -- the third round in a row at zero. P21/C1 made the runs LOOK first and it worked on its own terms (distinct documents before a declaration went 1,1,1,2,5,13 -> 3,3,5,7,11,12) and the hit did not move. The runs were made to read MORE, not righter. The reply now compares: it names the directions the run was commissioned to pursue and says which of their words appear in the declared document's own title and number, or that none do. A REPORT, never a gate -- the declaration is recorded either way, because a requirement can bind a measure without sharing a word with the name someone gave it, which is exactly how the alternative rule the C1 measurement rejected failed one rung over. The words compared are the DOCUMENT's, never `ref`: a comparison against the caller's own argument can only ever agree. Matching is generous in both directions, and that failure direction is chosen -- a false "no overlap" pushes a model away from a declaration that was right, a false "overlap" merely keeps the report quiet. MEASURED BEFORE IT WAS BUILT, offline against the six traces as the order required (no paid calls in DEL B): the rule speaks on 10 of 12 declarations and stays quiet on 2. A rule that spoke on 12 of 12, or on 0 of 12, could not tell the two classes apart. `labels` defaults to empty, so every call site written before today is byte-identical and the three keys are ABSENT rather than empty -- "there was nothing to compare against" and "we compared and found nothing" are different facts. RUN-level, as the declaration itself is (P19 A4). Also re-measured: the order cited requirement_hit as "0 of 12". The field is per APPROACH (0 of 20); 12 is the number of DECLARATIONS (7 distinct, 0 hits). Both zero, so the conclusion stands, but they are two populations. Load-bearing MEASURED (tests/test_requirement_comparison_loadbearing.py, 8 arms), eight mutations all red against the WHOLE suite + green control 1881/5 (from 1873/5, superset, 0 removed) and golden demo-transcript.stdout BYTE-UNCHANGED (shasum -a 1 of the CONTENT = ea8c534773acdbe41ae68f2c55724d69aaf8be4f): B1 detach the run.py wiring (1 red, that arm alone) - B2 always report an overlap (5) - B3 never report one (2) - B4 compare against the caller's ref (1, that arm alone) - B5 make it a gate (5) - B6 emit the keys with no directions (2, one an OLDER independent witness) - B7 exact token equality instead of substring (1) - B8 drop the minimum word length (3). Honesty limits, stated: no LIVE model has read the comparison yet (DEL D is the measurement); the report cannot say a requirement IS right, only that it shares no word with the direction; and finding 4 (`named` 1/20) is this same matter from the other side, so DEL D measures it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
0a81de2d76
commit
9072359606
5 changed files with 360 additions and 1 deletions
|
|
@ -1294,6 +1294,12 @@ async def run_project(
|
|||
dimension=dimension_id,
|
||||
opened=debate_tool_calls,
|
||||
requirements=debate_requirements,
|
||||
# P22 DEL B: the commission's own direction names, so the declaration rung can
|
||||
# answer with a COMPARISON instead of a confirmation. RUN-level, exactly as
|
||||
# the declaration is (P19 A4): the debate declares once per run, so the reply
|
||||
# names every direction the run carries rather than picking one it cannot
|
||||
# attribute. Without a mandate this is empty and the reply is unchanged.
|
||||
labels=[a.label for a in mandate.approaches] if mandate else (),
|
||||
)
|
||||
)
|
||||
# What the navigation could NOT reach, taken from the run's ONE walk. The road path below
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue