Skip to content

a-version-follows-the-work — Landed work is released as a measured version, and how long it has waited is a finding

One capability, release.currency, answers how much landed work the trunk holds past the last release, since when, and which version the contract requires for it. The brief, doctor and /ui/delivery read it. A task holding the release seat cannot finish completed once that work has waited past its threshold. project.land-and-publish names the capability's case as its proof.

PLANNED 0 of 4 issues done

ready
1
blocked
3
active
0
verify
0
done
0
cancelled
0

Problem

The owner's order of 2026-10-19 is a new measured version of majordomus.dev after every session and every milestone, as often as possible, enforced. The cooperation model already says the release seat releases whenever master holds landed work past the last tag (project.the-cooperation-model-is-the-owners-word, rule 4), and the version is measured from the public contract (ADR 0051). Nothing measures that rule, though. Master can hold a day of landed work past the last release while every check, the brief, doctor and the delivery screen stay green. publication-currency asks whether the site serves the trunk, not whether the trunk was released.

Outcome

One capability, release.currency, answers how much landed work the trunk holds past the last release, since when, and which version the contract requires for it. The brief, doctor and /ui/delivery read it. A task holding the release seat cannot finish completed once that work has waited past its threshold. project.land-and-publish names the capability's case as its proof.

Scope

  • apps/majordomus-cli/src/release
  • apps/majordomus-cli/src/capability/builtin/release.rs
  • apps/majordomus-cli/src/capability/builtin/brief.rs
  • apps/majordomus-cli/src/ui/delivery.rs
  • lib/doctor.sh
  • .ai/repo/rules/project/land-and-publish.v1.md
  • docs/RELEASE.md

Out of scope

  • Cutting releases: that stays the release seat's act, through the pipeline it already runs
  • Committing the answer into site data: it reads refs, and committed derived data must not

Acceptance criteria

  • release.currency answers the last release, the landed commits past it with the oldest one's age, and the version the contract requires, on the command line, HTTP and MCP
  • The brief and doctor warn once landed work is past the last release and warn harder past the threshold; /ui/delivery shows the same answer
  • finish refuses completed to a task holding the release seat while landed work has waited past the threshold, and counts a pushed tag whose release run is in progress as released

Validation

  • bin/majordomus plan validate
  • bash test/run.sh 3470_the_release_follows_the_work

Issues

Each one is an execution contract with its own acceptance criteria, validation command and required evidence. The wave column is the layer of the dependency graph it sits in.

issuestatuswavedepends ontitle
I3070 READY 0 — release.currency measures the landed work past the last release, and the brief and doctor say when it waits
I3071 BLOCKED 1 I3070 /ui/delivery shows how much landed work waits for a release, and since when
I3072 BLOCKED 1 I3070 A task holding the release seat does not finish completed while landed work has waited past the threshold
I3076 BLOCKED 1 I3070 The landing clock's first source is measured, a fresh clone's wait is a labelled bound, and case 3470 shows a decided version

The graph

a-version-follows-the-work dependency graphfrom .ai/repo/project
flowchart LR
    I3070["I3070<br/>release.currency measures the landed work past the last release, and the brief and doctor say when it waits"]:::ready
    I3071["I3071<br/>/ui/delivery shows how much landed work waits for a release, and since when"]:::blocked
    I3072["I3072<br/>A task holding the release seat does not finish completed while landed work has waited past the threshold"]:::blocked
    I3076["I3076<br/>The landing clock's first source is measured, a fresh clone's wait is a labelled bound, and case 3470 shows a decided version"]:::blocked
    I3070 --> I3071
    I3070 --> I3072
    I3070 --> I3076
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Canonical record: .ai/repo/project/milestones/a-version-follows-the-work.yaml. Read it back with majordomus plan show a-version-follows-the-work.

Searches the titles and descriptions of every page this site publishes.