Skip to content

Commit 511a609

Browse files
committed
ctx-implement: ledger duties for task-out plans
Close the execution end of the ledger loop ctx-task-out defines. The skill never mentioned the st column, TASKS.md epic projection, or DoD independence — and its checkpoint step actively said "check off completed tasks and DoD items", instructing the implementer to derive DoD from task completion, which is exactly what the rolling-wave gate forbids. New Ledger Duties section: st flips to [x] only on demonstrated acceptance ([o] via amendment, never silently backwards); DoD is measurement- or user-confirmed only; epics in TASKS.md are projected one-way when their disjoint id range completes; criterion changes route through task-out amendment mode, with measurement gates stopping execution of dependent tasks. Acceptance criteria join the step-verification map; checklist gains the duties; step-numbering typo (two 3s) fixed. Copilot mirror and plugin cache synced; work order Status extended. Spec: specs/ctx-task-out.md Signed-off-by: Jose Alekhinne <jose@ctx.ist>
1 parent 6bd76d0 commit 511a609

3 files changed

Lines changed: 79 additions & 16 deletions

File tree

internal/assets/claude/skills/ctx-implement/SKILL.md

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,15 @@ For each step:
8585
2. **Think through** the change before writing code: what does
8686
it touch, what could break, what's the simplest correct path?
8787
3. **Implement** the change
88-
3. **Verify** with the appropriate check:
88+
4. **Verify** with the appropriate check:
89+
- Task from a task-out plan → its acceptance criterion,
90+
verbatim (in addition to the map below)
8991
- Go code changed → `CGO_ENABLED=0 go build -o /dev/null ./cmd/ctx`
9092
- Tests affected → `CGO_ENABLED=0 go test ./...`
9193
- Config/template changed → build to verify embeds
9294
- Docs only → no verification needed
93-
4. **Report** step result: pass or fail
94-
5. **If failed**: stop, diagnose, fix, re-verify before
95+
5. **Report** step result: pass or fail
96+
6. **If failed**: stop, diagnose, fix, re-verify before
9597
moving to the next step
9698

9799
Verify after every individual step before proceeding to the next.
@@ -100,11 +102,8 @@ Verify after every individual step before proceeding to the next.
100102

101103
After every 3-5 steps (or after a significant milestone):
102104
- Summarize what has been completed
103-
- If executing `specs/plans/<milestone>.md`, check off completed
104-
tasks and DoD items in the plan document — it is the execution
105-
ledger that `/ctx-task-out`'s rolling-wave gate reads. Never
106-
edit a task's acceptance criterion in place; a criterion
107-
change goes back through `/ctx-task-out` (amendment mode)
105+
- If executing `specs/plans/<milestone>.md`, update the execution
106+
ledger (see Ledger Duties below)
108107
- Note any deviations from the plan
109108
- Ask the user if they want to continue, adjust, or stop
110109

@@ -117,6 +116,32 @@ After all steps complete:
117116
- Note any deviations from the original plan
118117
- Suggest context to persist (decisions, learnings, tasks)
119118

119+
## Ledger Duties (plans from /ctx-task-out)
120+
121+
A task-out plan is the execution ledger — the only record of
122+
milestone progress. Executing one carries four bookkeeping duties:
123+
124+
- **`st` is the record.** Flip a task's `st` cell to `[x]` only
125+
when its acceptance criterion has demonstrably passed — the
126+
command ran, the test is green, the behavior was observed.
127+
Tasks obsoleted by amendment become `[o]`. `st` never moves
128+
backwards silently; a regression is a deviation to report.
129+
- **DoD is not yours to derive.** Scope & DoD checkboxes are
130+
confirmed by measurement or by the user — never checked because
131+
the tasks that "cover" them are done. The rolling-wave gate
132+
reads DoD only; deriving it from task completion defeats the
133+
gate.
134+
- **Project epics outward.** TASKS.md epics carry disjoint
135+
task-id ranges (`Plan: specs/plans/<milestone>.md (Txx–Tyy)`).
136+
When every task in a range is `[x]` or `[o]`, mark that epic
137+
`[x]`. Sync is one-way, plan → TASKS.md; never track task
138+
state in TASKS.md directly.
139+
- **Amendments, not edits.** Never edit a task's acceptance
140+
criterion in place; a criterion change goes back through
141+
`/ctx-task-out` (amendment mode). When a measurement gate
142+
fires (Risks & measurement gates), stop and route the outcome
143+
through an amendment before executing dependent tasks.
144+
120145
## Step Verification Map
121146

122147
| Change type | Verification command |
@@ -188,6 +213,9 @@ During execution, verify:
188213
- [ ] Each step is verified before moving on
189214
- [ ] Failures are fixed in place, not deferred
190215
- [ ] Checkpoints happen every 3-5 steps
216+
- [ ] Task-out plans: `st` flipped only on demonstrated
217+
acceptance; epics projected to TASKS.md when their range
218+
completes; DoD boxes left to measurement or the user
191219

192220
After completion, verify:
193221
- [ ] Final full verification passes

internal/assets/integrations/copilot-cli/skills/ctx-implement/SKILL.md

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,15 @@ For each step:
8585
2. **Think through** the change before writing code: what does
8686
it touch, what could break, what's the simplest correct path?
8787
3. **Implement** the change
88-
3. **Verify** with the appropriate check:
88+
4. **Verify** with the appropriate check:
89+
- Task from a task-out plan → its acceptance criterion,
90+
verbatim (in addition to the map below)
8991
- Go code changed → `CGO_ENABLED=0 go build -o /dev/null ./cmd/ctx`
9092
- Tests affected → `CGO_ENABLED=0 go test ./...`
9193
- Config/template changed → build to verify embeds
9294
- Docs only → no verification needed
93-
4. **Report** step result: pass or fail
94-
5. **If failed**: stop, diagnose, fix, re-verify before
95+
5. **Report** step result: pass or fail
96+
6. **If failed**: stop, diagnose, fix, re-verify before
9597
moving to the next step
9698

9799
Verify after every individual step before proceeding to the next.
@@ -100,11 +102,8 @@ Verify after every individual step before proceeding to the next.
100102

101103
After every 3-5 steps (or after a significant milestone):
102104
- Summarize what has been completed
103-
- If executing `specs/plans/<milestone>.md`, check off completed
104-
tasks and DoD items in the plan document — it is the execution
105-
ledger that `/ctx-task-out`'s rolling-wave gate reads. Never
106-
edit a task's acceptance criterion in place; a criterion
107-
change goes back through `/ctx-task-out` (amendment mode)
105+
- If executing `specs/plans/<milestone>.md`, update the execution
106+
ledger (see Ledger Duties below)
108107
- Note any deviations from the plan
109108
- Ask the user if they want to continue, adjust, or stop
110109

@@ -117,6 +116,32 @@ After all steps complete:
117116
- Note any deviations from the original plan
118117
- Suggest context to persist (decisions, learnings, tasks)
119118

119+
## Ledger Duties (plans from /ctx-task-out)
120+
121+
A task-out plan is the execution ledger — the only record of
122+
milestone progress. Executing one carries four bookkeeping duties:
123+
124+
- **`st` is the record.** Flip a task's `st` cell to `[x]` only
125+
when its acceptance criterion has demonstrably passed — the
126+
command ran, the test is green, the behavior was observed.
127+
Tasks obsoleted by amendment become `[o]`. `st` never moves
128+
backwards silently; a regression is a deviation to report.
129+
- **DoD is not yours to derive.** Scope & DoD checkboxes are
130+
confirmed by measurement or by the user — never checked because
131+
the tasks that "cover" them are done. The rolling-wave gate
132+
reads DoD only; deriving it from task completion defeats the
133+
gate.
134+
- **Project epics outward.** TASKS.md epics carry disjoint
135+
task-id ranges (`Plan: specs/plans/<milestone>.md (Txx–Tyy)`).
136+
When every task in a range is `[x]` or `[o]`, mark that epic
137+
`[x]`. Sync is one-way, plan → TASKS.md; never track task
138+
state in TASKS.md directly.
139+
- **Amendments, not edits.** Never edit a task's acceptance
140+
criterion in place; a criterion change goes back through
141+
`/ctx-task-out` (amendment mode). When a measurement gate
142+
fires (Risks & measurement gates), stop and route the outcome
143+
through an amendment before executing dependent tasks.
144+
120145
## Step Verification Map
121146

122147
| Change type | Verification command |
@@ -188,6 +213,9 @@ During execution, verify:
188213
- [ ] Each step is verified before moving on
189214
- [ ] Failures are fixed in place, not deferred
190215
- [ ] Checkpoints happen every 3-5 steps
216+
- [ ] Task-out plans: `st` flipped only on demonstrated
217+
acceptance; epics projected to TASKS.md when their range
218+
completes; DoD boxes left to measurement or the user
191219

192220
After completion, verify:
193221
- [ ] Final full verification passes

specs/ctx-task-out.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ completion semantics (overlapping id ranges, no rule for when an epic
1212
checks off). Both fixed: `st` column (`[ ]`/`[x]`/`[o]`) in template,
1313
step 4, ledger rule, and checklist; step 7 now requires a disjoint
1414
id partition with a sum check and a stated completion rule.
15+
Same round, consumer side: `/ctx-implement` (deliverable 4) gained
16+
an explicit **Ledger Duties** section — `st` flips only on
17+
demonstrated acceptance, DoD is never derived from task completion
18+
(its prior checkpoint wording said "check off completed tasks and
19+
DoD items", instructing exactly that), epic projection to TASKS.md
20+
is one-way on range completion, and criterion changes route through
21+
amendment mode. Plus a step-numbering typo fix (two step 3s).
1522
**Draft skill:** retired after landing (was
1623
`specs/ctx-task-out-SKILL-draft.md`; the installed skill superseded it).
1724
**Origin:** zhc/os session c887a6d4, 2026-07-03 — the gap surfaced in live use.

0 commit comments

Comments
 (0)