test(loadbearing): close the vacuous-negative class across the whole suite
Oekt 17 found the class on four named files. This sweep ENUMERATES it: 42 negative substring assertions across 21 test files (STATE's "~34 across 23" was a premise -- measured, it is 42/21). Sixteen of them measured an absence without ever having shown presence; all sixteen now carry a positive control asserting the searched-for string PRESENT in the source artifact, in EXACTLY the form the negative looks for. Files touched: test_costsim, test_loop, test_okf (3 sites), test_preflight, test_run_entrance, test_s10_run_layer, test_sdk_version_guard, test_simulation (2 sites), test_step1_expel, test_step5_refine, test_step7_async_loop, test_step8_promotion, test_valuereport. VALUE-PROOF (green-without / red-with, per the oekt-17 rule that a detach proof is not a value proof). Seven source/fixture mutations, each making the negative vacuous: M1 verdict fixture loses the realization signal VALUE-PROVEN M2 decoy fixture loses its text VALUE-PROVEN M3 renderer stops emitting typed section headings VALUE-PROVEN M4 promotion stops writing the marker VALUE-PROVEN (pass 2) M5 fold stops rendering the realization surface VALUE-PROVEN M6 report stops labelling the cost section VALUE-PROVEN M7 preflight stops importing the SDK VALUE-PROVEN M4 needed pass 2: a PRECEDING assertion caught the same mutation, hiding the new control behind it -- the oekt-17 lesson reproduced. The remaining nine controls are vacuity guards (non-emptiness / form-presence) whose mutation would have to break the source artificially; they are stated as guards, not claimed as value-proven. MEASURED FINDING (test_loop): the FIRST-RUN-MARKER negative cannot be given a positive control at all. Within a run only the CHECKER's critique is fed back -- the proposer's own prior reasoning crosses no prompt boundary, not even within a run. So that negative holds trivially. Left in place with the limitation stated in the test rather than dressed up as a controlled seam; the CRITIQUE negative beside it IS controlled and is the real seam. Mutations were in-place on src/ and shared/ with original bytes restored and sha-verified; git status clean before and after. Suite 688 -> 688 (assertions added inside existing tests, no new test cases). ruff + mypy --strict green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Vc5PmZGjwuJypdhzKnJa5
This commit is contained in:
parent
123ecc3113
commit
30ba68a703
13 changed files with 98 additions and 5 deletions
|
|
@ -146,6 +146,12 @@ class TestMarkerNeverCrossesWithoutPromotion:
|
|||
assert result.promoted_path is None
|
||||
assert result.promotion_refusal is not None
|
||||
assert "rejected" in result.promotion_refusal
|
||||
# Positive controls: the docstring's claim that the marker IS authored into the
|
||||
# artifact the run reads, asserted rather than stated — and prompts really were
|
||||
# issued, since `all()` over an empty list is vacuously True. Without both, this
|
||||
# control would pass for a marker that was never written anywhere.
|
||||
assert marker in artifact.read_text(encoding="utf-8")
|
||||
assert client_b.prompts("proposer")
|
||||
assert marker not in result.run_b.composed.context
|
||||
assert all(marker not in prompt for prompt in client_b.prompts("proposer"))
|
||||
|
||||
|
|
@ -175,8 +181,16 @@ class TestGatedFoldIsTheOnlyChannel:
|
|||
# ...but NO verdict-typed concept is rendered into the read-context —
|
||||
# a `## verdict` section in either run's context means the seed's (or
|
||||
# a promoted file's) body leaked around the gated fold (§3 Step 1).
|
||||
# Positive control: `## `-typed sections ARE rendered into both contexts, so the
|
||||
# two negatives measure a GATED type and not a context without sections at all.
|
||||
assert "## project:" in result.run_a.composed.context
|
||||
assert "## project:" in result.run_b.composed.context
|
||||
assert "## verdict" not in result.run_a.composed.context
|
||||
assert "## verdict" not in result.run_b.composed.context
|
||||
# Belt and braces: the promoted marker itself never surfaces via
|
||||
# rendering (promoted files are frontmatter-only by design, §6).
|
||||
# Positive control: the marker IS live on disk in the promoted file, so the
|
||||
# absence below measures the RENDERING boundary, not a marker never written.
|
||||
assert result.promoted_path is not None
|
||||
assert MARKER in result.promoted_path.read_text(encoding="utf-8")
|
||||
assert MARKER not in bundle_context(bundle)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue