a-finish-reads-the-criteria-its-work-serves — A finish reads what its work serves
The completion policy asks the intent engine what stands for the work a task named, refuses completed while a served criterion is unmet or a guard is violated where the policy says completed means complete, and decides nothing about any intent.
BLOKOVÁNO 0 of 1 issues done
- připraveno
- 0
- blokováno
- 1
- aktivní
- 0
- verify
- 0
- hotovo
- 0
- zrušeno
- 0
Problém
A task now starts bound to the issue and the intent it serves, and the intent engine says which criteria are met and which guards are violated. Finish asks neither. A worker can finish completed while the criterion the work exists for has no evidence.
Výsledek
The completion policy asks the intent engine what stands for the work a task named, refuses completed while a served criterion is unmet or a guard is violated where the policy says completed means complete, and decides nothing about any intent.
Aktuální stav
The completion policy and finish semantics are pull request 821; the binding, the opposition, the verdict with guards and evaluations are the intent stack. The two meet in no line of code. Revived on 2026-10-18 from the rescue of 2026-10-09, because the milestone never landed; its dependency on intent-satisfaction was dropped, because no milestone of that id exists on master. Re-read on 2026-10-18 for the IDD plan, against master of 2026-10-17: ADR 0107 and case 895 keep completion and intent satisfaction apart; the #821 completion policy exists only on rescue refs. It revives milestone finish-reads-what-its-work-serves of origin/rescue/d1/feature/a-finish-reads-what-its-work-serves (2026-10-09) under its own id, because that record's order, its dependency on a milestone master does not have, and the ADR number it names do not hold on master.
Cílový stav
An ADR records the decision and its measurement, under a number allocated above the high-water mark when it is written (0115 on the unlanded rescue, which master never received); a policy key says whether an owed answer refuses; two questions of the completion policy are answered from intents.binding; the documents and the claim say what finish asks.
Rozsah
- apps/majordomus-cli/src/gates
- apps/majordomus-cli/src/capability/builtin/gates.rs
- apps/majordomus-cli/tests
- share/completion.yaml
- lib/gates.sh
- test/cases
- .ai/repo
- dokumentace
- web
Mimo rozsah
- Any change to how a criterion, a guard or a verdict is derived
- Recording evidence at finish
Kritéria přijetí
- Where the policy requires it, finish with the outcome completed is refused while a served required criterion is unmet or a guard is violated
- A partial finish is always available and the refusal says so
- No intent record, stage or verdict is written by any finish
Validace
- bash test/run.sh 966_a_finish_reads_what_its_work_serves
- bash test/run.sh 895_a_finished_task_does_not_satisfy_an_intent
Rizika
- Evidence is current only for a recorded passing run at a commit in history. Measured: none of the 22 serving issues here has it for every served criterion, so the policy is advisory until recording a run is part of how work is finished.
- Several issues can serve one criterion, and each is held to it until the last.
- A criterion of a kind the ledger cannot derive reads unknown and keeps completed out of reach for the issues serving it.
Ú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 |
|---|---|---|---|---|
| I3259 | BLOKOVÁNO | 1 | I3255 | Where the policy says completed means complete, finish refuses completed while a criterion the task serves is unmet, and writes no intent state |
Graf
flowchart LR
I3259["I3259<br/>Where the policy says completed means complete, finish refuses completed while a criterion the task serves is unmet, and writes no intent state"]:::blocked
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:2pxCanonical record: .ai/repo/project/milestones/a-finish-reads-the-criteria-its-work-serves.yaml. Read it back with majordomus plan show a-finish-reads-the-criteria-its-work-serves.