Skip to content

RQ-61-R4BLIND (#1119): R4-issue scope resolution + R10 window attribution floor — red-first on b4860e4e/eefa19ef (+ RQ-61-EXTRACT flip) - #1124

Merged
avrabe merged 2 commits into
mainfrom
fix/r4blind-1119
Sep 2, 2026
Merged

RQ-61-R4BLIND (#1119): R4-issue scope resolution + R10 window attribution floor — red-first on b4860e4e/eefa19ef (+ RQ-61-EXTRACT flip)#1124
avrabe merged 2 commits into
mainfrom
fix/r4blind-1119

Conversation

@avrabe

@avrabe avrabe commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Task A — RQ-61-R4BLIND (#1119): R4 could not see conventional-commit delivery subjects

Two rules, because the measured corpus itself refutes half of option 2 as filed in #1119:

R4-issue — scope-position resolution through fields.issue

fix(#1040): ... resolves through the issue map to RQ-61-A32RELOC and gets R4's existing acknowledgment demand (claiming status, or the PR in landed:). The marker discipline is the scope position only: eefa19e's own subject proves the description position names a cause, not a target — its #1104 is the PR that introduced the defect, and resolving it would have misattributed the commit. Scoped to the release window (first-parent commits since the previous minor's tag), because fix(#1085): ... (#1090) is v0.60-era work on the issue RQ-61-EVIDENCE now holds — matching frozen history against the current issue map would misattribute it.

R10 — window attribution floor (what actually catches eefa19e)

Correction to the issue's premise: fields.issue resolution alone cannot catch eefa19e — its subject names neither RQ-61-ORACLEFLOOR nor its issue (#1113). No resolver can attribute it; but its silence can be noticed. R10: every delivery-typed (feat|fix|perf|proof|test) first-parent commit in the release window must be attributable to some release artifact — a known id anywhere in the subject, a known issue number anywhere, or its PR named in any artifact's landed:/verified-by:. Unattributable is red, and the red forces exactly the landed: PR #1112 line that #1120 had to write by hand. Attribution errs toward green (a mention suffices) because R10 demands non-silence, not a status flip — so the passing-mention rule the artifact protects is intact.

Red-first transcript (measured corpus, live repo)

At 331bbd8b — the last commit before the #1120 hand-flip; both delivery commits in first-parent history, both artifacts still proposed:

OLD gate: ... 0 failures                    EXIT=0   <- the blind spot
NEW gate:
FAIL R4 RQ-61-A32RELOC: issue-anchored delivery commit on main
     (fix(#1040): -> issue #1040 / PR #1116) but status is `proposed` ...
FAIL R10: delivery-shaped commit in the release window is attributable to
     NO release artifact: 'fix(oracle): #1104 shadowed the aarch64 builder
     guard and left its oracle pinned to the superseded wording (#1112)' ...
... 2 failures                              EXIT=1

On current main (post-#1120 statuses): 0 failures, status-evidence-window: 3 delivery-shaped commits since v0.60.0 — 3 attributed, 1 issue-anchored delivery claims.

Negative direction (required by the artifact)

  • Live: 0cb36bc7 (fix(rivet): un-red main's R4 — RQ-61-VCLOSURE's ...) stays green — the id mention attributes it under R10, and no acknowledgment is demanded of VCLOSURE.
  • Fixtures (R4BlindSpot1119, 9 tests): description-position #N never becomes a delivery claim even when N is a known issue; Revert "fix(#1040): ..." is not delivery-shaped; an ambiguous issue (two holders at the highest release) warns and never guesses; process types (chore/plan/docs) are exempt; an underivable window skips loudly (WINDOW-SKIP) and the new status-evidence-window: CI grep turns that skip into a red.
  • Mutation-verified: neutering SCOPE_ISSUE kills the b4860e4 replay + ambiguity control; emptying DELIVERY_TYPES kills the eefa19e replay.

What the fix preserves, per the artifact: the id-prefix anchor and its DELIVERY_FLOOR are untouched; R4 stays first-parent; no "id anywhere in the subject" delivery claims.

RQ-61-R4BLIND flipped to implemented with a verified-by recording the above (including the eefa19e correction).

Task B — RQ-61-EXTRACT flipped to implemented (batched to save a CI cycle)

Every done-when clause re-verified independently on main, not taken from the PR body:

  1. Snapshots gone: coq/*.ml, coq/*.mli, extracted/, validation/, compiler/*.ml, the dune tree and root dune-project all absent; the delivery diff of a5c75caf (RQ-61-EXTRACT (#1080): delete 98 stale extraction snapshot files + the dune tree nothing runs; docs stop contradicting their own headers #1121) deletes exactly 98 .ml/.mli files, matching landed:.
  2. Doc no longer self-contradicts: docs/validation/VALIDATION_STATUS.md opens with the historical note and greps clean of "Successfully implemented" / "Complete and ready for use" / "40 files total".
  3. Extraction still exercised: the .v target untouched; CI's Bazel Build & Proofs passed on PR RQ-61-EXTRACT (#1080): delete 98 stale extraction snapshot files + the dune tree nothing runs; docs stop contradicting their own headers #1121; main green at the merge.

Task A cross-check the brief asked for: a5c75caf was never in the R4 blind class — its subject is id-first and landed: names PR #1121, so old and fixed R4 both see and accept it.

Gates run locally

  • status_evidence_check.py: 0 failures, window line present, on this tree
  • test_status_evidence_check.py: 51/51 (42 pre-existing + 9 new)
  • test_claim_check.py: 50/50; claim_check.py claims.yaml: exit 0
  • rivet validate: FAIL (40 errors) — byte-identical to main HEAD 465f23a2 under the same local rivet (older than CI's); nothing introduced
  • No .rs touched

Refs #1119, #1080

🤖 Generated with Claude Code

https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L

avrabe and others added 2 commits September 2, 2026 02:08
…tion 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
…-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
@codecov

codecov Bot commented Sep 2, 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 858068c into main Sep 2, 2026
60 checks passed
@avrabe
avrabe deleted the fix/r4blind-1119 branch September 2, 2026 01:31
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