I3208 — Whether a commit may be released is one read that names each condition and the evidence that settles it
Add release.readiness to the release capability: for a commit and a candidate version, decide what release.yml's plan and verdict phases, the version gate and the base branch's ci verdict decide, and answer ready, not ready with the failing condition, or unknown with what could not be read, including the surface fingerprint the record will publish; release.yml's plan and verdict phases then call it, so one implementation decides both. The install job is the after-tag half and is named as not readable before a tag.
BLOKOVÁNO vlna 0 · p1 · profil implementation · bezpečné souběžně
Blocked. This issue cannot start until milestone:a-release-is-proven-end-to-end is done. The status is derived from that, not declared.
Cíl
Add release.readiness to the release capability: for a commit and a candidate version, decide what release.yml's plan and verdict phases, the version gate and the base branch's ci verdict decide, and answer ready, not ready with the failing condition, or unknown with what could not be read, including the surface fingerprint the record will publish; release.yml's plan and verdict phases then call it, so one implementation decides both. The install job is the after-tag half and is named as not readable before a tag.
Proč
The owner set the alpha for 2026-10-19 with GO only on current master, green CI and real install tests, not an automatic GO (c281#2). Audits asked for a single derived readiness authority shown on CLI, UI and Pages (c283#2) and a machine-evaluated definition of done for a stage (c258#2). Today each condition lives in a different script and is first combined when a tag is pushed. Sources: chatgpt-majordomus:c111#6, chatgpt-majordomus:c238#2, chatgpt-majordomus:c258#2, chatgpt-majordomus:c283#2, chatgpt-majordomus:c089#1.
Aktuální stav
release.yml plan runs scripts/release-version --check; verdict runs scripts/ci/release-verdict on the tagged commit; distribution.status judges model, version, release, artifacts, metadata, public; release/compat.rs computes the surface fingerprint the record carries. No read answers before a tag whether the tag would pass.
Cílový stav
majordomus release readiness <sha> (and its HTTP and MCP projections) returns each condition with its evidence and age, read from the same functions the release path runs, so the workflow and the read cannot disagree; a condition that cannot be read is unknown and the answer is not ready.
Rozsah
- apps/majordomus-cli/src/release
- apps/majordomus-cli/src/capability/builtin/release.rs
- docs/RELEASE.md
- .github/workflows/release.yml
- .ai/repo/ci/release.yaml
- scripts/release-version
- scripts/ci/release-verdict
- apps/majordomus-cli/src/ui/delivery.rs
- apps/majordomus-cli/src/commands/release.rs
- site/content/docs/cli/release
- site/content/docs/release.md
Mimo rozsah
- Tagging or publishing
- A second release engine; the read composes what exists
- Starting before the alpha top (0.30.0) and I2829 land on release.yml and scripts/site-deploy
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- A commit with a red or missing ci verdict is not ready and the verdict is named
- A candidate version below what the contract requires is not ready and both versions are named
- The read and the release workflow's plan and verdict phases share their implementation
- release.yml's plan and verdict phases call majordomus release readiness, and scripts/release-version --check and scripts/ci/release-verdict become thin callers of it; no condition is implemented twice
- The install job is the after-tag half of the proof: readiness names it as not readable before a tag and never reports it as passed
- The trunk's red state is the ci verdict of the base branch's head, read by the same function as the candidate commit's verdict; I2709's carrier is not a readiness condition
- The release screen under /ui shows the readiness read from the same capability
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib release::
- majordomus plan validate
Požadované důkazy
- case_release_readiness_is_one_read
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3208.yaml. Read it back with majordomus plan show I3208.