Skip to content

fix(release): v0.64 cold-review corrections — retract a fabricated attribution, state the selector growth - #1194

Merged
avrabe merged 1 commit into
mainfrom
fix/v064-cold-review-corrections
Sep 7, 2026
Merged

fix(release): v0.64 cold-review corrections — retract a fabricated attribution, state the selector growth#1194
avrabe merged 1 commit into
mainfrom
fix/v064-cold-review-corrections

Conversation

@avrabe

@avrabe avrabe commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

v0.64 cold-review corrections — before the tag

The clean-room review found six things wrong or overstated in the release I
wrote. Correcting them here is what the review is for.

1. Retracted: a fabricated attribution (severity 1)

I closed #1108 (z3 0.20.2→0.21.0) as "breaks the required Bazel build",
attributing it to z3-sys linking the system libz3 — and made it the release's
only evidence that the dependabot hold has ever caught a breaking bump.

The mechanism was impossible. crates/BUILD.bazel:167-170:

Default feature set (#553): pure-Rust ordeal QF_BV engine + arm semantics —
no z3-sys / C++ build in the Bazel graph.

The real failure was a 504 Gateway Time-out fetching bazel-skylib. Bazel
compiled nothing; the log contains zero occurrences of "z3"; it was never
re-run. "Three siblings on the same base" was also wrong — their merge-bases
differed.

How I got there matters more than the fact. The job logs were unretrievable
through the API, and instead of recording unattributable, needs a re-run, I
reasoned from the job's name plus a plausible mechanism and wrote it up as
measurement. This repo's "read the failure name, not the count" rule extends to
the failure's content — and when that's unavailable the answer is "unknown",
not an inference. The bump is neither exonerated nor convicted; sent for recreate.

2. The subtraction metric moved the wrong way, unstated

selector_lines_code 19227 → 19740 (+513) against a baseline that must
fall. Every increment carries a written waiver, but the direction is the
direction — now stated in the notes, as v0.59 did.

3. Mach-O claim narrowed

ObjectPlan does not carry symbol bindingelf.rs hard-codes
STB_GLOBAL, macho.rs marks N_EXT independently. So "the structural answer
to #1180" was an overstatement, #1180 being precisely binding. The module count
is now derived (144 here) instead of appearing as three different undated
figures (140/141/144) — in the release that named that defect class.

4–5. Internal contradictions

RQ-64-DEPS landed: still said the artifact stays proposed while its status
was implemented. SCOPEGAP's two populations disambiguated: 23 undated
citations across 13 artifacts
flagged, of which 9 are the named shape.

6. The new gate had no tests

check_live_floor_prose shipped with zero unit tests — its red-first was a
one-time manual transcript, and a transcript is not a test. Shipping that rule
unchecked is the defect the rule describes.

Five added, in the file's own unittest style so CI actually runs them — a
pytest-style first draft would never have executed, which would have been the
same class again. Mutation-verified:

mutation result
drop the hit collection FAILED (1)
blinded rule returns clean instead of failing FAILED (1)
restored 77/77 OK

Verification

77/77 tests · status_evidence exit 0 · claim_check 62/62 · rivet at the
cross-repo baseline with 0 broken cross-refs.

Refs #965, #910, #242, #1085

…und by the v0.64 cold review, and record the review

Subject carries the artifact id and issue because R10 requires it there, not in
the body — this commit's first attempt was refused by synth's own gate, which is
the correct outcome and is fixed by satisfying the rule rather than loosening it.

The cold review found six things wrong or overstated in the release I wrote.
Corrected before the tag, which is what the review is for.

1. RETRACTED: the #1108 z3 disposition, and with it the release's only claim
   that the dependabot hold has ever caught a breaking bump. I closed that PR as
   "breaks the required Bazel build", attributing it to z3-sys linking the system
   libz3. `crates/BUILD.bazel:167-170` says there is NO z3-sys in the Bazel
   graph — the mechanism could not occur. The real failure was a 504 Gateway
   Time-out fetching bazel-skylib; Bazel compiled nothing, the log has zero
   occurrences of "z3", and it was never re-run. "Three siblings on the same
   base" was wrong too; their merge-bases differed.

   ROOT CAUSE, recorded because it generalizes: the job logs were unretrievable
   through the API, and instead of recording "unattributable, needs a re-run" I
   reasoned from the job's NAME plus a plausible mechanism and wrote it up as
   measurement. This repo's "read the failure name" rule extends to the
   failure's CONTENT — when that is unavailable the answer is "unknown", not an
   inference. The bump is neither exonerated nor convicted; sent for recreate.

2. The subtraction metric moved the WRONG way and the notes omitted it:
   selector_lines_code 19227 -> 19740 (+513) against a baseline that must FALL.
   Every increment is waivered with a reason, but the direction is the direction.

3. Mach-O "a second container disagreeing is unrepresentable" NARROWED to what
   ObjectPlan carries. It does not carry symbol BINDING — elf.rs hard-codes
   STB_GLOBAL, macho.rs marks N_EXT independently — so "the structural answer to
   #1180" was an overstatement, #1180 being binding. The module count is now
   derived (144) rather than three undated figures.

4. RQ-64-DEPS `landed:` asserted the artifact stays `proposed` while its status
   was `implemented`.

5. SCOPEGAP's two populations disambiguated: 23 undated citations across 13
   artifacts flagged, of which 9 are the named shape.

6. check_live_floor_prose shipped with ZERO unit tests — its red-first was a
   one-time manual transcript, and a transcript is not a test. Five added in the
   file's own unittest style so CI actually runs them (a pytest-style first
   draft would never have executed — the same class again). MUTATION-VERIFIED:
   dropping the hit collection fails 1; a blinded rule returning clean fails 1;
   restored 77/77 OK.

Also adds docs/reviews/v0.64-cold-review.md — step 7's DERIVED slot. It declares
the reviewed commit `ed493625` in the form loop_conformance_check parses; that
declaration is authoritative rather than ancestry-checked, because a squash-merge
discards the reviewed head (#1161). It records what the review CONFIRMED as well
as what it faulted, and carries the step-8 attestation inline: 15 merges, every
one a 0-line PR-head vs merged diff.

Verified: 77/77 tests, status_evidence exit 0, claim_check 62/62, rivet at the
cross-repo baseline with 0 broken cross-refs.

Refs #965, #910, #242, #1085, #1136
@avrabe
avrabe force-pushed the fix/v064-cold-review-corrections branch from 72f22a8 to e42f4d2 Compare September 7, 2026 17:35
@codecov

codecov Bot commented Sep 7, 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 8242621 into main Sep 7, 2026
63 checks passed
@avrabe
avrabe deleted the fix/v064-cold-review-corrections branch September 7, 2026 17:59
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