I3070 — release.currency measures the landed work past the last release, and the brief and doctor say when it waits
Declare release.currency with capability! in the release module. It answers the last release (the release record the layer holds, or the newest v* tag the trunk contains when that tag is newer), the landed commits on the trunk past it (release commits and merges left out), when the oldest of them landed, and the version the public contract requires for them (release::version::select), decided only from a recorded release in a checkout at the trunk. The stance is current when nothing has landed past the release, owed when work has, and overdue once the oldest of it has waited longer than six hours, the threshold stated beside its declaration. The brief shows a release line and section, doctor warns on owed and on overdue, and project.land-and-publish names case 3470 as its proof. It is a runtime read only and never enters committed site data.
READY wave 0 · p1 · implementation profile · runs alone
Ready. Every dependency is done, so majordomus plan start I3070 will be accepted.
Objective
Declare release.currency with capability! in the release module. It answers the last release (the release record the layer holds, or the newest v* tag the trunk contains when that tag is newer), the landed commits on the trunk past it (release commits and merges left out), when the oldest of them landed, and the version the public contract requires for them (release::version::select), decided only from a recorded release in a checkout at the trunk. The stance is current when nothing has landed past the release, owed when work has, and overdue once the oldest of it has waited longer than six hours, the threshold stated beside its declaration. The brief shows a release line and section, doctor warns on owed and on overdue, and project.land-and-publish names case 3470 as its proof. It is a runtime read only and never enters committed site data.
Why
The owner wants a new measured version after every session and milestone, enforced. The cooperation model's rule that the release seat releases whenever master holds landed work past the last tag is measured nowhere. Master held landed work past v0.30.0 for hours while every surface stayed green.
Current state
release.version reports the last release and the commits since it as evidence, and says nothing about how long they have waited. Nothing in the brief, doctor or finish asks.
Desired state
A session's brief and doctor say how much landed work waits for a release, since when and at which version. The release seat can see the debt without reading git.
Scope
- apps/majordomus-cli/src/release/currency.rs
- apps/majordomus-cli/src/release/compat.rs
- apps/majordomus-cli/src/cockpit/pages.rs
- docs/BRIEF.md
- .ai/repo/project/intents/a-version-follows-every-session.yaml
- apps/majordomus-cli/src/release/mod.rs
- apps/majordomus-cli/src/capability/builtin/release.rs
- apps/majordomus-cli/src/capability/builtin/brief.rs
- lib/doctor.sh
- .ai/repo/rules/project/land-and-publish.v1.md
- docs/RELEASE.md
- test/cases/3470_the_release_follows_the_work.sh
Dependencies
None. This issue is a root of the graph.
What waits on this
- I3071BLOCKED /ui/delivery shows how much landed work waits for a release, and since when
- I3072BLOCKED A task holding the release seat does not finish completed while landed work has waited past the threshold
- I3076BLOCKED The landing clock's first source is measured, a fresh clone's wait is a labelled bound, and case 3470 shows a decided version
Acceptance criteria
- In a repository with a release record and commits landed after it, release.currency names the release, the landed commits past it without the bump and record commits, the oldest one's landing time and the required version; with nothing landed past it, it says current
- The brief has a release line saying owed or overdue with the count and the age, and doctor warns accordingly
- A pushed v* tag newer than the last record counts as the last release
- The oldest landing is dated by when this clone's remote-tracking trunk first held it, from that ref's reflog, so a top composed hours before it landed waits from its landing; where the reflog does not show it arrive, its commit time bounds the wait from above, the answer says so, and that bound alone never makes the stance overdue (the plan critique of 2026-10-19)
Validation
- bin/majordomus plan validate
- bash test/run.sh 3470_the_release_follows_the_work
Evidence required
- case_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/I3070.yaml. Read it back with majordomus plan show I3070.