Skip to content

delivery-flow-is-measured — The way from a pull request to a verified publication is measured per phase, and its bounds are read where work starts

Queue time, run time and lead time per phase are derived readings; the backlog bound is policy and the brief says when it is passed; finish names the pull request it hands on; budgets exist per phase without turning runner wall time into a correctness gate.

BLOCKED 0 of 6 issues done

ready
0
blocked
6
active
0
verify
0
done
0
cancelled
0

Problem

Between 2026-09-10 and 2026-10-18 the owner asked more than a dozen times for faster turnaround and an empty backlog, and every audit reconstructed queue waits and lead times by hand from run timestamps. The repository measures CI run durations and merges per day, but not the wait before a run starts, not what happens after a merge, and its backlog bound is an environment default of one script. Proposed in ADR 0196 (Delivery latency targets are budgets of benchmark policy, measured per phase, and never a correctness gate on runners the repository does not own); ADR 0197 (The backlog is bounded by a declared bound that every session reads at start, and the bound reports rather than refuses); ADR 0198 (Delivery is judged by verified outcomes landed per day, with lead time p95 as its control, never by commits, pull requests or sessions) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c199#14, chatgpt-majordomus:c255#7, chatgpt-majordomus:c204#2, chatgpt-majordomus:c216#6, chatgpt-majordomus:c238#2, chatgpt-majordomus:c280#2, chatgpt-majordomus:c287#2, chatgpt-majordomus:c295#7, chatgpt-majordomus:c112#3, chatgpt-majordomus:c207#6, chatgpt-majordomus:c209#3.

Outcome

Queue time, run time and lead time per phase are derived readings; the backlog bound is policy and the brief says when it is passed; finish names the pull request it hands on; budgets exist per phase without turning runner wall time into a correctness gate.

Current state

Verified on master 707a04c7ce8: integration.timings measures started-to-completed only (timings.rs); I2474 draws merges per day; scripts/ci/backlog-check reads MJ_BACKLOG_MAX (default 10); brief.rs reports prs brief without a bound; lib/finish.sh names no pull request. I2946 (board on 2026-10-18, p7, not on master) measures throughput from prs and ci-timings.

Desired state

One measured flow from opened to served-verified, read by the drain screen, the brief, CLI, HTTP and MCP from the same capabilities, with unmeasured phases said as unmeasured.

Scope

  • apps/majordomus-cli/src/integration
  • apps/majordomus-cli/src/capability/builtin/brief.rs
  • apps/majordomus-cli/src/bench
  • lib/finish.sh
  • .ai/repo/policy.yaml
  • scripts/ci/backlog-check
  • docs/INTEGRATION.md
  • docs/CI.md

Out of scope

  • A second metrics store
  • Refusing work on a bound
  • Weakening any gate

Acceptance criteria

  • Each phase reading carries its sample size and observation time
  • The backlog bound is declared once and read by the brief and backlog-check
  • No figure on a surface is typed beside the repository

Validation

  • majordomus plan validate

Risks

  • I2946 (on the board on 2026-10-18) touches the same metrics module; I3203 overlaps it and does not wait for it
  • GitHub's API returns at most 100 runs per page; windows must paginate

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
I3202 BLOCKED 0 — CI timings measure the wait before a run starts beside the run, and count what cancelled runs spent
I3203 BLOCKED 1 I3202, I2740 Delivery lead time is measured per phase, from a pull request's opening to its verified publication
I3204 BLOCKED 0 — The backlog's bound is declared once in policy, and every session brief says when the landable backlog is past it
I3205 BLOCKED 0 — A pull request's change is split into canonical, derived and incidental paths, and the drain shows each
I3206 BLOCKED 2 I3202, I3203 The delivery phases have budgets in benchmark policy, and a phase over its budget is a finding with its trend
I3207 BLOCKED 0 — A finished task names the pull request that carries its branch and that pull request's disposition

The graph

delivery-flow-is-measured dependency graphfrom .ai/repo/project
flowchart LR
    I3202["I3202<br/>CI timings measure the wait before a run starts beside the run, and count what cancelled runs spent"]:::blocked
    I3203["I3203<br/>Delivery lead time is measured per phase, from a pull request's opening to its verified publication"]:::blocked
    I3204["I3204<br/>The backlog's bound is declared once in policy, and every session brief says when the landable backlog is past it"]:::blocked
    I3205["I3205<br/>A pull request's change is split into canonical, derived and incidental paths, and the drain shows each"]:::blocked
    I3206["I3206<br/>The delivery phases have budgets in benchmark policy, and a phase over its budget is a finding with its trend"]:::blocked
    I3207["I3207<br/>A finished task names the pull request that carries its branch and that pull request's disposition"]:::blocked
    I3202 --> I3203
    I3202 --> I3206
    I3203 --> I3206
    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/delivery-flow-is-measured.yaml. Read it back with majordomus plan show delivery-flow-is-measured.

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