I3076 — The landing clock's first source is measured, a fresh clone's wait is a labelled bound, and case 3470 shows a decided version
Keep this clone's reflog of the trunk as release.currency's first source, and read no forge record. docs/RELEASE.md states why, with the measurement of 2026-10-21. prs refresh, which the executor runs before every decision, never lists merged pull requests (forge.rs and tests/integration_merged_branches.rs hold it). Reading them would cost 1.11 s on every observation. This clone's reflog saw each of the last four landings 12 to 94 s after the forge's mergedAt, against a six-hour threshold. docs/RELEASE.md also says what a fresh clone reads. git clone writes no reflog for the remote-tracking trunk, so the commit time is the only reading. It is given as landed_at commit and a wait of at most the commit's age, never a zero. Case 3470 gains two steps. In one, a fresh clone of the origin reads that labelled bound, while the clone it came from reads its reflog. In the other, over a recorded release whose commit carries the registry it published, as case 743's fixture does, the version release.currency decides equals what release version answers there.
BLOCKED wave 1 · p2 · implementation profile · runs alone
Blocked. This issue cannot start until I3070 is done. The status is derived from that, not declared.
Objective
Keep this clone's reflog of the trunk as release.currency's first source, and read no forge record. docs/RELEASE.md states why, with the measurement of 2026-10-21. prs refresh, which the executor runs before every decision, never lists merged pull requests (forge.rs and tests/integration_merged_branches.rs hold it). Reading them would cost 1.11 s on every observation. This clone's reflog saw each of the last four landings 12 to 94 s after the forge's mergedAt, against a six-hour threshold. docs/RELEASE.md also says what a fresh clone reads. git clone writes no reflog for the remote-tracking trunk, so the commit time is the only reading. It is given as landed_at commit and a wait of at most the commit's age, never a zero. Case 3470 gains two steps. In one, a fresh clone of the origin reads that labelled bound, while the clone it came from reads its reflog. In the other, over a recorded release whose commit carries the registry it published, as case 743's fixture does, the version release.currency decides equals what release version answers there.
Why
The plan critique of a-version-follows-every-session (2026-10-19) found the landing clock wrong, and the release seat (9c) asked for the forge's landing time first. Built as first planned, that read would have broken an invariant a test holds, slowed the executor's every observation and gained about a minute. It was weighed on 2026-10-21 (ADR 0098), and the release seat agreed. The seat asked that a fresh clone's reading, an upper bound, be stated and shown. The critique's finding no-case-shows-a-version-decided was still open.
Current state
release.currency dates the oldest landing by this clone's reflog, else by its commit time as an upper bound. docs/RELEASE.md says a forge read is planned. Case 3470 removes the reflog to show the bound, no step reads a fresh clone, and none shows a version decided.
Desired state
docs/RELEASE.md says why the reflog is the first source, with the measurement, and what a fresh clone reads. Case 3470 shows a fresh clone's labelled bound beside the reflog's reading, and a version decided over a committed registry equal to release version's.
Scope
- .ai/repo/project/issues/I3076.yaml
- docs/RELEASE.md
- test/cases/3470_the_release_follows_the_work.sh
Out of scope
- Reading the forge in release.currency or in prs refresh
Dependencies
What waits on this
Acceptance criteria
- docs/RELEASE.md states the measured reason the forge is not read, and what a fresh clone's answer is
- Case 3470 shows a fresh clone of the origin answering landed_at commit with an at-most wait no shorter than the commit's age, while the clone it came from answers by its reflog
- Case 3470 shows a version decided over a committed registry at the trunk, equal to release version's next
Validation
- bin/majordomus plan validate
- bash test/run.sh 3470_the_release_follows_the_work
Evidence required
- case_the_release_follows_the_work
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I3076.yaml. Read it back with majordomus plan show I3076.