The tests

16 failing, 1,346 passing, 1,377 skipped — and what each of those numbers actually means.

Home · The measurement · The engine · Provenance · Tests

The suite is red, and none of it is a code defect.

16 failing, 1,346 passing, 1,377 skipped. Every failure matches a named cause, and the matching is done against the error text rather than a hand-kept list. Every failure below needs a file that was destroyed in a container reset on 2026-09-07 and has not been recovered — except one, which fails on purpose.
The suite, to scale — 2,739 tests
1,346 passing16 failing1,377 skipped

Why it is red

The reset destroyed the publisher text layer, the runner, the safety configuration and every bar snapshot the forward claims were priced against. None of that was recoverable from this side. What follows is each failure and the thing it is waiting for.

Fails on purpose — 1

One loud failure that names the missing corpus, instead of 1,377 silent skips. It goes green on its own when the text layer is restored.

testwhat it says
test_the_corpus_is_actually_missing
tests/test_corpus_present.py
corpus/ IS MISSING. This is not a code defect and not a flaky test.

Needs autonomy.yaml — 7

The safety configuration that governs the autonomy ladder. Destroyed in the 2026-09-07 container reset. It is deliberately NOT reconstructed: writing a plausible one would be inventing a safety config.

testwhat it says
test_autonomy_declares_the_gate_as_implemented_and_well_formed
tests/test_cluster_posterior.py
KeyError: 'gates'
test_autonomy_thresholds_are_the_ones_the_code_reads
tests/test_cluster_posterior.py
KeyError: 'gates'
test_the_registered_check_runs_and_returns_a_reason
tests/test_cluster_posterior.py
KeyError: 'gates'
test_paper_is_still_blocked_and_no_run_promotes_anything
tests/test_cluster_posterior.py
AssertionError: a registered check that has not been run is never a pass
test_the_real_gate_declarations_are_well_formed
tests/test_protocol.py
AssertionError: autonomy.yaml: no gate declarations could be read: /home/claude/oppollo/autonomy.yaml does not exist, so no gate is declared and none can be evaluated. Every rung is blocked: an unreadable ladder is not a
test_the_gate_that_used_to_be_unfailable_now_has_code
tests/test_protocol.py
KeyError: 'gates'
test_paper_is_blocked_by_the_cluster_posterior
tests/test_protocol.py
AssertionError: assert 'cluster_posterior_min' in {'autonomy_config_readable'}

Needs run.py — 6

The runner. Lost in the same reset, and present on the collaborating machine.

testwhat it says
test_run_py_exposes_the_mode
tests/test_cluster_posterior.py
assert 'clusters' in ''
test_no_production_path_prices_a_rule_on_its_claim_count[run.py]
tests/test_effective_sample.py
FileNotFoundError: [Errno 2] No such file or directory: '/home/claude/oppollo/run.py'
test_no_evaluation_path_reads_bars_without_the_seal
tests/test_protocol.py
FileNotFoundError: [Errno 2] No such file or directory: '/home/claude/oppollo/run.py'
test_no_accuracy_is_reported_without_its_family
tests/test_protocol.py
ModuleNotFoundError: No module named 'run'
test_weekly_is_built_and_says_what_is_still_missing
tests/test_protocol.py
ModuleNotFoundError: No module named 'run'
test_weekly_exits_zero_and_never_promotes
tests/test_protocol.py
AssertionError: /usr/bin/python3: can't open file '/home/claude/oppollo/run.py': [Errno 2] No such file or directory

Needs a destroyed bar snapshot — 1

A record naming a market-data snapshot that no longer exists. The bars were destroyed in the reset; the record was not re-stamped, because that would make it lie about its own provenance.

testwhat it says
test_the_wheat_snapshot_the_q471_record_names_is_actually_there
tests/test_backlog_med_tail_edges.py
FileNotFoundError: [Errno 2] No such file or directory: '/home/claude/oppollo/data/bars_research/20260811T114646Z/ZW_F.json'

Needs the Nirenstein notes — 1

Lecture notes that are not in this checkout and not on the collaborating host either.

testwhat it says
test_a_declared_ocr_anchor_must_actually_be_on_the_page
tests/test_doctrine_graph.py
AssertionError: nirenstein_notes#page_033

The 1,377 skips, and why they are not passes

Tests that assert an exact string from the destroyed text layer cannot run. They could have been made to fail, or made to pass, and both would have been dishonest — so they skip with the reason attached, and a single test fails on purpose to name the cause.

A silent skip is the failure mode this project has recorded seventeen times: a read that returned nothing and looked like output. 1,377 quiet skips would say nothing at all; one loud failure says what is missing.

The skip is decided at the moment a test actually touches the missing layer, not by grepping the test's own source. That distinction was learned the hard way: the first version of the guard read each test file looking for the corpus path, and missed 49 tests whose dependency arrived through an import. Widening the pattern would have been the same defect with a longer list, so the readers now raise at the point of access and the harness converts that into a skip.

Two guards that did nothing

Published here because a test suite presented only as a pass count is the green-check-on-the-wrong-object failure this project keeps finding, and these are the two clearest instances of it happening inside the tests.

guardwhat was wrong
the corpus skip filterCalled a method with the wrong signature; every call raised TypeError and the guard's own bare except swallowed all of them. It reported a confident count while doing nothing.
a verbatim-quote testCarried its own pytest.skip for the missing-corpus case — placed after the call that raises first. The guard was unreachable.

Both are fixed. They are on this page because the lesson is not that they existed: it is that a guard nobody has watched fail is not yet known to work. Every guard added since is proved by constructing the failing condition and watching it refuse.

Reproduce

The whole suite, from a restored checkout:

pip install -r requirements.txt --break-system-packages python3 -m pytest tests/ -q

Last run 2026-09-11 01:26:15 UTC, 414 seconds, 2,739 tests collected.