Skip to content

the generator can now reach the characters that hid four defects - #86

Open
fathomlab wants to merge 1 commit into
mainfrom
leg/aperture-widening
Open

the generator can now reach the characters that hid four defects#86
fathomlab wants to merge 1 commit into
mainfrom
leg/aperture-widening

Conversation

@fathomlab

Copy link
Copy Markdown
Contributor

The agreement number covered a 98-character alphabet

Yesterday the differential harness's headline was paired with its aperture for the first time: 100000 agree, 0 disagree — over an alphabet of 98 code points, seven of them non-ASCII.

Every character-level defect that day's audit found lay outside it:

defect code point reachable then
a dash that dropped a minus sign, -0.42 HELD against 0.42 U+2010 +25 no
the override showing a reader 55.0 where 0.55 was checked U+202E no
the path segment that split the two verifiers on a document verdict U+0085 no
the Unicode-version digit skew U+10D40 no

The repair

APERTURE_ALPHABET — 68 code points across dashes, format and bidi controls, unusual whitespace, combining marks and non-ASCII digits — spliced into span inner text (p=0.22) and receipt targets (p=0.12).

generator alphabet: 98 -> 142 code points   (non-ASCII 7 -> 69)

  U+2010  reachable: True
  U+202E  reachable: True
  U+0085  reachable: True
  U+10D40 reachable: False      <- deliberately

Why one stays out of reach

U+10D40 is a Garay digit — Nd in Unicode 16.0, unassigned in 15.0.0. CPython here is on 15.0.0 and V8's ICU on 16.0, so no edit to either implementation can make them agree about it. A generator emitting it would report a disagreement that is real, unfixable, and not about the verifiers — turning a defect detector into a runtime detector, red on this machine and green on one whose runtimes match.

The aperture widens only where the two runtimes already agree. All 68 were checked against class_census.py, and a guard re-checks them rather than trusting the comment.

The result from the widened instrument

seed 20260905, 100000 cases
compared 100000 | agree 100000 | disagree 0 | one-sided errors 0 | reasons 39   (was 38)

No disagreement. The six repairs of 2026-09-06 hold across an alphabet 44 code points wider than the one that missed them.

A negative result, worth what one is worth: the space where four defects hid has now been searched, by an instrument that can demonstrably see into it.

The instrument lied first, and the lie was mine

The first probe reported 1577 disagreements in 2000 cases.

It was false. Case 0 was <sworn r="" k="quote">held \PASS`— plain ASCII, no injected character, which is not a document two verifiers should disagree about. The cause was the probe's own hand-rolled manifest, using abytes_b64key the format has no such field for. Re-running the identical documents withmanifest=None` produced exact agreement and located the fault in one step.

Repaired by deleting the hand-rolled manifest and calling the harness's own _manifest, removing the probe as a variable so a disagreement could only be about the document alphabet — the one thing being widened.

It is in the RESULT, not just the commit message, because a spectacular finding that survives ten minutes of checking is the failure mode this corpus exists to make expensive, and this one was the author's.

Pinned, and watched to fail

tests/test_differential_aperture.py asserts the three defect-carrying code points are reachable, that U+10D40 is not and says why, that the alphabet stays materially wider than 98/7, and that every APERTURE_ALPHABET member is census-clean.

With the injection disabled: all three reach-guards and the width guard go red; both safety guards stay green.

Checks

  • Conformance untouched. differential.py is not among gen_vectors.py's SOURCES, so no vector, blob or digest moves. CHECK OK.
  • JS bar 1689 ran / 1689 passed / 0 failed.
  • Full suite 4581 passed, 13 skipped, 4 xfailed.
  • The previous differential run stands as history: it describes the generator it was run with, and that generator is not this one.

What this does not claim

That the two implementations agree. That they agree on 142 code points now instead of 98 — and the number still travels with its alphabet. Beyond it nothing has been searched, and the region the runtimes disagree about is excluded by construction rather than by evidence.

🤖 Generated with Claude Code

Yesterday's measurement paired the differential harness's agreement number
with its aperture for the first time: 100000 agree, 0 disagree -- over an
alphabet of 98 code points, SEVEN of them non-ASCII. Every
character-level defect that day's audit found lay outside it: the dashes
that dropped a minus sign, U+202E which shows a reader 55.0 where 0.55 was
checked, U+0085 which split the two verifiers on a document verdict.

APERTURE_ALPHABET is 68 code points -- dashes, format and bidi controls,
unusual whitespace, combining marks, non-ASCII digits -- spliced into span
inner text (p=0.22) and receipt targets (p=0.12).

  generator alphabet: 98 -> 142 code points   (non-ASCII 7 -> 69)
    U+2010  reachable   U+202E reachable   U+0085 reachable
    U+10D40 NOT reachable, deliberately

ONE STAYS OUT OF REACH ON PURPOSE. U+10D40 is Nd in Unicode 16.0 and
unassigned in 15.0.0; CPython here is on 15.0.0 and V8's ICU on 16.0, so
no edit to either implementation can make them agree about it. A generator
emitting it would report a real, unfixable disagreement that is not about
the verifiers -- a defect detector turned into a runtime detector, red
here and green on a machine whose runtimes match. The aperture widens only
where the two runtimes already agree, and a guard re-checks all 68 against
class_census.py rather than trusting the comment.

THE RESULT FROM THE WIDENED INSTRUMENT: seed 20260905, 100000 cases,
100000 agree, 0 disagree, 39 reason codes reached (was 38). The six
repairs of 2026-09-06 hold across an alphabet 44 code points wider than
the one that missed them. A negative result, and worth what one is worth:
the space where four defects hid has now been searched by an instrument
that can demonstrably see into it.

THE INSTRUMENT LIED FIRST AND THE LIE WAS MINE. The first probe reported
1577 disagreements in 2000 cases. False. Case 0 was plain ASCII with no
injected character, which is not a document two verifiers should disagree
about; the cause was the probe's own hand-rolled manifest using a
bytes_b64 key the format has no such field for. Re-running the identical
documents with manifest=None gave exact agreement and located it in one
step. Repaired by deleting the hand-rolled manifest and calling the
harness's own, removing the probe as a variable. Recorded in the RESULT
because a spectacular finding that survives ten minutes of checking is the
failure mode this corpus exists to make expensive.

Watched to fail: with the injection disabled, all three reach-guards and
the width guard go red while the two safety guards stay green.

Conformance untouched -- differential.py is not among gen_vectors.py's
SOURCES, so no vector, blob or digest moves. CHECK OK; JS bar 1689/1689;
full suite 4581 passed. The previous differential run stands as history:
it describes the generator it was run with, and that is not this one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.

2 participants