feat(row6): a proposal whose approach declared no requirement is unsupported
Stress round 6 validated three falsification arms, and every validated approach rested only on run-level declarations nobody can attribute to one approach. declare_requirement now takes a required approach_id (a mandate id or own-proposal; an unknown id is refused naming the valid ones), and a ValidatedProposal whose approach has neither a mandate requirement nor a declaration under its own id becomes validator.Unsupported - a Rejection subclass carrying the validator's own ruling, reported as `unsupported` in coverage, the outcome artefact, the settlement and the judge, and never counted or summed. The rule is active whenever the debate held the declaration tool, the micro base included; the road and pre-pass paths are untouched. Declaration quality is not judged, so the rule can be satisfied by declaring any document the run read. The v1 gate's row 6 probes pass; its artefact half reads IKKE MÅLT because stress round 6 predates approach-addressed declarations, and IKKE MÅLT is never green - it fails the exit code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
9847e014e7
commit
938a1ca30e
23 changed files with 718 additions and 115 deletions
|
|
@ -61,7 +61,9 @@ def _declare(
|
|||
for name in [f.name for f in okf.navigate_bundle(str(_TUNNEL)).context_files][:3]:
|
||||
opened.append(ToolCall(name="read_file", bundle_id=_BASE_ID, path=name))
|
||||
opened.append(ToolCall(name="read_file", bundle_id=_BASE_ID, path=_DOC))
|
||||
answer = tools["declare_requirement"].func(bundle_id=_BASE_ID, path=_DOC, ref=ref)
|
||||
answer = tools["declare_requirement"].func(
|
||||
approach_id="a1", bundle_id=_BASE_ID, path=_DOC, ref=ref
|
||||
)
|
||||
return answer, declared
|
||||
|
||||
|
||||
|
|
@ -115,7 +117,8 @@ def test_the_comparison_never_reads_the_callers_own_ref() -> None:
|
|||
|
||||
def test_without_directions_the_reply_is_the_one_p20_shipped() -> None:
|
||||
"""The exploration mints its own directions, so at declaration time it HAS none — and every
|
||||
call site that passes no labels must be byte-identical to before. Absent keys, not empty ones:
|
||||
call site that passes no labels must carry no comparison keys (row 6 added ``approach_id`` to
|
||||
every reply, the address the declaration was filed under). Absent keys, not empty ones:
|
||||
"there was nothing to compare against" and "we compared and found nothing" are different
|
||||
facts, and only one of them is true here."""
|
||||
answer, _ = _declare(())
|
||||
|
|
@ -124,6 +127,7 @@ def test_without_directions_the_reply_is_the_one_p20_shipped() -> None:
|
|||
"bundle_id",
|
||||
"path",
|
||||
"ref",
|
||||
"approach_id",
|
||||
"title",
|
||||
"req_number",
|
||||
"binds",
|
||||
|
|
@ -180,7 +184,12 @@ async def test_a_commissioned_run_reaches_the_tool_with_its_own_directions() ->
|
|||
{"call": "read_file", "args": {"bundle_id": _BASE_ID, "path": _DOC}},
|
||||
{
|
||||
"call": "declare_requirement",
|
||||
"args": {"bundle_id": _BASE_ID, "path": _DOC, "ref": "Krav 1.1-1"},
|
||||
"args": {
|
||||
"bundle_id": _BASE_ID,
|
||||
"path": _DOC,
|
||||
"ref": "Krav 1.1-1",
|
||||
"approach_id": "a1",
|
||||
},
|
||||
},
|
||||
_VALID_REPLY,
|
||||
_VALID_REPLY,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue