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:
Kjell Tore Guttormsen 2026-07-31 21:39:28 +02:00
commit 30ba68a703
13 changed files with 98 additions and 5 deletions

View file

@ -195,6 +195,15 @@ class TestNavigationBoundary:
# one level above ``bundle/``: a ``..`` escape would succeed, so its absence
# is a boundary proof rather than a missing-file accident.
rendered, _ = self._read_context("nav-golden-escape")
# Positive control: the decoy file REALLY carries both strings, in EXACTLY the
# form the negatives search for. The comment above asserted this in prose; a
# fixture that lost the file (or reworded it) would satisfy both `not in`
# checks without the boundary doing anything.
decoy = (NAV_GOLDENS / "nav-golden-escape" / "SHOULD-NOT-BE-READ.md").read_text(
encoding="utf-8"
)
assert "MUST never be reached" in decoy
assert "Decoy" in decoy
assert "MUST never be reached" not in rendered
assert "Decoy" not in rendered
@ -276,10 +285,17 @@ class TestRendering:
def test_empty_sections_are_dropped(self, tmp_path: Path) -> None:
bundle = _make_bundle(
tmp_path,
"Summary. See [empty](empty.md).",
{"empty.md": "---\ntype: reference\ntitle: Empty\n---\n"},
"Summary. See [empty](empty.md) and [full](full.md).",
{
"empty.md": "---\ntype: reference\ntitle: Empty\n---\n",
"full.md": "---\ntype: reference\ntitle: Full\n---\nBody.",
},
)
context = bundle_context(bundle)
# Positive control: a reference WITH a body renders in EXACTLY the heading form
# the negative searches for — so the absence below is the empty-drop, not a
# renamed heading or an unnavigated file.
assert "## reference: Full" in context
assert "## reference: Empty" not in context
@ -311,8 +327,15 @@ class TestVerdictLayerExclusion:
# actual 24 600 NOK) must be absent from the rendered context — it may
# reach the prompt ONLY via the gated experience fold.
context = bundle_context(BUNDLE)
# Positive control: every leak string IS live in the bundle's verdict file, in
# EXACTLY the form the loop below searches for. Without it "absent from the
# context" would also hold for a bundle that never carried the signal at all.
leaks = ("0.82", "0,82", "24600", "24 600", "realization_rate")
verdict_text = (BUNDLE / "verdict-led-fro.md").read_text(encoding="utf-8")
for leak in leaks:
assert leak in verdict_text
assert "## verdict" not in context
for leak in ("0.82", "0,82", "24600", "24 600", "realization_rate"):
for leak in leaks:
assert leak not in context
# ...while the non-verdict concept layers ARE rendered:
assert "## project:" in context