M001 — Blokující otázka přežije předávku
Nevyřešená otázka dál odmítá dokončený finish, i když se práce přesune na novou úlohu, nebo se alternativa zvolí záměrně a důvod se zaznamená tam, kde ho příští worker přečte.
HOTOVO 4 ze 4 úkolů hotovo
- připraveno
- 0
- blokováno
- 0
- aktivní
- 0
- verify
- 0
- hotovo
- 4
- zrušeno
- 0
Problém
Otevřená otázka je mechanismus, jak zastavit přijetí, když práce závisí na člověku. Je připojena k úloze, která ji otevřela, a kontrola čte jen otázky patřící aktivní úloze. Předání a zahájení nové úlohy proto nechá otázku nevyřešenou a nic už neblokuje, takže jediná věc, která měla odmítnout dokončený finish, neodmítne nic. Mezera byla nalezena spuštěním zdokumentované sekvence od začátku do konce, ne revizí, a je publikována jako plánované tvrzení bez implementace a bez testu.
Výsledek
Nevyřešená otázka dál odmítá dokončený finish, i když se práce přesune na novou úlohu, nebo se alternativa zvolí záměrně a důvod se zaznamená tam, kde ho příští worker přečte.
Aktuální stav
docs/CLAIMS.yaml nese blocker-survives-handover jako plánované, s implementací i testem '-'. lib/question.sh páruje nevyřešené řádky podle id aktivní úlohy; lib/check.sh čte jen ty. Nic nezjistí, že předávka osiřela blokátor.
Cílový stav
Chování se rozhodne mezi dvěma pojmenovanými alternativami, implementuje se, dokáže se behaviorálním případem a tvrzení se posune z plánovaného na zaručené s vyplněnou implementací a testem.
Rozsah
- lib/question.sh
- lib/check.sh
- share/skeleton/templates/open-questions.md
- docs/CLAIMS.yaml
- docs/claims
- docs/CONTINUITY.md
- test/cases
Mimo rozsah
- Otázka, která blokuje napříč repozitáři nebo worktrees
- Přiřazení otázky osobě nebo upozornění kohokoli
- Jakákoli změna ostatních řádků kontraktu finish
Kritéria přijetí
- Behaviorální případ předvádí současný únik, takže mezera je spustitelná, ne jen tvrzená
- Volba mezi přenesením otázky a rozšířením kontroly je zaznamenána jako rozhodnutí s tím, co bylo zamítnuto a proč
- Zvolené chování je implementováno a případ selže, když se odstraní
- Tvrzení v docs/CLAIMS.yaml přechází na guaranteed se skutečnou implementační cestou a skutečnou testovací cestou
- Stránka detailu tvrzení uvádí, co chování nepokrývá
Validace
- bash test/run.sh
- bin/majordomus doctor
- scripts/generate-site-data --check
Požadované důkazy
- gap_reproduced
- decision_recorded
- behaviour_tested
Rizika
- Přenesení otázky předávkou z ní dělá vlastnost práce, ne úlohy, což je správné v běžném případě a špatné, když je předávka určena jinému kusu práce. Rozšíření kontroly na každou nevyřešenou otázku blokuje úlohy, které žádnou neotevřely. Rozhodnutí musí pojmenovat případ, ve kterém se rozhodlo mýlit.
Důkazy
Milník není nikdy hotový tím, že jsou hotové jeho úkoly; poslední krok je jeho vlastní přijetí a podmiňují jej řádky níže.
| pokrývá | typ | command | výsledek |
|---|---|---|---|
| gap_reproduced | test | bash test/run.sh 50_blocker_across_handover | případ spustí zdokumentovanou sekvenci a sekce mutace reprodukuje únik ze sondy, která zúží kontrolu zpět na aktivní úlohu, takže mezera je spustitelná, ne jen popsaná |
| decision_recorded | ruční | bin/majordomus decision list | volba, obě zamítnuté alternativy s případem, který každá řeší špatně, a dvě podmínky, které volba uložila implementaci |
| behaviour_tested | test | bash test/run.sh 50_blocker_across_handover && bash test/run.sh 25_continuity_lifecycle && bin/majordomus doctor | exit 0, 85 s — zaznamenáno jako ověření této úlohy; zděděný blokátor odmítne dokončený finish, může ho vyčistit jakákoli úloha a dodávaná šablona není položka |
Úkoly
Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.
| issue | status | vlna | závisí na | název |
|---|---|---|---|---|
| I0101 | HOTOVO | 0 | — | Reprodukovat uniklou blokující překážku jako spustitelný případ |
| I0102 | HOTOVO | 1 | I0101 | Rozhodnout, zda se otázka přenáší, nebo se kontrola rozšiřuje |
| I0103 | HOTOVO | 2 | I0102 | Implementovat rozhodnutí a prokázat, že platí |
| I0104 | HOTOVO | 3 | I0103 | Posunout tvrzení z plánovaného na zaručené |
Graf
flowchart LR
I0101["I0101<br/>Reproduce the escaped blocker as an executable case"]:::done
I0102["I0102<br/>Decide whether a question transfers or the gate widens"]:::done
I0103["I0103<br/>Implement the decision and prove it holds"]:::done
I0104["I0104<br/>Move the claim from planned to guaranteed"]:::done
I0101 --> I0102
I0102 --> I0103
I0103 --> I0104
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:2pxKanonický záznam: .ai/repo/project/milestones/M001.yaml. Zpětně ho přečtete pomocí majordomus plan show M001.