Skip to content

v0.85 planning: the artifact set, the refuting commands, and the anchor moved to v0.84.0 - #1514

Merged
avrabe merged 1 commit into
mainfrom
lane/v0.85-plan
Oct 9, 2026
Merged

avrabe merged 1 commit into
mainfrom
lane/v0.85-plan

Conversation

@avrabe

@avrabe avrabe commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

What this is

The v0.85 plan: the artifact set with a refuting command on every lane, a
comments-only _release.yaml, and the status-evidence anchor moved to v0.84.0
across all six sites in this one PR.

THEME — "A correction is an unreviewed claim." Earned rather than asserted,
and the only property this programme has measured identically in two
consecutive releases: each of the last two cold reviews found twelve false
statements, and in each case nine of the twelve were introduced by the loop's
own corrections and addenda
rather than by the original work. A correction is
written in the confident register of a fix, it arrives after the reviewing
attention has moved on, and the numbers it introduces have had zero review
passes.

v0.84 also produced the mirror of v0.83's sharpest instance: v0.83 found a
splice that replaced a PREFIX and left the TAIL re-asserting the error, and v0.84
produced one that replaced a SUFFIX and broke the HEAD it left behind. A splice
must be read against both sides it leaves behind.

v0.84's theme is carried forward as a standing obligation, because it kept
firing after it was named — including inside this loop's own most-repeated check,
where a standing derivation about an external reporter was scoped to one
repository, re-derived its bounded-complete answer correctly every tick for an
entire release, and was blind to open threads the same reporter had filed in two
sibling repositories.

The anchor move

Both counts were read off the gate's own printed line, never computed:

status-evidence-anchor: v0.84.0 — 134 delivery commits (pinned 134), 594 artifacts (pinned 594), lag 0
site from to
ANCHOR_TAG + claims.yaml mirror v0.83.0 v0.84.0
ANCHOR_PROGRAMME + mirror 580 594
ANCHOR_DELIVERY + mirror 134 134 (unchanged)

Two measurements worth recording, because both are this release's theme appearing
inside the move itself:

1. Two globs, two correct answers. programme-status: prints 611 artifacts
across 287 files while the anchor line prints 594 in the tree at the tag. The
count was read off the anchor line — the one the pin is actually about. Taking it
from programme-status: would have pinned a figure measured over a different
population.

2. ANCHOR_DELIVERY stayed 134, and the reason refutes the model this loop was
carrying.
The carried note described the count as being of "ID-LEADING delivery
subjects", which predicts 135: v0.84's window contains
v0.84 FIRSTTOKEN3 (#1476): …, from which the lane gate does derive the id
RQ-84-FIRSTTOKEN3. But anchor_delivery_count matches ARTIFACT_ID, which is
^(RQ-\d+-[A-Z0-9]+)\b and requires the subject to begin literally with
RQ-NN-. It matches none of v0.84's five subjects. So two patterns read the same
commit subject and disagree about whether it is a delivery commit, and the looser
phrase would have produced a wrong pin. Positive control: ARTIFACT_ID does
match RQ-67-VFPREACH (#1267).

The four patterns that must not move by construction were asserted unchanged:
PROGRAMME_DELETED_SINCE_ANCHOR = 0 (a constant that resets at every anchor), the
elif [dp] != … code shape, the derived floor expressions, and the
version-agnostic CI grep status-evidence-anchor: v[0-9]. ANCHOR_DELIVERY is
deliberately not treated as a fifth — it is value-bearing and merely has not
moved, and treating it as immovable would mean never updating a pinned count that
is overdue to change.

Scope

MUST — the external and externally-relayed defects, plus the two machinery
lanes whose remedies v0.84 measured but did not ship:
FALCON2, MEMLAYER2, JESSDIVERGE7, WIDEFILE8, NOTESPOP2, TWOSOURCE2.
Refs #1318, #1145, #1436, #1439, #1259, #1183.

FALCON2 is new to the plan on the maintainer's explicit direction. It is the
reporter's own still-open blocker, and the loop carried it two releases with no
work on it at all — not even oracle hardening, so the conduct rule about
oracle-only progress does not even apply, which is a worse position than if it
did. Its last acceptance reading predates two releases, so the lane re-measures
before scoping. The two sibling-repo defects filed beside it are not synth
codegen, and the maintainer directed staying synth-side.

SHOULD — SELFTEST and PROVENANCE are new, both produced by v0.84's cold
review: a self-test that advertises potency against real repository history and
stays green with the capability it tests removed, and a figure pinned to a
pre-squash lane head that is not an ancestor of the default branch — which squash
merging guarantees for every lane head. Then DISPVOCAB2, PINDEBT10,
RUNNERSHAPE2, NOSHOW3, ARCHMODEL4, FIRSTTOKEN4, NPM4, COMPLIANCE5, LADDER7.
Refs #1458, #1428, #1451, #1484, #1136, #1476, #1460, #1453, #1432.

NOSHOW3's deliverable is a decision, not another measurement: an empty derived
population is a refusal by this programme's own rule, so measuring the same
emptiness a third time is the instrument reporting that it cannot answer. NPM4,
COMPLIANCE5 and LADDER7 are blocked outside this repository and must report
blocked rather than re-measure an unchanged external blocker as progress.

A gate defect this plan tripped over, measured

As first written, SELFTEST shared issue: "#1476" with FIRSTTOKEN4 and
PROVENANCE shared issue: "#1183" with TWOSOURCE2. That is not a cosmetic
duplication. authorised_close_set returns a dict keyed by issue number and
fills it with target.setdefault(num, art_id), so two artifacts naming one issue
collapse to a single entry silently, and which one survives depends on
iteration order. Demonstrated with a paired control and an order reversal:

input result
two artifacts, same issue {1476: RQ-85-SELFTEST} — 1 entry from 2 artifacts
two artifacts, distinct issues {9001: …, 1476: …} — 2 entries (control)
same issue, order reversed {1476: RQ-85-FIRSTTOKEN4} — survivor flips

So two of the seventeen lanes would have been invisible to the closure gate at
release time, while every gate stayed green now, because proposed with no
disposition disarms both of the rules that would notice.

It is also this release's own theme, in the PR that plans it: issue: names
where the analysis lives, and a self-test-potency finding's analysis does not
live in the escape-detector issue. So SELFTEST and PROVENANCE got their own
issues, #1515 and #1516, and every v0.85 artifact now maps to a distinct issue —
asserted mechanically: 17 artifacts, 17 issues, zero duplicates.

Gates at this commit

  • rivet validate — PASS
  • scripts/status_evidence_check.py — rc=0, anchor line above
  • scripts/claim_check.py claims.yaml — 75/75 claims hold
  • scripts/verdict_prose_check.py — 109 artifacts, 0 disagree with their own fields
  • _release.yaml no-statistics scan — 0 bare numerals after version scrub, with a
    positive control that detects a planted figure
  • closer-keyword scan on the commit message — 0 hits, positive control passing
  • distinct-issue assertion over the v0.85 set — 17 artifacts, 17 issues, 0 duplicates

🤖 Generated with Claude Code

https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L

…or moved to v0.84.0

THEME — "A correction is an unreviewed claim." This theme is EARNED rather than
asserted, and it is the only property this programme has measured identically in
two consecutive releases: each of the last two cold reviews found twelve false
statements, and in each case nine of the twelve were introduced by the loop's own
corrections and addenda rather than by the original work.

v0.84 also produced the MIRROR of v0.83's sharpest instance. v0.83 found a
correction that replaced a PREFIX and left the original TAIL re-asserting the
error; v0.84 produced a splice that replaced a SUFFIX and broke the HEAD it left
behind. A splice must be read against BOTH sides it leaves behind.

v0.84's theme is CARRIED FORWARD as a standing obligation, because it kept firing
after it was named — including inside the loop's own most-repeated check, where a
standing derivation about an external reporter was scoped to one repository,
re-derived its bounded-complete answer correctly every tick for a whole release,
and was blind to open threads the same reporter had filed in two sibling repos.

THE ANCHOR MOVE, with both counts READ OFF the gate's own printed line rather
than computed:

  ANCHOR_TAG        v0.83.0 -> v0.84.0
  ANCHOR_PROGRAMME  580     -> 594
  ANCHOR_DELIVERY   134     -> 134   (unchanged; see below)

and their three mirrors in the claims.yaml anchor entry. The gate prints
`v0.84.0 - 134 delivery commits (pinned 134), 594 artifacts (pinned 594), lag 0`.

TWO MEASUREMENTS WORTH RECORDING, because both are this release's theme appearing
inside the move itself:

(1) `programme-status:` prints 611 artifacts across 287 files while the anchor
    line prints 594 in the tree at the tag. Two different globs, two correct
    answers. The count was read off the anchor line, which is the one the pin is
    about; taking it from `programme-status:` would have pinned a number measured
    over a different population.

(2) ANCHOR_DELIVERY STAYED 134, AND THE REASON REFUTES THE MODEL THIS LOOP
    CARRIED. The carried note described the count as being of "ID-LEADING
    delivery subjects", which predicted 135 — v0.84's window contains
    `v0.84 FIRSTTOKEN3 (#1476): ...`, from which the lane gate DOES derive the
    artifact id RQ-84-FIRSTTOKEN3. But `anchor_delivery_count` matches
    `ARTIFACT_ID`, which is `^(RQ-\d+-[A-Z0-9]+)\b` and requires the subject to
    begin LITERALLY with `RQ-NN-`. It matches none of v0.84's five subjects.
    So two patterns read the same commit subject and disagree about whether it is
    a delivery commit, and the looser phrase in the carried derivation would have
    produced a wrong pin. Verified with a positive control: `ARTIFACT_ID` does
    match `RQ-67-VFPREACH (#1267)`.

The four patterns in the anchor entry that must not move BY CONSTRUCTION were
asserted unchanged: `PROGRAMME_DELETED_SINCE_ANCHOR = 0` (a constant that resets
at every anchor), the `elif [dp] != ...` code shape, the derived floor
expressions, and the version-AGNOSTIC CI grep `status-evidence-anchor: v[0-9]`.
ANCHOR_DELIVERY is deliberately NOT treated as a fifth: it is value-bearing and
merely has not moved, and treating it as immovable would mean never updating a
pinned count that is overdue to change.

SCOPE. Every artifact carries a REFUTING COMMAND to be RUN BEFORE the artifact is
built on, and a refutation is a legitimate outcome reported with numbers.

MUST — the external and externally-relayed defects, plus the two machinery lanes
whose remedies v0.84 measured but did not ship: FALCON2 (#1318), MEMLAYER2
(#1145), JESSDIVERGE7 (#1436), WIDEFILE8 (#1439), NOTESPOP2 (#1259), TWOSOURCE2
(#1183). Refs #1318, #1145, #1436, #1439, #1259, #1183.

FALCON2 is new to the plan ON THE MAINTAINER'S EXPLICIT DIRECTION. It is the
reporter's own still-open blocker and the loop carried it two releases with no
work on it at all — not even oracle hardening, so the conduct rule about
oracle-only progress does not even apply, which is a worse position than if it
did. Its last acceptance reading predates two releases and the lane must
re-measure before scoping. The two sibling-repo defects filed beside it are not
synth codegen and the maintainer directed staying synth-side.

SHOULD: SELFTEST and PROVENANCE are NEW, both produced by v0.84's cold review —
a self-test that advertises potency against real history and stays green with the
capability it tests REMOVED, and a figure pinned to a pre-squash lane head that is
not an ancestor of the default branch, which squash merging guarantees for every
lane head. Then DISPVOCAB2 (#1458), PINDEBT10 (#1428), RUNNERSHAPE2 (#1451),
NOSHOW3 (#1484), ARCHMODEL4 (#1136), FIRSTTOKEN4 (#1476), NPM4 (#1460),
COMPLIANCE5 (#1453), LADDER7 (#1432). Refs #1458, #1428, #1451, #1484, #1136,
#1476, #1460, #1453, #1432.

NOSHOW3's deliverable is a DECISION rather than another measurement: an empty
derived population is a refusal by this programme's own rule, and measuring the
same emptiness a third time is the instrument reporting that it cannot answer.
NPM4, COMPLIANCE5 and LADDER7 are blocked OUTSIDE this repository and must report
blocked rather than re-measure an unchanged external blocker as progress.

`_release.yaml` is COMMENTS ONLY and carries no statistics, verified by a scan
that scrubs version strings and whose positive control detects a planted figure.

SELFTEST and PROVENANCE GET THEIR OWN ISSUES (#1515, #1516), and the reason is
a MEASURED gate defect rather than tidiness. `authorised_close_set` returns a
dict keyed by ISSUE NUMBER and fills it with `target.setdefault(num, art_id)`,
so two artifacts naming the same issue COLLAPSE TO ONE ENTRY SILENTLY and the
survivor depends on iteration order. Demonstrated with a paired control:

  two artifacts, same issue  -> {1476: RQ-85-SELFTEST}       1 entry
  two artifacts, distinct    -> {9001: ..., 1476: ...}       2 entries  (control)
  same issue, order reversed -> {1476: RQ-85-FIRSTTOKEN4}    survivor flips

As first written, this plan had SELFTEST sharing #1476 with FIRSTTOKEN4 and
PROVENANCE sharing #1183 with TWOSOURCE2, so two of the seventeen lanes would
have been invisible to the closure gate at release time — while the gate stayed
green now, because `proposed` with no disposition disarms both of its rules.

It is also the release's own theme: `issue:` names WHERE THE ANALYSIS LIVES, and
a self-test-potency finding's analysis does not live in the escape-detector
issue, nor an unreachable-commit finding's in the two-source-gate issue. Every
v0.85 artifact now maps to a DISTINCT issue, asserted: 17 artifacts, 17 issues,
zero duplicates.

Gates at this commit: rivet validate PASS; status_evidence_check rc=0;
claim_check 75/75; verdict_prose 109 artifacts, 0 disagreements.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
@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
avrabe merged commit 455c9ae into main Oct 9, 2026
73 of 74 checks passed
@avrabe
avrabe deleted the lane/v0.85-plan branch October 9, 2026 20:11
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