A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live
I2740
An issue's delivery is inferred from branches, pull requests, merges, tags and the published site
Where it stands
devtask.issue- Readiness
- ready no dependency and no gate holds it; nobody has started it
- Status
- READY
- Can start
- startable
- Milestone
- Milestone status
- ACTIVE
- Wave
0- Waiting on
- none
- Holds back
- Behind it in all
4- Evidence
0of2
Moves
plan.transitionWhat it is
- Objective
- Add the capability plan.delivery (CLI majordomus plan delivery [--json] [<id>], HTTP and MCP from the one capability declaration) that answers, for every issue, the furthest stage of none, branch, pr_open, merged, released, deployed, each with the object that proved it and when it was observed, and expose it in the site data the plan pages read.
- Why
- ADR 0166. Status is derived from stamps only (lib/project.awk:156-170, plan.rs derive); trace.issue, delivery.report and github-sync each read a part of the truth and nothing joins them. I2653 was merged whole by #1097 and still reads READY.
- Now
- trace.issue (capability/builtin/trace.rs, worktree/trace.rs) gives an issue's branches and merged commits; the served forge cache holds pull requests and releases; nothing answers a stage per issue.
- Wanted
- plan.delivery reuses trace.issue for branches and merges, the issue edge of I1405 for pull requests named by title, branch or trailer, the served forge cache for open pull requests (unread forge reported as unread, never as none), git tag --contains for the first v* tag, and the published latest.json for deployed; scripts/generate-site-data writes site/data/generated/delivery.json from it.
- Done when
- unknown: the record declares no `completion`
- Risk
- unknown: the record declares no `risk`
Acceptance
- An issue named by a merged pull request in a fixture repository reads merged with the merge commit, and released once a v* tag contains it
- An issue with only an open pull request reads pr_open with its number; with an unread forge the answer says unread
- The capability is declared once and reaches CLI, HTTP and MCP through majordomus generate
- site/data/generated/delivery.json is produced by the executable and checked by generate-site-data --check
- Validation
cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test plan_deliverybash test/run.sh 3100_an_issue_delivery_is_inferred- Evidence required
delivery_stage_casemutations_fail_the_case- Evidence present
- unknown: the record carries no `evidence` entries
Scope
- Touches
apps/majordomus-cli/src/capability/builtin/plan.rsapps/majordomus-cli/src/planapps/majordomus-cli/src/plan.rsapps/majordomus-cli/tests/plan_delivery.rsscripts/generate-site-datasite/data/generated/delivery.jsondocs/PLANNING.mddocs/generatedtest/cases/3100_an_issue_delivery_is_inferred.sh- Not
- unknown: the record declares no `non_scope`
- Depends on
- none
- Priority
- p0
- Profile
- implementation
- Parallel safe
- true
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-10-16
- Updated
- 2026-10-16
- Started
- unknown: the record declares no `started_at`
- Verified
- unknown: the record declares no `verified_at`
- Completed
- unknown: the record declares no `completed_at`
Synchronisation
- Adapter
scripts/github-sync- Repository
- unknown: the derived plan's header carries no repository
- External issue
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
- State there
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
Findings
| Level | Code | Message | Reproduce |
|---|---|---|---|
| WARN | scope_conflict | shares apps/majordomus-cli/src/plan.rs with I2742; they may not run concurrently | majordomus plan validate |