I3267 — One read-only evaluator says what accepting an issue would unblock, from plan.next's own readiness rules
Add plan.impact: for hypothetical accepted issues, return direct and transitive dependents, immediate unlocks (issues that become READY), remaining blockers, milestone state changes and wave changes, with the graph fingerprint and source commit, computed by applying the readiness function of plan.rs to a copy of the plan.
PŘIPRAVENO vlna 0 · p1 · profil deep-work · bezpečné paralelně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3267 bude přijato.
Cíl
Add plan.impact: for hypothetical accepted issues, return direct and transitive dependents, immediate unlocks (issues that become READY), remaining blockers, milestone state changes and wave changes, with the graph fingerprint and source commit, computed by applying the readiness function of plan.rs to a copy of the plan.
Proč
Owner order 2026-10-17; the number of downstream dependants is not the number newly unblocked (an issue with two prerequisites is not READY after one). /proceed's ranking (I2973) needs the same count and must not grow a second one. On 2026-10-18 f6 settled the overlap on the mesh: I2973 owns the derivation of what a fix unblocks, Plan::unblocks in plan.rs, and orders READY issues by it in plan.rs and lib/project.sh together (case 99); this evaluator projects that one function over CLI, MCP and the snapshot. It waits on in-flight work not yet on master: I2973. 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.
Aktuální stav
plan.rs computes readiness, waves and the active milestone; nothing counts what an issue unblocks (no 'unblock' term in plan.rs or capability/builtin/plan.rs).
Cílový stav
One pure function, exposed on CLI, MCP and HTTP, consumed by I2973 and the Pages page.
Rozsah
- apps/majordomus-cli/src/plan.rs
- apps/majordomus-cli/src/capability/builtin/plan.rs
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
- I3268BLOCKED The published plan has an impact page whose graph and sortable table agree and name the commit they were read at
- I3269BLOCKED Accepting several issues at once is previewed on the original graph, with shared unlocks counted once
Kritéria přijetí
- Chain, diamond, multi-prerequisite, already-READY and zero-unlock cases are tested
- Property: no write, order-independent, no duplicate unlock
- A cyclic or dangling graph fails plan validate before the evaluator runs
- plan.impact's count of what an issue unblocks is Plan::unblocks, the function I2973 adds to plan.rs (distinct unfinished transitive dependents, each counted once); the evaluator is its read-only projection and computes no second count
Validace
- majordomus plan validate
- majordomus intent validate
Požadované důkazy
- test_what_a_fix_unblocks_is_derived
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/I3267.yaml. Read it back with majordomus plan show I3267.