Skip to content

release: v1.14.0 evidence — the parity notebook and the wider measurement - #494

Merged
Polichinel merged 1 commit into
mainfrom
development
Oct 12, 2026
Merged

Polichinel merged 1 commit into
mainfrom
development

Conversation

@Polichinel

Copy link
Copy Markdown
Contributor

Second promotion for v1.14.0, carrying the evidence that #492 claimed but did not contain. Merge as a merge commit — never squash.

The tag is cut after this, so that v1.14.0 points at a commit where the notebook the release notes cite actually exists.

Why there is a second promotion

PR #492's description cited notebooks/acled_cursor_parity.ipynb as part of the evidence. It did not exist — no .ipynb had ever been committed on any branch in this repository. The claim was also made in the comment closing #487 and in a status relayed into an outgoing mail; all three are corrected, the mail before it went.

What this adds

The notebook (#493), committed with outputs. Reads only committed artifacts — no network call — so it still renders after 27 October when the offset half of the comparison becomes impossible to obtain. It recomputes the content digest from the raw recorded envelopes rather than reprinting the reported one, so a reader is not asked to trust the script that produced the report.

A wider measurement, replacing a verification check that was found to be unsound rather than merely skipped. The approved plan's check 9 compared a re-harvest against the pre-migration ledger digest; ACLED restates history continuously, so that comparison cannot separate "pagination broke" from "the source was revised, as it always is" — and a match would have been read as vindication it cannot support. Withdrawn, not deferred (findings.md §5.1). Replaced by widening the instrument already built: both walks in the same session, where restatement cannot differentially affect them.

week (previous headline) quarter (new headline)
Slice 2024-03-01|2024-03-07 2024-01-01|2024-03-31
limit 1000 5000 — production's page_size
Events 7,609 98,636
Requests per walk 8 20
Digest, both walks ae4a6e815168e95f af9fb35c03ac830f
All five oracles pass pass

limit=5000 matters beyond volume: no measurement had run at the page size production uses, and limit is the exact parameter the deleted len(results) < config.page_size terminator compared against.

An honest weakening of the claim. 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. A final page containing exactly limit events is the one configuration where the deleted terminator is unambiguously wrong, and ACLED never produced one. The old code would have terminated correctly on everything measured. Recorded as findings.md §2.0. The case for this change rests on the contract and the mutation drill, not on an observed failure.

#489 fixed. Two falsification assertions required config_deployment.py in views-models, renamed to config_maturity.py upstream. They failed only on a machine with views-models checked out — which CI is not, so CI stayed green while the local suite was red. Full suite is now exit 0 with zero failures.

🤖 Generated with Claude Code

https://claude.ai/code/session_01EfeuULbPTqrx4qtNki5dy9

…a wider measurement (#487) (#493)

* docs: the parity notebook that was asked for and never written, plus 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

* test: follow views-models' config rename instead of asserting the old 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

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Polichinel
Polichinel enabled auto-merge October 12, 2026 10:19
@Polichinel
Polichinel merged commit 2b22a64 into main Oct 12, 2026
12 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