Skip to content

v0.83 JESSDIVERGE5 (#1436): the gravity triple read out of the object — the ask was pointing at the wrong three words - #1502

Closed
avrabe wants to merge 1 commit into
mainfrom
lane/v0.83-jessdiverge5
Closed

avrabe wants to merge 1 commit into
mainfrom
lane/v0.83-jessdiverge5

Conversation

@avrabe

@avrabe avrabe commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

The ask was pointing at the wrong three words

This artifact planned to obtain the runtime values of [sp,#152], [sp,#208] and [sp,#232]. Disassembling ekf@0.10.0#estimate shows all three are the multiplicand of a × 9.81, in three copies of one shape:

vldr     s8, [sp, #<accum>]
vldr     s9, [sp, #<slot>]
movw     ip, #62915        @ 0xf5c3
movt     ip, #16668        @ 0x411c    <- +9.81
vmov     s10, ip
vmul.f32 s11, s9, s10                  ; slot * g
vadd.f32 s9,  s8, s11                  ; accumulator + (slot * g)
str.w    ...                           ; -> linear memory

So each named slot is the gravity direction, and the other operand is an accumulator. The derived pairs, with the hand-read block at 0x24a4 serving as the extractor's positive control:

at accumulator slot (× 9.81) → linmem +
0x24a4 [sp,#200] [sp,#152] 940
0x24d0 [sp,#216] [sp,#232] 936
0x24fc [sp,#192] [sp,#208] 944

The discriminating operands are therefore the accumulators, and the ask becomes six words with a predicted value each, not three.

One mechanism fits four of four published words

If the three accumulators read zero, only the gravity term survives:

field predicted reporter measured (Renode, QEMU, i.MX RT1176 — all three)
vel-d f32(9.81 × 0.001) = 0x3C20BA20 0x3C20BA20 — bit-identical
vel-n 0 + 0.0×9.81 = 0 0
vel-e 0 + 0.0×9.81 = 0 0
pos-d (g·dt)·dt/2 = 4.9050007e-06 4.9050004e-06

wasmtime's non-zero north/east come from that same accumulator, and its vel-d is 0 because the accumulator's −9.81 cancels the gravity term.

Recorded as a falsifiable prediction, not a cause

The mechanism on this thread has been wrong twice — "an identity rotation" (refuted by the reporter's tick-16 numbers) and "a lagged attitude read" (refuted by the reporter's own TCG tracer showing the quaternion bit-identical at every tick). Both were claims about state; this one is about the translational computation, which is where that refutation pointed, and it does not contradict the quaternion agreeing.

Measured: the expression shape, and the arithmetic fit. Not measured: any runtime value. So the correspondence states a predicted value per slot and the conditions that refute it.

An empty positive control was the finding, twice

  1. Searching the object for the gravity constant as a 4-byte little-endian pattern returned zero — and so did the controls, 1.0 (62 occurrences in the wasm) and 0.001 (22). The search was structurally incapable: synth materialises f32 constants as movw/movt pairs, and Thumb-2 scatters a 16-bit immediate across i:imm3:imm8, so the pattern never appears contiguously. Reconstructing the pairs finds +9.81 at 5 sites and −9.81 at 2, with controls at 34 and 18 — non-zero, so potent.
  2. The operand-pairing extractor first returned zero triples, because its window began one instruction too late and saw only one of the two vldrs. Caught only because the block had been read by eye first, which served as the control.

Disclosed, not glossed

Lowered with synth 0.82.0 while the reporter ran 0.77.0, and 0.82.0 has not been byte-compared against 0.77.0 for this module — the durable record establishes 0.79.0 ≡ 0.77.0 and says nothing about 0.82.0. Partial stability evidence: all three inherited slot offsets reproduce here ([sp,#152] 82 sites, [sp,#208] 32, [sp,#232] 20). The correspondence therefore supplies a version-robust instruction-pattern locator and marks addresses as orientation only.

Both inputs were verified against the committed SHA256SUMS.txt before use. A first compile without the reporter's own recorded flags was refused by synth with a diagnostic naming #1041 (13 active data segments, no __synth_wasm_data reference) — the refusal working.

Conduct

#1436 is externally reported and still open, so rule 4 binds and no oracle was hardened in its name. The reply leads with what changed for them, states the prediction and what refutes it, and offers detail rather than pasting it. It was drafted and surfaced to the maintainer for approval, not posted from this lane.

Refs #1436

🤖 Generated with Claude Code

https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L

… — the ask was pointing at the wrong three words

THE ASK WAS POINTING AT THE WRONG THREE WORDS. This artifact planned to obtain
the runtime values of [sp,#152], [sp,#208] and [sp,#232]. Disassembling
ekf@0.10.0#estimate shows all three are the MULTIPLICAND of a `x 9.81`, in three
copies of one shape:

  vldr s8,[sp,#<accum>] ; vldr s9,[sp,#<slot>] ; movw/movt ip=0x411CF5C3
  vmov s10,ip ; vmul.f32 s11,s9,s10 ; vadd.f32 s9,s8,s11 ; str -> linmem

so each is the gravity DIRECTION and the OTHER operand is an accumulator. Pairs,
with the hand-read block at 0x24a4 as the extractor's positive control:
([sp,#200],[sp,#152])->+940  ([sp,#216],[sp,#232])->+936
([sp,#192],[sp,#208])->+944.

AND THE REPORTER'S PUBLISHED TICK-1 WORDS FIT ONE MECHANISM EXACTLY. If the
three ACCUMULATORS read zero, only gravity survives: down becomes 0 + 1.0*9.81,
integrated as 9.81*0.001, whose f32 bits are 0x3C20BA20 — BIT-IDENTICAL to the
vel-d measured on Renode, QEMU and i.MX RT1176 alike. North/east become exact
zeros, which is what was measured, while wasmtime's non-zero north/east come
from that same accumulator. pos-d fits (g*dt)*dt/2 to 5 significant figures.
Four of four published words, one cause.

HYPOTHESIS THREE, RECORDED AS A FALSIFIABLE PREDICTION RATHER THAN A CAUSE. The
first two were refuted, both claims about STATE; this is about the translational
computation, which is where that refutation pointed, and it does not contradict
the quaternion agreeing. Measured: the expression shape and the arithmetic fit.
NOT measured: any runtime value.

AN EMPTY POSITIVE CONTROL WAS THE FINDING, TWICE. (a) Searching the object for
the constant as a 4-byte LE pattern returned zero — and so did the controls, 1.0
and 0.001. synth materializes f32 constants as movw/movt pairs and Thumb-2
scatters a 16-bit immediate across i:imm3:imm8, so the pattern never appears
contiguously. Reconstructing pairs finds +9.81 at 5 sites, -9.81 at 2, controls
at 34 and 18. (b) The pairing extractor first returned ZERO triples because its
window began one instruction too late and saw one of the two vldrs; caught only
because the block had been read by eye first as a control.

DISCLOSED, not glossed: lowered with synth 0.82.0 while the reporter ran 0.77.0,
and 0.82.0 is NOT byte-compared against 0.77.0 for this module. Partial
stability evidence: all three inherited slot offsets reproduce here ([sp,#152]
82 sites, [sp,#208] 32, [sp,#232] 20). The correspondence therefore gives a
version-robust instruction-pattern locator and marks addresses as orientation.

Inputs verified against the committed SHA256SUMS before use. A first compile
without the reporter's own flags was REFUSED with a diagnostic naming #1041,
which is the refusal working.

Rule 4 binds: no oracle was hardened in #1436's name. The reply is DRAFTED AND
SURFACED for approval, not posted from this lane.

Refs #1436

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
@avrabe
avrabe force-pushed the lane/v0.83-jessdiverge5 branch from 78a7e7f to f95733e Compare October 8, 2026 23:15
@codecov

codecov Bot commented Oct 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

avrabe added a commit that referenced this pull request Oct 9, 2026
…ll four lanes

R4-lane and R15 both red on the unstamped branch, four failures from one cause:
FIRSTTOKEN2 and SWEEP carried `landed: PENDING-PR-STAMP`, which names neither a
PR nor an issue. R15 states the remedy itself — "Name BOTH the issue and the
delivering PR" — and that is the arm taken here rather than flipping status,
because a CLAIMING status would authorise closing #1476 and #1373. Read R4-lane's
message as the disjunction it is.

WIDEFILE6 and JESSDIVERGE5 are restamped too. Their `PR #1501` / `PR #1502`
become FALSE the moment they land via a different PR, so this is a correction for
accuracy and not a concession to consolidating them. Each `landed:` value was
read in FULL before editing: the prose describes the FINDING, not the PR
mechanics, so the leading number was the only stale token.

Verified after the edit, not before it:
  status_evidence_check.py rc=0, 0 failures, printed count == printed list
  issue-scope: 0 issue(s) authorised for closure, 1 held by `outlives`
  all four still `status: proposed` with no `issue-scope:` — non-claiming
  closer-keyword scan over the new prose: zero adjacencies, control firing

The print-order fix that makes the first line trustworthy arrived with #1500:
this same tree printed 2 failures while counting 4 on the previous base.

Refs #1476, Refs #1373, Refs #1439, Refs #1436

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
@avrabe

avrabe commented Oct 9, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #1503, which carries this commit unchanged — the artifact file is byte-identical to the one on this branch, verified after the rebase.

Consolidated because each artifact-only lane as its own PR costs a full CI run plus a rebase and re-run after every preceding merge, and the rust-cpu pool is shared across the org. Four PRs would be four drain cycles.

The landed: field has been restamped to name #1503, since the stamp on this branch would be false once the work lands via a different PR.

@avrabe avrabe closed this Oct 9, 2026
avrabe added a commit that referenced this pull request Oct 9, 2026
…nly lanes, four refutations, none claiming (#1503)

* v0.83 FIRSTTOKEN2 (#1476): the widening is refused again, and this time because the hole it would close is EMPTY

v0.82 refused three widenings by weighing a cost against a benefit. This
re-measures the trade the refuting command asks about and finds the BENEFIT SIDE
IS ZERO — a stronger refusal than v0.82's, not a repeat of it.

THE HOLE HAS NO INSTANCES AT THIS TREE. `unclassified_lead` — the function that
makes #1476's hole nameable — returns a token for ZERO artifacts. Its own
docstring records the measured escapes as NOT LANDED, DONE, NOT-DELIVERED and
CLOSED; none of the four is present any more.

A DERIVED ZERO IS A REFUSAL AND NOT A PASS, so the detector was PAIRED-CONTROLLED
before the zero was believed. POSITIVE 4/4: fed the four openings its docstring
names, it returns each one. NEGATIVE 4/4: fed `PARTIAL,`, `DELIVERED,`,
`THE MEASUREMENT` and `MEASURED`, it returns None for all four.

SO THE TRADE IS 33 DROPPED TO CLOSE 0. Variant 3, stated precisely because the
count depends on the statement: drop any artifact whose FIRST SENTENCE of
verified-by contains a negator (NOT|NO|NEVER|WITHOUT|CANNOT|NEITHER|NOR). Over
the checker's own population plus this release's five delivered artifacts, 33 of
85. No widening is justified by an empty hole.

AND THE DROP COUNT MOVED, confirming the non-adoptability argument from a second
direction. v0.82 measured 27 of 78 at afa59b5 and observed the count moving
with the SENTENCE SCOPE; it also moves with the TREE. A population that changes
with a parsing choice and with the commit is not a population.

A FIRST ATTEMPT WAS WRONG IN THIS REPO'S RECORDED WAY. It reimplemented the
lookup as "LEAD matched but the phrase is in no set" and reported THIRTEEN
escapes. Every one was a false positive: LEAD prefers a TWO-WORD run and
`unclassified_lead` falls back to the FIRST word, so `IMPLEMENTED PER` is
correctly out of scope. The hand-rolled version measured the regex; the script's
function measures the rule. Thirteen became zero with the right instrument.

THIS RELEASE'S OWN FIVE DELIVERED ARTIFACTS WERE PUT THROUGH THE GATE — the
check this lane could most easily have skipped. All five in population, zero red
verdicts, zero escapes. One scare recorded: run from a branch cut off
origin/main the same scan showed four of them `lead=None` and apparently OUT of
population; the cause was the branch, not the artifacts — on main those files
are still the PLAN versions with no verified-by at all.

AND THE POPULATION FIGURE IS QUOTED FROM THE GATE'S OWN PRINTED LINE, not
computed. A first write gave three hand-derived numbers and all three were
unstable for reasons unrelated to the tree: 80 became 81 the moment this
artifact gained its own verified-by, and 577 became 575 under a one-line change
to my helper's type filter. The fix was to stop producing them and read the
instrument's output.

#1476 STAYS OPEN as the record of why no wider rule is adoptable.

Refs #1476

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L

* v0.83 SWEEP (#1373): the board CAN answer "is this still broken?" — and for the pinned set the answer is YES, which refutes verify-and-close as a strategy

MAINTAINER-REQUESTED mid-release: reduce the open-issue count as far as evidence
allows. The plan was a verify-and-close sweep over the 54 open issues. THAT PLAN
IS REFUTED AS A STRATEGY, with numbers, and the refutation is the deliverable.

THE PINS ANSWER THE QUESTION #1373 SAYS THE BOARD CANNOT. #1428 established that
all six non-empty KNOWN*/PINNED* tables are exact in BOTH directions — they go
RED when a pinned defect is FIXED. So a PASSING differential is positive
evidence the defect is STILL LIVE. Re-measured against this release's binary:

  false_reject_1229_differential      PASS — 130 false-rejections of valid WASM
  invalid_accept_1207_differential    PASS — 38 wrongly-accepted invalid modules
  aarch64_operand_class_1231_diff     PASS — 4 operand-class confusions
  ra003_join_1230_differential        PASS — 3 remaining declines

Closing any of those as "verified fixed" would be a FALSE closure of a CI-proven
live defect — strictly worse than leaving the count where it is.

#1447 RE-RUN AND REPRODUCING EXACTLY: (if (result T)) with no params and two
constant arms gives i32 COMPILES, i64 COMPILES, f32 DECLINED, f64 DECLINED, with
the diagnostic unchanged — including "function too complex" about a
zero-parameter two-constant module. Stays open. The misleading clause is a cheap
separate fix and is deliberately NOT done here: a diagnostic correction is not
progress on the capability gap.

#1085 VERIFIED CLOSEABLE, recorded rather than closed. R7 is labelled
`# ---- R7 git archaeology (#1085)`, landed in b2abf95 whose first tag is
v0.61.0, carries class R7EvidenceRelease whose docstring records that disabling
R7 kills at least one test, and runs live at 84 archaeology checks / 0 skipped /
0 failures. Closure cites a TAGGED release, so it waits for v0.83.0.

#1448 IS AN HONEST NON-RESULT. A hand-written approximation of its bisection
DECLINED IN BOTH ARMS where the issue reports 1 compiling and 2 declining. That
does not refute the issue and is not evidence about it — the module is mine, not
the reporter's, and a disagreement between my approximation and a measured
bisection means MY module is wrong. #1448 has no committed repro, which is
exactly why it cannot be cheaply re-verified.

THE UNPINNED REMAINDER carries each figure WITH ITS GLOB, because one moved
while this was being written: 16 of 54 have a name-matched repro under
scripts/repro/*; "named anywhere" is 30 over
scripts/repro/* + crates/*/tests/*.rs + crates/*/src/*.rs, and a first pass over
a wider recursive set gave 29. The population is a property of the glob, not of
the board. The directional claim is unaffected.

AND AN INSTRUMENT USED FOR THIS TRIAGE WAS TOO CRUDE TO TRUST, recorded so it is
not re-used: a census mapping each issue to "the first tag containing the newest
commit mentioning it" dated #1085 to v0.64.0, where the IMPLEMENTING commit
gives v0.61.0. The newest mention is not the fix.

Refs #1373
Refs #1428
Refs #1085

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L

* v0.83 WIDEFILE6 (#1439): the newly-accepted function disassembled — no VABS is emitted, and sign cannot come from reassociation

THE RETRY WAS APPLIED LOCALLY AND THE RUNG LANDS. v0.78's pool-grow retry for
stage 3, mirroring stage 2, re-applied on a scratch tree (NEVER committed;
restored byte-identically, diff -q IDENTICAL, tripwire green again at 10/10).
The 60-local right-leaning shape compiles — 1956 bytes — and
wide60_declines_and_the_ladder_dies_on_the_wide_file_rung_1426 FIRED exactly as
built: "IF THIS FIRED, THE RUNG LANDED".

AND THE DIFFERENTIAL NAMED AS THIS DEFECT'S ORACLE NEVER RUNS THE SHAPE. With
the retry applied it reports "PASS: 70 emulations bit-identical to wasmtime".
That PASS is TRUE ABOUT THE WRONG SUBJECT: F32_EXPORTS is
["live13","live14","live16","live24"], tops out at 24 locals, folds LEFT, and
every entry compiles on an EARLIER rung — live24 on vfp-frame-locals+pool-grow,
bit-exact since v0.78. The newly-accepted function is in no export list. The
tripwire's own message predicted this: "a compile-only green here says nothing
about the bytes".

THE ABS HYPOTHESIS IS REFUTED BY THE EMITTED CODE, not only by encoding
reachability. Over the function's 1956 bytes, sliding by a HALFWORD rather than
assuming alignment: ZERO VABS.F32, ZERO VMOV.F32 reg-reg, ZERO VNEG.F32.
POSITIVE CONTROL, which is why the zero means anything: the same scanner finds
VABS.F32 twice in a 74-byte abs/copysign module.

AND SIGN CANNOT COME FROM REASSOCIATION — proven, not assumed. sign(a*b) is the
XOR of the signs and XOR is commutative, so a product's sign is invariant under
any reordering; overflow destroys magnitude associativity and leaves sign alone.
Measured in f32 with infinity saturation over the exact 60-factor chain, forward
vs fully reversed, params +/-0.5/1/2/3: got ^ want == 0 every time. It also
explains the signature — the chain OVERFLOWS after ~25 factors, and two
infinities of opposite sign differ in exactly the sign bit with bit-identical
magnitudes, which is v0.78's observation verbatim.

THE MULTIPLY MULTISET IS INTACT: VMUL.F32 appears 119 times against 119 f32.mul
in the source, so none is dropped or duplicated. (Spill-traffic counts were
taken and are NOT quoted: those masks returned nothing on the control, so they
are UNPROVEN.)

SURVIVING CLASS, now the only one in this family: a WRONG OPERAND — a
spill/reload reading the wrong frame slot — which substitutes a value without
changing the instruction count or the sign algebra. Last on v0.81's candidate
list, never tested, now the sole survivor.

BOTH REFUTING COMMANDS REFUTED THEIR OWN EXPECTATIONS, and one was malformed in
this release's exact shape. `git log -S"pool grow retry" | wc -l` expected 0 and
returns 5 — and -S is a PICKAXE, matching every commit where the count CHANGED,
so it cannot speak about HEAD. Worse, all five commits are the artifact commits
themselves: the phrase lives ONLY in release-v0.81/-v0.82/-v0.83 YAML prose and
zero times in code, so the instrument was counting the commits that wrote the
artifacts carrying it. Replaced with `git grep` at HEAD, which says 0 — the
claim was true, the command could not establish it. And the emitter count is 4
not 3 under `-- crates/`, because a test asserts the constant; the pathspec is
part of the command, and `crates/*/src/*` gives 3 while `:(glob)crates/*/src/**`
gives 0 — a wrong pathspec looks exactly like a passing refutation.

Encoder line numbers RE-DERIVED at this commit: 2012 (F32Abs A32), 6366 (F32Abs
Thumb-2), 7354 — which is NOT an F32Abs emitter but sits inside
encode_thumb_f32_copysign. The v0.81 figures 1992/6322/7310 had all moved.

Fixture denominator re-measured because two records disagreed: 130 f32.mul (plus
15 f64.mul), zero abs/copysign/neg in both widths. A durable note carried 71
since v0.81; never true — the fixture has ONE commit (0ec9dc7, v0.60) and
`git show <rev>:<path>` gives 130 at every revision.

The cause is NOT named, so the retry STAYS OUT and the tripwire STAYS ARMED.

Refs #1439

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L

* v0.83 JESSDIVERGE5 (#1436): the gravity triple read out of the object — the ask was pointing at the wrong three words

THE ASK WAS POINTING AT THE WRONG THREE WORDS. This artifact planned to obtain
the runtime values of [sp,#152], [sp,#208] and [sp,#232]. Disassembling
ekf@0.10.0#estimate shows all three are the MULTIPLICAND of a `x 9.81`, in three
copies of one shape:

  vldr s8,[sp,#<accum>] ; vldr s9,[sp,#<slot>] ; movw/movt ip=0x411CF5C3
  vmov s10,ip ; vmul.f32 s11,s9,s10 ; vadd.f32 s9,s8,s11 ; str -> linmem

so each is the gravity DIRECTION and the OTHER operand is an accumulator. Pairs,
with the hand-read block at 0x24a4 as the extractor's positive control:
([sp,#200],[sp,#152])->+940  ([sp,#216],[sp,#232])->+936
([sp,#192],[sp,#208])->+944.

AND THE REPORTER'S PUBLISHED TICK-1 WORDS FIT ONE MECHANISM EXACTLY. If the
three ACCUMULATORS read zero, only gravity survives: down becomes 0 + 1.0*9.81,
integrated as 9.81*0.001, whose f32 bits are 0x3C20BA20 — BIT-IDENTICAL to the
vel-d measured on Renode, QEMU and i.MX RT1176 alike. North/east become exact
zeros, which is what was measured, while wasmtime's non-zero north/east come
from that same accumulator. pos-d fits (g*dt)*dt/2 to 5 significant figures.
Four of four published words, one cause.

HYPOTHESIS THREE, RECORDED AS A FALSIFIABLE PREDICTION RATHER THAN A CAUSE. The
first two were refuted, both claims about STATE; this is about the translational
computation, which is where that refutation pointed, and it does not contradict
the quaternion agreeing. Measured: the expression shape and the arithmetic fit.
NOT measured: any runtime value.

AN EMPTY POSITIVE CONTROL WAS THE FINDING, TWICE. (a) Searching the object for
the constant as a 4-byte LE pattern returned zero — and so did the controls, 1.0
and 0.001. synth materializes f32 constants as movw/movt pairs and Thumb-2
scatters a 16-bit immediate across i:imm3:imm8, so the pattern never appears
contiguously. Reconstructing pairs finds +9.81 at 5 sites, -9.81 at 2, controls
at 34 and 18. (b) The pairing extractor first returned ZERO triples because its
window began one instruction too late and saw one of the two vldrs; caught only
because the block had been read by eye first as a control.

DISCLOSED, not glossed: lowered with synth 0.82.0 while the reporter ran 0.77.0,
and 0.82.0 is NOT byte-compared against 0.77.0 for this module. Partial
stability evidence: all three inherited slot offsets reproduce here ([sp,#152]
82 sites, [sp,#208] 32, [sp,#232] 20). The correspondence therefore gives a
version-robust instruction-pattern locator and marks addresses as orientation.

Inputs verified against the committed SHA256SUMS before use. A first compile
without the reporter's own flags was REFUSED with a diagnostic naming #1041,
which is the refusal working.

Rule 4 binds: no oracle was hardened in #1436's name. The reply is DRAFTED AND
SURFACED for approval, not posted from this lane.

Refs #1436

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L

* v0.83 artifacts2: stamp `landed:` with the delivering PR (#1503) on all four lanes

R4-lane and R15 both red on the unstamped branch, four failures from one cause:
FIRSTTOKEN2 and SWEEP carried `landed: PENDING-PR-STAMP`, which names neither a
PR nor an issue. R15 states the remedy itself — "Name BOTH the issue and the
delivering PR" — and that is the arm taken here rather than flipping status,
because a CLAIMING status would authorise closing #1476 and #1373. Read R4-lane's
message as the disjunction it is.

WIDEFILE6 and JESSDIVERGE5 are restamped too. Their `PR #1501` / `PR #1502`
become FALSE the moment they land via a different PR, so this is a correction for
accuracy and not a concession to consolidating them. Each `landed:` value was
read in FULL before editing: the prose describes the FINDING, not the PR
mechanics, so the leading number was the only stale token.

Verified after the edit, not before it:
  status_evidence_check.py rc=0, 0 failures, printed count == printed list
  issue-scope: 0 issue(s) authorised for closure, 1 held by `outlives`
  all four still `status: proposed` with no `issue-scope:` — non-claiming
  closer-keyword scan over the new prose: zero adjacencies, control firing

The print-order fix that makes the first line trustworthy arrived with #1500:
this same tree printed 2 failures while counting 4 on the previous base.

Refs #1476, Refs #1373, Refs #1439, Refs #1436

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L

---------

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.

1 participant