@linimin/pi-letscook 0.1.33 → 0.1.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/README.md +48 -77
- package/agents/completion-implementer.md +11 -2
- package/extensions/completion/index.ts +370 -222
- package/extensions/completion/role-reporting.js +107 -20
- package/package.json +2 -1
- package/scripts/active-slice-contract-test.sh +242 -0
- package/scripts/canonical-evidence-artifact-test.sh +348 -0
- package/scripts/context-proposal-test.sh +50 -49
- package/scripts/evaluator-calibration-test.sh +363 -0
- package/scripts/refocus-test.sh +31 -0
- package/scripts/release-check.sh +5 -1
- package/scripts/smoke-test.sh +56 -1
- package/skills/completion-protocol/SKILL.md +4 -1
- package/skills/completion-protocol/references/completion.md +24 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.36
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- simplified the README opening so first-time users can understand the problem `/cook` solves, what the extension provides, and how to start using it without reading the full control-plane details first
|
|
8
|
+
|
|
9
|
+
## 0.1.35
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- brightened the remaining `/cook` completion UI helper text by removing the last `dim` styling from proposal intro/footer/scroll hints and running activity metadata, using plain/default text for higher contrast while keeping stalled activity as warning-colored
|
|
14
|
+
|
|
15
|
+
## 0.1.34
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- added evaluator calibration fixtures for semantically lenient but well-formed reviewer/auditor/stop-judge reports and made packaged transcription reject those cases fail closed while still accepting truthful passing fixtures
|
|
20
|
+
- tightened the reproducible `none; ...` reviewer/auditor/stop-judge bypass checks while still accepting only the exact reviewer `none; proceed to completion-auditor` routing allowance with terminal punctuation or whitespace only
|
|
21
|
+
- wired `npm run evaluator-calibration-test` into `npm run release-check` and `.agent/verify_completion_stop.sh` as part of the packaged release gate
|
|
22
|
+
- fixed the smoke auto-resume prompt regression so the packaged release check writes `auto-resume-prompt.txt` again and passes on clean HEAD
|
|
23
|
+
- promoted `.agent/active-slice.json` to implementation-contract v2 across implementer instructions, fail-closed active-vs-plan parity checks, recovery/reminder surfaces, and a dedicated release-gated regression
|
|
24
|
+
- added durable canonical verification evidence at `.agent/verification-evidence.json`, threaded it through docs and recovery surfaces, and made release/stop verification fail closed on missing, stale, wrong-head, or protocol-doc-drift evidence artifacts
|
|
25
|
+
- made `/cook` startup and replacement confirmation approval-only by removing inline Edit and mission-anchor editing paths; the proposal gate now offers only Start or Cancel, and cancel points users back to the main chat before rerunning `/cook`
|
|
26
|
+
- kept the separate existing-workflow chooser (`Continue current workflow` / `Abandon current workflow and start this new one` / `Cancel`) while updating the replacement path, README, and deterministic context/refocus regressions to match the new approval-only gate truthfully
|
|
27
|
+
|
|
3
28
|
## 0.1.33
|
|
4
29
|
|
|
5
30
|
### Changed
|
package/README.md
CHANGED
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
# @linimin/pi-letscook
|
|
2
2
|
|
|
3
|
-
A Pi extension that
|
|
3
|
+
A Pi extension that turns `/cook` into a repo-local workflow command for long-running coding work.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Why this exists
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
- resume later from repo-local workflow state
|
|
9
|
-
- refocus an active workflow without losing control of the mission
|
|
10
|
-
- drive implementation through isolated completion roles
|
|
11
|
-
- keep verification, review, audit, and stop checks tied to the repo
|
|
7
|
+
Normal chat is good for one-off tasks. It is much worse for work that needs to:
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
- continue across sessions
|
|
10
|
+
- stay anchored to one mission
|
|
11
|
+
- resume from repo state instead of chat memory
|
|
12
|
+
- keep review, audit, and verification tied to the repo
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
`@linimin/pi-letscook` solves that by storing canonical workflow state in `.agent/**` and using `/cook` to start, resume, or refocus the workflow.
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
## What you get
|
|
18
17
|
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
- **deterministic verification** through repo-local scripts and regression checks
|
|
18
|
+
- one command: `/cook`
|
|
19
|
+
- repo-local canonical state in `.agent/**`
|
|
20
|
+
- resumable long-running workflows
|
|
21
|
+
- startup proposals from an explicit goal or recent discussion
|
|
22
|
+
- deterministic verification, review, audit, and stop checks
|
|
25
23
|
|
|
26
24
|
## Install
|
|
27
25
|
|
|
@@ -51,73 +49,33 @@ Replace the active workflow with a different goal:
|
|
|
51
49
|
/cook fix onboarding crash first, with regression tests
|
|
52
50
|
```
|
|
53
51
|
|
|
54
|
-
|
|
52
|
+
## How `/cook` works
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
/cook improve startup proposal confirmation UX
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## How `/cook` behaves
|
|
61
|
-
|
|
62
|
-
`/cook` is the only public workflow command, but it behaves differently depending on the current canonical workflow state.
|
|
54
|
+
`/cook` is the only public workflow command, but it reacts to canonical workflow state:
|
|
63
55
|
|
|
64
56
|
| Repo state | `/cook` | `/cook <goal>` |
|
|
65
57
|
|---|---|---|
|
|
66
|
-
| No
|
|
67
|
-
| Active workflow exists | Resumes
|
|
68
|
-
| Previous workflow is
|
|
69
|
-
|
|
70
|
-
## Startup proposal behavior
|
|
71
|
-
|
|
72
|
-
### `/cook <goal>`
|
|
73
|
-
|
|
74
|
-
When you provide an explicit goal:
|
|
75
|
-
|
|
76
|
-
- the explicit goal stays the mission anchor
|
|
77
|
-
- recent discussion is supplemental only
|
|
78
|
-
- recent discussion may enrich scope, constraints, and acceptance details when analyst output is available
|
|
79
|
-
|
|
80
|
-
Example:
|
|
81
|
-
|
|
82
|
-
```text
|
|
83
|
-
/cook Build feature X with tests and docs
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### `/cook` without a goal
|
|
87
|
-
|
|
88
|
-
When you do **not** provide a goal:
|
|
58
|
+
| No workflow yet | Summarizes recent discussion into a startup proposal, then asks for approval | Builds a proposal anchored on the explicit goal, then asks for approval |
|
|
59
|
+
| Active workflow exists | Resumes from canonical `.agent/**` state | First asks whether to continue or replace the current workflow |
|
|
60
|
+
| Previous workflow is `done` | Starts the next round from recent discussion | Starts the next round from the explicit goal |
|
|
89
61
|
|
|
90
|
-
|
|
91
|
-
- the proposal is shown in a custom confirmation UI before canonical state is written
|
|
92
|
-
- if analyst output is unavailable, provide an explicit goal with `/cook <goal>`
|
|
62
|
+
## Startup confirmation
|
|
93
63
|
|
|
94
|
-
|
|
64
|
+
Startup and replacement proposals are **approval-only**:
|
|
95
65
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
66
|
+
- the proposal body is shown separately from actions
|
|
67
|
+
- actions are only **Start** and **Cancel**
|
|
68
|
+
- if the proposal needs changes, **Cancel**, discuss them in the main chat, and rerun `/cook`
|
|
99
69
|
|
|
100
|
-
|
|
70
|
+
When an active workflow already exists and you run `/cook <goal>`, `/cook` still shows a separate chooser first:
|
|
101
71
|
|
|
102
|
-
|
|
72
|
+
- **Continue current workflow**
|
|
73
|
+
- **Abandon current workflow and start this new one**
|
|
74
|
+
- **Cancel**
|
|
103
75
|
|
|
104
|
-
|
|
105
|
-
- keeps Mission / Scope / Constraints / Acceptance readable as a content area
|
|
106
|
-
- renders analyst-derived **Critique and risks** separately from the editable proposal body
|
|
107
|
-
- renders recommended `task_type` / `evaluation_profile` routing hints separately from both the proposal body and the action list
|
|
108
|
-
- presents explicit actions for:
|
|
109
|
-
- **Start**
|
|
110
|
-
- **Edit**
|
|
111
|
-
- **Cancel**
|
|
76
|
+
Only the follow-on startup/replacement proposal uses the approval-only Start/Cancel gate.
|
|
112
77
|
|
|
113
|
-
When you accept startup or refocus from that flow, `/cook`
|
|
114
|
-
|
|
115
|
-
The same confirmation flow is reused across:
|
|
116
|
-
|
|
117
|
-
- discussion-only startup
|
|
118
|
-
- explicit-goal startup
|
|
119
|
-
- next-round startup after completion
|
|
120
|
-
- replacement-workflow startup
|
|
78
|
+
When you accept startup or refocus from that flow, `/cook` persists the chosen `task_type` and `evaluation_profile` across `.agent/profile.json`, `.agent/state.json`, `.agent/plan.json`, and `.agent/active-slice.json`, and records the accepted critique outcome in canonical continuation state before the re-ground round begins.
|
|
121
79
|
|
|
122
80
|
## Observability
|
|
123
81
|
|
|
@@ -165,18 +123,27 @@ The packaged control plane now also carries canonical routing signals:
|
|
|
165
123
|
|
|
166
124
|
Those identifiers are persisted in `.agent/profile.json`, `.agent/state.json`, `.agent/plan.json`, and `.agent/active-slice.json`, then surfaced in kickoff/reminder/resume text and reviewer/auditor/stop-judge evaluation handoffs so downstream roles can rely on canonical signaling instead of prose inference alone.
|
|
167
125
|
|
|
168
|
-
The active-slice exact implementer handoff now
|
|
126
|
+
The active-slice exact implementer handoff is now the canonical implementation contract for selected, in-progress, committed, and done slices. In addition to the locked slice goal, acceptance criteria, contract IDs, blocked-on list, `priority`, and `why_now`, the v2 contract requires:
|
|
169
127
|
|
|
170
128
|
- `implementation_surfaces` — the repo surfaces expected to change or stay in parity for the slice
|
|
171
129
|
- `verification_commands` — the focused and broader deterministic checks the implementer is expected to run before committing
|
|
130
|
+
- `locked_notes` / `must_fix_findings` — canonical scope locks plus review follow-up obligations for the current slice
|
|
131
|
+
- `basis_commit` — the clean HEAD the slice was selected against
|
|
132
|
+
- `remaining_contract_ids_before` plus `release_blocker_count_before` / `high_value_gap_count_before` — the locked before-slice counters the implementer must preserve in reports and later handoffs
|
|
133
|
+
|
|
134
|
+
The selected plan slice must mirror that exact contract across goal, contract IDs, acceptance criteria, blocked-on state, `priority` / `why_now`, `implementation_surfaces`, `verification_commands`, locked notes, must-fix findings, `basis_commit`, and the before-slice counters. `.agent/verify_completion_control_plane.sh` plus the reminder/compaction-resume surfaces now fail closed on that drift instead of only checking slice-id presence, so implementers can recover from canonical state rather than prose-only summaries.
|
|
172
135
|
|
|
173
|
-
|
|
136
|
+
Reviewer, auditor, and stop-judge dispatch/reminder surfaces now also thread the current active-slice implementation contract (`implementation_surfaces`, `verification_commands`, locked notes, must-fix findings, `basis_commit`, and before-slice counters) alongside the canonical `evaluation_profile` so those read-only roles can reason from canonical state after compaction.
|
|
174
137
|
|
|
175
|
-
|
|
138
|
+
Deterministic verification now also persists a durable canonical artifact in `.agent/verification-evidence.json`. Fresh scaffolds create an idle placeholder, implementers update it for the selected slice or current HEAD, reminder/recovery/evaluation surfaces thread its path and summary, and `.agent/verify_completion_control_plane.sh`, `bash scripts/canonical-evidence-artifact-test.sh`, `npm run release-check`, and `bash .agent/verify_completion_stop.sh` fail closed when that artifact is missing, stale, or out of parity with the selected slice or current HEAD.
|
|
176
139
|
|
|
177
140
|
Canonical reviewer/auditor/stop-judge transcription now fails closed on malformed rubric-bearing reports: the shared rubric heading plus all four rubric dimensions must be present, required role fields must remain intact, and reviewer/stop-judge yes/no verdicts cannot contradict rubric `fail` lines.
|
|
178
141
|
|
|
179
|
-
|
|
142
|
+
Evaluator calibration now also fails closed on semantically lenient but well-formed reports. `npm run evaluator-calibration-test` drives the packaged transcription path through reviewer yes-with-follow-up, auditor open-contracts-with-`Next mandatory slice: none`, and stop-judge yes-with-open-contracts fixtures while still accepting truthful passing reports. It also rejects the reproducible `none; ...` bypass family for reviewer follow-up, auditor worktree blockers, and stop-judge open-contract reporting, while still accepting only the exact reviewer routing text `Smallest follow-up slice: none; proceed to completion-auditor.` with terminal punctuation or whitespace only. Both `npm run release-check` and `bash .agent/verify_completion_stop.sh` include this calibration gate.
|
|
143
|
+
|
|
144
|
+
Deterministic active-slice contract regression now lives in `bash scripts/active-slice-contract-test.sh`, and `npm run release-check` pulls it into the packaged release gate before `npm pack --dry-run`.
|
|
145
|
+
|
|
146
|
+
Deterministic verification for this packaged contract also lives in `npm run rubric-contract-test`, which now exercises reviewer, auditor, and stop-judge transcription paths while the bootstrap/refocus/context regressions plus control-plane verifier fail closed when required canonical signaling is missing.
|
|
180
147
|
|
|
181
148
|
## Canonical files
|
|
182
149
|
|
|
@@ -194,6 +161,7 @@ This package stores canonical workflow state under:
|
|
|
194
161
|
active-slice.json
|
|
195
162
|
slice-history.jsonl
|
|
196
163
|
stop-check-history.jsonl
|
|
164
|
+
verification-evidence.json
|
|
197
165
|
tmp/
|
|
198
166
|
```
|
|
199
167
|
|
|
@@ -219,6 +187,7 @@ Ignored execution-state files:
|
|
|
219
187
|
- `.agent/active-slice.json`
|
|
220
188
|
- `.agent/slice-history.jsonl`
|
|
221
189
|
- `.agent/stop-check-history.jsonl`
|
|
190
|
+
- `.agent/verification-evidence.json`
|
|
222
191
|
- `.agent/*.log`
|
|
223
192
|
- `.agent/tmp/`
|
|
224
193
|
|
|
@@ -242,12 +211,14 @@ Run validation from the package root:
|
|
|
242
211
|
npm run smoke-test
|
|
243
212
|
npm run refocus-test
|
|
244
213
|
npm run context-proposal-test
|
|
214
|
+
bash scripts/canonical-evidence-artifact-test.sh
|
|
245
215
|
npm run observability-status-test
|
|
216
|
+
npm run evaluator-calibration-test
|
|
246
217
|
npm run rubric-contract-test
|
|
247
218
|
npm run release-check
|
|
248
219
|
```
|
|
249
220
|
|
|
250
|
-
`npm run release-check` is the broad packaged-release verifier. It reruns the startup/refocus/context checks — including the critique-aware `/cook` confirmation regression — includes deterministic
|
|
221
|
+
`npm run release-check` is the broad packaged-release verifier. It begins with `bash .agent/verify_completion_control_plane.sh`, so missing or stale `.agent/verification-evidence.json` parity fails closed before the broader suite runs, then reruns the startup/refocus/context checks — including the critique-aware `/cook` confirmation regression and the smoke auto-resume prompt path — includes deterministic canonical evidence artifact coverage and includes deterministic active-slice contract coverage plus observability coverage, evaluator calibration, and the rubric-contract regression, and finishes with `npm pack --dry-run`.
|
|
251
222
|
|
|
252
223
|
## Release
|
|
253
224
|
|
|
@@ -10,6 +10,8 @@ Load `completion-protocol` before acting. Use it as the shared protocol source o
|
|
|
10
10
|
|
|
11
11
|
You execute one exact slice chosen either by `completion-regrounder` or directly by the workflow root from canonical `.agent` state.
|
|
12
12
|
|
|
13
|
+
For selected, in-progress, committed, and done slices, `.agent/active-slice.json` is the canonical implementation contract. Treat prose summaries as continuity help only, and stop instead of guessing if that contract is stale, incomplete, or out of parity with `.agent/plan.json`.
|
|
14
|
+
|
|
13
15
|
Required exact handoff from canonical `.agent` state:
|
|
14
16
|
|
|
15
17
|
- blocker count before the slice
|
|
@@ -20,10 +22,17 @@ Required exact handoff from canonical `.agent` state:
|
|
|
20
22
|
- one exact slice goal
|
|
21
23
|
- the exact acceptance criteria for that slice
|
|
22
24
|
- the exact contract IDs for that slice
|
|
25
|
+
- the exact `priority` and `why_now` for that slice
|
|
26
|
+
- the exact `implementation_surfaces`
|
|
27
|
+
- the exact `verification_commands`
|
|
28
|
+
- the exact `basis_commit`
|
|
29
|
+
- the exact `remaining_contract_ids_before`
|
|
30
|
+
- the exact `release_blocker_count_before`
|
|
31
|
+
- the exact `high_value_gap_count_before`
|
|
23
32
|
- any locked notes or caller-selected-slice notes captured in `.agent/active-slice.json`
|
|
24
33
|
- any must-fix review findings captured in `.agent/active-slice.json` if this is a follow-up slice
|
|
25
34
|
|
|
26
|
-
If the exact slice ID, exact slice goal,
|
|
35
|
+
If the exact slice ID, exact slice goal, exact acceptance criteria, or any required implementation-contract v2 field are missing, stale, or ambiguous in canonical state, stop and report that blocker instead of guessing.
|
|
27
36
|
|
|
28
37
|
You are the only role allowed to:
|
|
29
38
|
|
|
@@ -52,7 +61,7 @@ These lines are for workflow observability, not hidden reasoning. Keep them brie
|
|
|
52
61
|
|
|
53
62
|
1. Read canonical `.agent` inputs before touching tracked files.
|
|
54
63
|
2. After compaction or recovery, re-read canonical `.agent/state.json`, `.agent/plan.json`, and `.agent/active-slice.json` before resuming.
|
|
55
|
-
3. Confirm the canonical slice ID, goal, acceptance criteria,
|
|
64
|
+
3. Confirm the canonical slice ID, goal, acceptance criteria, contract IDs, priority, why_now, implementation_surfaces, verification_commands, locked notes, must-fix findings, basis_commit, and before-slice counters in `.agent/active-slice.json` match canonical `.agent/plan.json`. If they do not match, stop and report the mismatch instead of guessing.
|
|
56
65
|
4. Make truthful `.agent/state.json` and `.agent/active-slice.json` updates before implementation if needed.
|
|
57
66
|
5. If implementation reveals roadmap-level drift — for example a missing prerequisite slice, invalid slice boundary, dependency reorder, or blocker that changes the current slice contract — do not silently redesign the plan. Report the discrepancy explicitly, make only the minimal truthful local state updates needed for the current slice, and hand control back for canonical re-grounding by `completion-regrounder`.
|
|
58
67
|
6. Make the smallest correct tracked-file change.
|