Skip to content

test(library): pair every no-fire assertion with a positive control - #14

Merged
AetherAI3 merged 1 commit into
mainfrom
test/vacuous-sweep
Aug 14, 2026
Merged

test(library): pair every no-fire assertion with a positive control#14
AetherAI3 merged 1 commit into
mainfrom
test/vacuous-sweep

Conversation

@AetherAI3

Copy link
Copy Markdown
Owner

Part of the vacuous-test sweep across the four repos. Tests only — no rule, IR, or runtime change.

The defect class

A test that only asserts a rule stayed silent cannot distinguish:

  • the rule declined to fire (what we meant to prove), from
  • the rule can never fire at all (a broken rule, or a frame whose signals don't match)

Both are green. This is the same shape as the vacuous prefetch test fixed in Unlimited-Context-LLM yesterday, which asserted a wall-clock bound on a branch that never executed — green for the wrong reason the entire time.

The repo already had the right pattern

tests/test_examples.py pairs every quiet frame with a firing frame on the same graph, so the graph is proven live before it is proven silent. tests/test_library.py did not, in four places:

Test Origin
consecutive_loss_circuit added in #13, an hour earlier
correlation_cluster_guard added in #13, an hour earlier
atr_volatility_halt pre-existing
cpi_impulse_pullback_short pre-existing

The CPI one is the most interesting: the short arm was only ever asserted silent. A short rule that could never fire would have passed unchanged, and the mutual-exclusion claim rested entirely on the long arm. It now gets a mirror hot print and asserts SELL, SELL while the long arm goes quiet.

Result

Each now runs a crossing frame through the same graph and asserts exact intents and timestamps. All four fired — so none of the rules was actually broken. Nothing in the suite could have told us that.

Two of the four were mine, written an hour earlier in the same session that identified the pattern. Worth recording rather than quietly fixing.

401 passed, 2 skipped — unchanged, because these are assertions added to existing tests rather than new test functions.

Sweep status across the other repos

  • Unlimited-Context-LLM — clean. test_encode_and_recover guards with assert hits before asserting content; test_engine_beats_baseline_on_reachability is a proper ON/OFF head-to-head; the witness decay test asserts score("doctrine") == 0.9 before checking chatter faded. The one vacuous test there was fixed yesterday.
  • aether-agent — clean. The safe-opener refusals assert explicit status and reason before checking nothing spawned, and one carries a positive control (absolute.status === "spawned") in the same body.
  • AntiFlock — read-only pass only; no Go toolchain available here to run the suite. The dominant pattern pairs an error check with the count, and empty-assertions usually also pin a specific reason code (e.g. AF-COLLECTOR-FLOW-UNSUPPORTED). No obvious cases found, but this was not verified by execution.

A test that only asserts a rule stayed silent cannot tell "the rule declined to
fire" from "the rule can never fire". Both are green. This is the same defect
class as the vacuous prefetch test fixed in Unlimited-Context-LLM yesterday,
which asserted a wall-clock bound on a branch that never executed.

tests/test_examples.py already uses the right pattern — every quiet frame is
paired with a firing frame on the SAME graph, so the graph is proven live before
it is proven silent. tests/test_library.py did not, in four places:

  - consecutive_loss_circuit    (added in the previous commit)
  - correlation_cluster_guard   (added in the previous commit)
  - atr_volatility_halt         (pre-existing)
  - cpi_impulse_pullback_short  (pre-existing; the short arm was only ever
                                 asserted silent, so the mutual-exclusion claim
                                 rested entirely on the long arm)

Each now runs a crossing frame through the same graph and asserts the exact
intents and timestamps. All four fired, so none of the rules was broken — but
nothing in the suite could have told us that.

Two of the four were mine, written an hour earlier in the same session that
identified the pattern.

401 passed, 2 skipped — unchanged, because these are assertions added to
existing tests rather than new test functions.
@AetherAI3
AetherAI3 merged commit 811d6c7 into main Aug 14, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant