Skip to content

the-plan-says-what-a-fix-unblocks — The plan says what finishing an issue unblocks, and why each blocked issue is blocked

One counterfactual evaluator (plan.impact), a published impact page, set preview and blocked classes, all from plan.rs's readiness rules.

PLANNED 0 of 4 issues done

ready
2
blocked
2
active
0
verify
0
done
0
cancelled
0

Problem

Workers and the owner choose the next issue by hand; plan.next ignores what an issue unblocks; blocked issues are a single class. Proposed in ADR 0195 (What accepting an issue unblocks is answered by one counterfactual evaluator over the plan graph) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c284#5, chatgpt-majordomus:c259#6, chatgpt-majordomus:c284#3.

Outcome

One counterfactual evaluator (plan.impact), a published impact page, set preview and blocked classes, all from plan.rs's readiness rules.

Current state

plan.rs derives readiness, waves and now/next; nothing counts what an issue unblocks; I2973 (local branch, in flight) proposes a count inside proceed. No intent names this milestone on master: its intent the-plan-flows exists only on the unpushed local branch docs/the-plan-flows-is-an-intent, so until that branch lands and lists the milestone its issues are maintenance work that serves no criterion.

Desired state

plan.impact is the only unlock computation; proceed and the site read it.

Scope

  • apps/majordomus-cli/src/plan.rs
  • apps/majordomus-cli/src/capability/builtin/plan.rs
  • site/content/plan
  • site/graph.js

Out of scope

  • A second graph engine or library
  • A composite score

Acceptance criteria

  • CLI, MCP and the published page agree on every issue's immediate unlocks

Validation

  • majordomus plan validate

Risks

  • Collides with I2973's scope (plan.rs); agree with f6 that I2973 consumes plan.impact
  • Bound to no intent until the-plan-flows lands; intent validate warns milestone_serves_no_intent until then
  • It serves no intent yet: it is meant for intent the-plan-flows, which another session owns, and stays maintenance until that owner adds it (asked on the mesh on 2026-10-18).

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
I3267 READY 0 — One read-only evaluator says what accepting an issue would unblock, from plan.next's own readiness rules
I3268 BLOCKED 1 I3267 The published plan has an impact page whose graph and sortable table agree and name the commit they were read at
I3269 BLOCKED 1 I3267 Accepting several issues at once is previewed on the original graph, with shared unlocks counted once
I3270 READY 1 I2740 A blocked issue says which kind of block holds it: a dependency, contention, or a stale record

The graph

the-plan-says-what-a-fix-unblocks dependency graphfrom .ai/repo/project
flowchart LR
    I3267["I3267<br/>One read-only evaluator says what accepting an issue would unblock, from plan.next's own readiness rules"]:::ready
    I3268["I3268<br/>The published plan has an impact page whose graph and sortable table agree and name the commit they were read at"]:::blocked
    I3269["I3269<br/>Accepting several issues at once is previewed on the original graph, with shared unlocks counted once"]:::blocked
    I3270["I3270<br/>A blocked issue says which kind of block holds it: a dependency, contention, or a stale record"]:::ready
    I3267 --> I3268
    I3267 --> I3269
    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/the-plan-says-what-a-fix-unblocks.yaml. Read it back with majordomus plan show the-plan-says-what-a-fix-unblocks.

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