Repository navigation
docs: the parity notebook that was asked for and never written, plus a wider measurement (#487) - #493
Merged
Merged
Conversation
…a wider measurement (#487) Two gaps, found at the release gate when the operator asked whether the full ritual had actually run. THE NOTEBOOK NEVER EXISTED. It was in the approved plan and was the most explicit thing requested -- "a human can look at the Jupyter notebook, go through it and say, okay, at this point in time, we could prove parity" -- and I cited it as done in the PR description, in the comment closing #487, in product_development_plan12.md and in a status relayed for an outgoing mail. No .ipynb had ever existed in any commit on any branch. Written now, committed with outputs, reading only committed artifacts so it still renders after 27 October when half the comparison becomes impossible to run. It recomputes the content digest from the raw recorded envelopes rather than reprinting the reported one, so the reader is not asked to trust the script that produced the report. CHECK 9 WAS UNSOUND, NOT MERELY SKIPPED. The plan's verification table called it "the one that would actually catch a botched migration": re-harvest a year and compare against the pre-migration ledger digest. The only such entry is 2025, harvested 2026-05-07. ACLED restates history continuously, so a re-harvest a year later would differ for reasons unrelated to pagination -- and a match would have been read as vindication it could not support. The flaw is in the oracle, so the check is withdrawn rather than deferred (findings.md 5.1). Its replacement is the instrument already built, widened: both walks in the same session over a full quarter, at limit=5000 -- production's actual page_size, which no previous measurement had used, and the exact parameter the deleted len(results) < page_size break compared against. 98,636 events, 20 requests per walk, all five oracles, digest af9fb35c03ac830f, neither walk capped. 13x the headline run. AND ONE THING THE NOTEBOOK ITSELF SURFACED. Printing the page structure made visible that the final page was short in all three slices -- 3,636 of 5,000, 609 of 1,000, 34 of 50. So a full final page, the one configuration where the deleted terminator is unambiguously wrong, never occurred live. The old code would have terminated correctly on everything measured. Recorded as findings 2.0, alongside the negative H4 result it mirrors: the case for this change rests on the contract and the mutation drill, not on an observed failure. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EfeuULbPTqrx4qtNki5dy9
… name (#489) Two assertions in the shining_codex falsification audit required config_deployment.py in views-models/models/shining_codex/configs/. That file was renamed to config_maturity.py upstream, so both failed locally while CI stayed green -- CI has no views-models checkout, so the class skips there entirely. A test that only fails on the one machine that can actually evaluate it is worse than no test. What F1 asserts is that the config ModelPathManager demands at init is present, not what it is called, so the assertion follows the file. The failure message now names the rename and asks the next reader to check whether it was renamed again rather than deleted, which is the distinction that matters and the one that cost time this time. Full suite is exit 0 with zero failures after this. Closes #489 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EfeuULbPTqrx4qtNki5dy9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Found at the release gate, when the operator asked whether the full ritual had actually run. It had — on the code. Two things had not.
1. The notebook never existed
It was in the approved plan, and it was the most explicit thing requested:
I cited it as delivered in four places — PR #492's description, the comment closing #487,
product_development_plan12.md, and a status relayed into an outgoing mail — and no.ipynbhad ever existed in any commit on any branch. The mail was corrected before it went out.notebooks/acled_cursor_parity.ipynb, committed with outputs:sorted((event_id_cnty, fatalities)) → json(sort_keys) → SHA-256[:16], re-derived in the notebook. The reader is not asked to trust the script that produced the report.test_acled_cursor_parity_fixture.py.2. Verification check 9 was unsound, not merely skipped
The approved plan annotated it "the one that would actually catch a botched migration":
The only such entry is
version: "2025_2025", harvested 2026-05-07, digest21f9337c4f795b84. ACLED restates history continuously. A re-harvest a year later would differ for reasons that have nothing to do with pagination, and the comparison could not separate "pagination broke" from "the source was revised, as it always is". Worse, a match would have been read as vindication it cannot support. The flaw is in the oracle, so the check is withdrawn, not deferred (findings.md§5.1).Its replacement is the instrument already built, widened — both walks in the same session, where restatement cannot differentially affect them:
2024-03-01|2024-03-072024-01-01|2024-03-31limitpage_sizeae4a6e815168e95faf9fb35c03ac830flimit=5000matters beyond volume: no measurement had ever run at the page size production uses, andlimitis the exact parameter the deletedlen(results) < config.page_sizeterminator compared against. Logged as a post-hoc deviation inpre_analysis_plan.md§7 — it was not a registered prediction and is not reported as one.3. What the notebook itself surfaced
Printing the page structure made visible that the final page was short in all three slices — 3,636 of 5,000, 609 of 1,000, 34 of 50. So a final page containing exactly
limitevents — the one configuration where the deleted terminator is unambiguously wrong — never occurred live. The old code would have terminated correctly on everything measured.Recorded as
findings.md§2.0, to be read with the negative H4 result it mirrors. The case for this change rests on the contract (next_cursoris the server's declaration; page length is an inference) and on the mutation drill, not on an observed failure. That is a weaker claim than "we proved the old way was broken", and it is the true one.Also here
config_deployment.pyin views-models; it was renamed toconfig_maturity.pyupstream. They failed locally while CI stayed green, because CI has no views-models checkout and skips the class entirely — a test that fails only on the one machine able to evaluate it is worse than no test.Full suite is exit 0 with zero failures.
🤖 Generated with Claude Code
https://claude.ai/code/session_01EfeuULbPTqrx4qtNki5dy9