Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions artifacts/release-v0.63/RQ-63-FLOOREQ.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,11 @@ artifacts:
enforced rather than conventional.
done-when: "contains:.github/workflows/ci.yml:--exact-emulation-floor"
verified-by: >-
RED-FIRST, replaying the exact mutation that was GREEN before. With
one oracle's declared floor raised by 50 (a32_i64_615_differential.py,
RED-FIRST, replaying the exact mutation that was GREEN before. The
figures below are AT v0.63 — a transcript of what was executed then,
not a statement about the current floor, which moves with every
landing oracle and is pinned in ci.yml + claims.yaml. With one
oracle's declared floor raised by 50 (a32_i64_615_differential.py,
352 -> 402) and ci.yml untouched:
--min-emulation-floor 324845 EXIT=0 (the old gate, blind)
--exact-emulation-floor 324845 EXIT=1 "EQUALITY BROKEN: summed
Expand Down
85 changes: 52 additions & 33 deletions artifacts/release-v0.64/RQ-64-FLOORPROSE.yaml
Original file line number Diff line number Diff line change
@@ -1,39 +1,58 @@
artifacts:
- id: RQ-64-FLOORPROSE
type: system-req
title: "A live pinned value is copied into artifact PROSE, where nothing checks it — the third instance of one number in N places"
title: "PREMISE CORRECTED before implementation: the floor lockstep is TWO files, not three, and the artifact copy is a dated transcript that cannot go stale"
description: >
Found by auditing what actually cost time during the v0.63 merge wave.

The emulation floor must move in lockstep across THREE files on every
oracle landing: `ci.yml` (the enforced value), `claims.yaml` (the
verbatim pin), and `RQ-63-FLOOREQ.yaml` (`verified-by:` prose). **All
four v0.63 lane rebases conflicted on it** — it was the single largest
merge cost of the release, and the resolution is not textual: neither
side's value describes the merged tree, so it must be RE-DERIVED from
`oracle_wiring_check.py` every time.

Two of the three are load-bearing and gated. The third is not: nothing
checks the artifact's prose copy, so the next oracle landing makes
`RQ-63-FLOOREQ`'s `verified-by: … 324845` silently wrong.

THAT IS THE SAME DEFECT ONE FIELD OVER. `RQ-62-FLOORTIGHT`'s `done-when`
pinned the literal `324646`, which its own protocol guaranteed would
move; it reddened on the first legitimate oracle and was re-pointed at
the invariant text. The `verified-by:` copy has the identical shape and
is WORSE, because a `done-when` at least fails loudly while prose just
rots.

THE GENERAL RULE THIS SHOULD SETTLE, so it is not rediscovered a fourth
time: an artifact records what was TRUE WHEN IT SHIPPED and must not
restate a value that continues to move. Where the live value matters,
the artifact should name the DERIVATION (`oracle_wiring_check.py`'s
reported total) or the pin that holds it, never the number.

Cheap and adjacent: `scripts/repro/` is 402 files in one flat namespace,
findable only because each is named after its issue. Worth deciding
whether that stays deliberate — it has not cost anything measurable yet,
and is recorded here so the answer is a choice rather than an accident.
SCOPED FROM A WRONG PREMISE, AND CORRECTED BEFORE ANY WORK WAS DONE.
Recorded in full rather than quietly rewritten, because the error is the
same shape this release exists to catch and the correction is the result.

AS ORIGINALLY WRITTEN, this artifact claimed the emulation floor must
move in lockstep across THREE files — `ci.yml`, `claims.yaml`, and
`RQ-63-FLOOREQ.yaml`'s `verified-by:` prose — and that the third "goes
stale silently" because nothing checks it, making it the same defect as
`RQ-62-FLOORTIGHT`'s literal `done-when` one field over.

MEASURED BEFORE IMPLEMENTING. Every occurrence of the live value,
classified by its FRAMING rather than counted:

claims.yaml 1 the verbatim pin — LIVE, gated
.github/workflows/ci.yml 1 the enforced value — LIVE, gated
RQ-63-FLOOREQ.yaml 3 all inside a RED-FIRST TRANSCRIPT of a
mutation test that was actually executed

THE LOCKSTEP IS TWO FILES, NOT THREE. And the artifact's three mentions
are a record of a measurement — "with the OLD floor the mutation was
EXIT=0; with the new one, EXIT=1" — which is TRUE FOREVER as a statement
about what was run at v0.63. It does not go stale; it becomes
HISTORICAL, which is exactly what a `verified-by:` is for. The rule this
artifact itself proposed — *an artifact records what was true when it
shipped* — is one the transcript already satisfies.

SO THE DEFECT DOES NOT EXIST, and implementing the fix would have
removed a legitimate measurement record to satisfy a rule it already
met. WHAT SURVIVES is two smaller and true things:

1. THE MERGE COST WAS REAL, AND THE DIAGNOSIS WAS OFF BY ONE. All four
v0.63 lane rebases did conflict on the floor — it was the largest
merge cost of the release — but on `ci.yml` and `claims.yaml`, the
two LIVE files. The artifact copy never caused a conflict. The
mitigation is unchanged and already practised: RE-DERIVE from
`oracle_wiring_check.py` on the merged tree, never merge the number
textually. Two files that must agree exactly IS the design (that is
RQ-63-FLOOREQ's equality), not a defect to remove.

2. A DATED TRANSCRIPT IS UNAMBIGUOUS; AN UNDATED ONE IS MERELY CORRECT.
A reader at v0.70 meets `324845` in the transcript and cannot tell at
a glance whether it is the value THEN or NOW. That is an ambiguity,
not staleness, and it is fixed by saying "at v0.63" beside it — which
is what this artifact now does instead of deleting the record.

HOW THE ERROR HAPPENED, since that is the transferable part: the artifact
was written from a `grep` for the literal, which returns occurrences and
cannot return FRAMING. Three hits in one file read as three copies; they
were one transcript. A count is not a diagnosis — the same lesson as
v0.63's "a blocker count is not a reach estimate", one domain over.
status: proposed
release: v0.64
tags:
Expand All @@ -46,7 +65,7 @@ artifacts:
target: BR-001
fields:
req-type: process
priority: should
priority: could
verification-track: review
issue: "#910"
done-when: "manual: no release artifact restates a live pinned value as a literal in prose; the floor's lockstep set is reduced to the enforced value and its pin; and the rule (an artifact records what was true when it shipped, never a moving value) is written where the next author will meet it"
Expand Down
Loading