Skip to content

chore(rivet): flip RQ-61-A32RELOC and RQ-61-ORACLEFLOOR to implemented — their work shipped in #1116 and #1112 - #1120

Merged
avrabe merged 3 commits into
mainfrom
chore/flip-a32reloc-oracleflloor
Sep 1, 2026
Merged

chore(rivet): flip RQ-61-A32RELOC and RQ-61-ORACLEFLOOR to implemented — their work shipped in #1116 and #1112#1120
avrabe merged 3 commits into
mainfrom
chore/flip-a32reloc-oracleflloor

Conversation

@avrabe

@avrabe avrabe commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Two artifacts shipped and still read proposed

Both done-when conditions are fully met by merged code:

artifact shipped in done-when
RQ-61-A32RELOC #1116 A32 BL emits R_ARM_CALL (28) ✓, Thumb keeps type 10 ✓, the #1021 harness workaround is removed ✓
RQ-61-ORACLEFLOOR #1112 both oracles print refusals: N ✓, return non-zero at zero ✓, ci.yml greps it ✓, each red-first proven ✓

Why no gate caught it — the more interesting half

R4 fires on a first-parent commit whose subject starts with a known
artifact id. Every lane PR this release names its artifact first
(RQ-61-VCLOSURE (#1091): …), so R4 sees them. My own two commits used
conventional-commit prefixes — fix(oracle): … and fix(#1040): … — so the
subjects never matched, both artifacts stayed proposed, and
status_evidence_check reported 0 failures the whole time.

The gate is not wrong; it is blind to a delivery-commit shape this repo also
uses, and the blindness is silent in the direction that matters: work landed,
artifact says nothing, gate says green.
Same family as #1085, #1091 and #1113.

Filed as #1119 rather than fixed here — it needs a red-first fix against
these two exact commits (b4860e4e, eefa19ef), which are now a free,
already-measured regression corpus.

What the flips record

RQ-61-A32RELOC's verified-by keeps the part that would otherwise be lost:
the unfiled second defect (eb000000 vs gas's ebfffffe — a 0 addend
resolves two instructions past the callee entry) and the real-linker evidence
that the pre-fix object linked to eaca0000, opcode corrupted from eb (BL)
to ea (B), so the link register was never set.

RQ-61-ORACLEFLOOR's landed records that the published count was corrected
4 → 2, because two of the four matches were toolchain probes ("does this
clang accept rv32imac?"), not decline assertions.

Gates

status_evidence_check.py: 0 failures. claim_check.py: 54/54.

Refs #1040, #1113, #1119

…d — their work shipped in #1116 and #1112

Both artifacts' `done-when` conditions are fully met by merged code, and both
still read `proposed`. Caught by reading the release status, NOT by a gate.

WHY NO GATE CAUGHT IT, which is the more interesting half. R4 fires on a
first-parent commit whose SUBJECT STARTS WITH a known artifact id. Every lane
PR in this release names its artifact first ("RQ-61-VCLOSURE (#1091): ..."), so
R4 sees them. My own two commits used conventional-commit prefixes —
"fix(oracle): ..." and "fix(#1040): ..." — so the subjects never matched, the
artifacts stayed `proposed`, and status_evidence_check reported 0 failures the
whole time. The gate is not wrong; it is blind to a delivery-commit shape that
this repo also uses, and the blindness is silent in the direction that matters
(work landed, artifact says nothing).

This is the v0.59 "orphaned status flips" class recurring, and the same family
as everything else in v0.61: a check that exists, is wired, and cannot see part
of what it is for. Filed separately rather than fixed here.

RQ-61-A32RELOC (#1040, PR #1116): A32 BL sites emit R_ARM_CALL (28), Thumb
sites keep type 10, the #1021 harness's execution-mode workaround is removed —
all three clauses. `verified-by` records the unfiled SECOND defect (the
`eb000000` vs `ebfffffe` addend) and the real-linker evidence that the pre-fix
object linked to `eaca0000` with the opcode corrupted from BL to B.

RQ-61-ORACLEFLOOR (#1113, PR #1112): both oracles print `refusals: N`, return
non-zero at zero, and ci.yml greps it; each proven red-first. `landed` records
that the published count was corrected 4 -> 2 because two matches were
toolchain probes, not decline assertions.

status_evidence_check: 0 failures. claim_check: 54/54.

Refs #1040, #1113

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
… subjects (14 -> 15)

Found while flipping the two artifacts in the previous commit: the reason
nothing caught them is itself a gate blind spot, so it gets an artifact rather
than a footnote.

R4 anchors on the subject PREFIX. Lane PRs name their artifact first and are
seen; conventional-commit subjects are not:

  RQ-61-A32RELOC    #1116  "fix(#1040): A32 BL sites carry ..."    unseen
  RQ-61-ORACLEFLOOR #1112  "fix(oracle): #1104 shadowed the ..."   unseen

Both shipped complete while status_evidence_check reported 0 failures.

The artifact records what the fix must NOT break, so it is not re-litigated:
the prefix anchor is what stops a passing cross-reference from reading as a
delivery claim, and R4 must stay first-parent so a merged branch's internal
commits do not each count as a delivery. Resolving through `fields.issue` is
the only option that would have caught both instances, and it needs a marker
discipline to avoid false positives on reverts and partial fixes.

RED-FIRST IS FREE and required: b4860e4 and eefa19e are an already-measured
regression corpus, and a fix that does not flag both has not fixed the
reported thing. The done-when says so, and also requires the negative
direction — it must NOT fire on a subject that merely cross-references an id.

ARTIFACT_FLOOR 495 -> 496, re-derived with `rivet list`, not computed.

Refs #1119

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

codecov Bot commented Sep 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe
avrabe merged commit 8c3c332 into main Sep 1, 2026
59 checks passed
@avrabe
avrabe deleted the chore/flip-a32reloc-oracleflloor branch September 1, 2026 21:02
avrabe added a commit that referenced this pull request Sep 2, 2026
…tion floor — red-first on b4860e4/eefa19ef (+ RQ-61-EXTRACT flip) (#1124)

* RQ-61-R4BLIND (#1119): R4-issue scope resolution + R10 window attribution floor — red-first on b4860e4 and eefa19e

R4 only saw delivery commits whose subject STARTS with an artifact id, so
two v0.61 artifacts shipped via conventional-commit subjects and stayed
proposed with the gate green (#1119). Two rules, because the measured
corpus refutes half of option 2 as filed:

- R4-issue: a conventional-commit subject whose SCOPE names a
  fields.issue (fix(#1040): ...) resolves to that issue's highest-release
  holder and gets R4's acknowledgment demand. Scope-position ONLY — the
  description position is measured to name a CAUSE (eefa19e's #1104 is
  the PR that introduced the defect; resolving it would misattribute).
  Windowed to commits since the previous minor's tag, because
  fix(#1085) (#1090) is v0.60-era work on the issue RQ-61-EVIDENCE now
  holds — frozen history must not match the current issue map.

- R10: eefa19e names neither its artifact nor its issue, so NO resolver
  can attribute it — but its silence can be NOTICED. Every delivery-typed
  (feat/fix/perf/proof/test) first-parent commit in the release window
  must be attributable to SOME artifact: a known id anywhere in the
  subject, a known issue anywhere, or its PR in any landed:/verified-by:.
  The red forces exactly the landed: line #1120 wrote by hand.

RED-FIRST at 331bbd8 (last pre-flip commit, old gate 0 failures): the
fixed gate reports exactly 2 failures — R4 RQ-61-A32RELOC (fix(#1040) /
PR #1116) and R10 on 'fix(oracle): #1104 shadowed ...' (#1112) — and 0 on
main after the flip. Negative direction: 0cb36bc (fix(rivet): ...
RQ-61-VCLOSURE's ...) stays green — a mention is attribution, never a
delivery claim; Revert / description-position / ambiguous-issue shapes
all green (R4BlindSpot1119, 9 tests, mutation-verified: neutering
SCOPE_ISSUE or DELIVERY_TYPES each kills tests). ci.yml greps the new
status-evidence-window line so an underivable window is a CI red, not a
quiet skip.

Refs #1119

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

* chore(rivet): flip RQ-61-EXTRACT to implemented — #1121's delivery re-verified clause by clause on main

All three done-when clauses verified independently rather than from the
PR body: the 98 snapshot .ml/.mli files across coq/, extracted/,
validation/, compiler/ are gone from the tree (delivery diff deletes
exactly 98); VALIDATION_STATUS.md is rewritten and no longer contradicts
its own header (the 'Successfully implemented' / 'Complete and ready'
body claims grep to nothing); the .v extraction target is untouched and
CI's 'Bazel Build & Proofs' passed on PR #1121, with main green at the
merge.

Note for #1119: a5c75ca was never in the R4 blind class — its subject
is id-first and its landed: names PR #1121, so old and fixed R4 both see
and accept it.

Refs #1080, #1121

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