@linimin/pi-letscook 0.1.32 → 0.1.35
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 +26 -0
- package/README.md +33 -11
- package/agents/completion-implementer.md +11 -2
- package/extensions/completion/index.ts +426 -262
- 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,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.35
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- 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
|
|
8
|
+
|
|
9
|
+
## 0.1.34
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- 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
|
|
14
|
+
- 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
|
|
15
|
+
- wired `npm run evaluator-calibration-test` into `npm run release-check` and `.agent/verify_completion_stop.sh` as part of the packaged release gate
|
|
16
|
+
- fixed the smoke auto-resume prompt regression so the packaged release check writes `auto-resume-prompt.txt` again and passes on clean HEAD
|
|
17
|
+
- 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
|
|
18
|
+
- 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
|
|
19
|
+
- 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`
|
|
20
|
+
- 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
|
|
21
|
+
|
|
22
|
+
## 0.1.33
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- kept full mission text in `/cook` confirmation instead of truncating mission anchors during derivation
|
|
27
|
+
- refined `/cook` activity and completion-role text contrast by reducing overuse of `dim` styling in high-value status surfaces
|
|
28
|
+
|
|
3
29
|
## 0.1.32
|
|
4
30
|
|
|
5
31
|
### Changed
|
package/README.md
CHANGED
|
@@ -18,6 +18,7 @@ It gives you:
|
|
|
18
18
|
|
|
19
19
|
- **one command** for start, resume, and refocus
|
|
20
20
|
- **repo-local canonical state** under `.agent/**`
|
|
21
|
+
- **durable canonical verification evidence** in `.agent/verification-evidence.json`
|
|
21
22
|
- **model-assisted startup proposals** from recent discussion
|
|
22
23
|
- **explicit-goal anchoring** when you want the mission to stay fixed
|
|
23
24
|
- **isolated completion roles** via `completion_role`
|
|
@@ -64,7 +65,7 @@ Start the next round after the previous workflow is already done:
|
|
|
64
65
|
| Repo state | `/cook` | `/cook <goal>` |
|
|
65
66
|
|---|---|---|
|
|
66
67
|
| No canonical workflow yet | Uses the proposal analyst to summarize recent discussion into a startup proposal, then asks for confirmation | Builds a startup proposal anchored on the explicit goal, optionally enriching it from recent discussion, then asks for confirmation |
|
|
67
|
-
| Active workflow exists | Resumes the active workflow from canonical `.agent/**` state |
|
|
68
|
+
| Active workflow exists | Resumes the active workflow from canonical `.agent/**` state | First asks whether to continue the current workflow or replace it, then uses a final Start/Cancel approval gate before any replacement state is written |
|
|
68
69
|
| Previous workflow is already `done` | Uses the proposal analyst to summarize recent discussion into the next workflow round, then asks for confirmation | Starts the next workflow round directly from the explicit goal |
|
|
69
70
|
|
|
70
71
|
## Startup proposal behavior
|
|
@@ -88,7 +89,7 @@ Example:
|
|
|
88
89
|
When you do **not** provide a goal:
|
|
89
90
|
|
|
90
91
|
- `/cook` uses the proposal analyst to summarize recent discussion into a startup proposal
|
|
91
|
-
- the proposal is shown in a custom confirmation UI before canonical state is written
|
|
92
|
+
- the proposal is shown in a custom approval-only confirmation UI before canonical state is written
|
|
92
93
|
- if analyst output is unavailable, provide an explicit goal with `/cook <goal>`
|
|
93
94
|
|
|
94
95
|
Example:
|
|
@@ -99,20 +100,28 @@ Example:
|
|
|
99
100
|
|
|
100
101
|
## Confirmation UI
|
|
101
102
|
|
|
102
|
-
Startup confirmation
|
|
103
|
+
Startup and replacement confirmation use a custom approval-only UI that:
|
|
103
104
|
|
|
104
105
|
- renders the proposal body separately from the action list
|
|
105
106
|
- 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 analyst-derived **Critique and risks** separately from the non-editable proposal body
|
|
107
108
|
- renders recommended `task_type` / `evaluation_profile` routing hints separately from both the proposal body and the action list
|
|
108
109
|
- presents explicit actions for:
|
|
109
110
|
- **Start**
|
|
110
|
-
- **Edit**
|
|
111
111
|
- **Cancel**
|
|
112
|
+
- treats the proposal as approval-only: if it needs changes, Cancel, discuss them in the main chat, and rerun `/cook`
|
|
113
|
+
|
|
114
|
+
When an active workflow already exists and you run `/cook <goal>`, `/cook` still shows a separate chooser first:
|
|
115
|
+
|
|
116
|
+
- **Continue current workflow**
|
|
117
|
+
- **Abandon current workflow and start this new one**
|
|
118
|
+
- **Cancel**
|
|
119
|
+
|
|
120
|
+
Only the follow-on startup/replacement proposal uses the approval-only Start/Cancel gate.
|
|
112
121
|
|
|
113
122
|
When you accept startup or refocus from that flow, `/cook` now 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.
|
|
114
123
|
|
|
115
|
-
The same confirmation flow is reused across:
|
|
124
|
+
The same approval-only confirmation flow is reused across:
|
|
116
125
|
|
|
117
126
|
- discussion-only startup
|
|
118
127
|
- explicit-goal startup
|
|
@@ -165,18 +174,27 @@ The packaged control plane now also carries canonical routing signals:
|
|
|
165
174
|
|
|
166
175
|
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
176
|
|
|
168
|
-
The active-slice exact implementer handoff now
|
|
177
|
+
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
178
|
|
|
170
179
|
- `implementation_surfaces` — the repo surfaces expected to change or stay in parity for the slice
|
|
171
180
|
- `verification_commands` — the focused and broader deterministic checks the implementer is expected to run before committing
|
|
181
|
+
- `locked_notes` / `must_fix_findings` — canonical scope locks plus review follow-up obligations for the current slice
|
|
182
|
+
- `basis_commit` — the clean HEAD the slice was selected against
|
|
183
|
+
- `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
|
|
172
184
|
|
|
173
|
-
|
|
185
|
+
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.
|
|
174
186
|
|
|
175
|
-
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, and before-slice counters) alongside the canonical `evaluation_profile` so those read-only roles can reason from canonical state after compaction.
|
|
187
|
+
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.
|
|
188
|
+
|
|
189
|
+
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
190
|
|
|
177
191
|
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
192
|
|
|
179
|
-
|
|
193
|
+
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.
|
|
194
|
+
|
|
195
|
+
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`.
|
|
196
|
+
|
|
197
|
+
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
198
|
|
|
181
199
|
## Canonical files
|
|
182
200
|
|
|
@@ -194,6 +212,7 @@ This package stores canonical workflow state under:
|
|
|
194
212
|
active-slice.json
|
|
195
213
|
slice-history.jsonl
|
|
196
214
|
stop-check-history.jsonl
|
|
215
|
+
verification-evidence.json
|
|
197
216
|
tmp/
|
|
198
217
|
```
|
|
199
218
|
|
|
@@ -219,6 +238,7 @@ Ignored execution-state files:
|
|
|
219
238
|
- `.agent/active-slice.json`
|
|
220
239
|
- `.agent/slice-history.jsonl`
|
|
221
240
|
- `.agent/stop-check-history.jsonl`
|
|
241
|
+
- `.agent/verification-evidence.json`
|
|
222
242
|
- `.agent/*.log`
|
|
223
243
|
- `.agent/tmp/`
|
|
224
244
|
|
|
@@ -242,12 +262,14 @@ Run validation from the package root:
|
|
|
242
262
|
npm run smoke-test
|
|
243
263
|
npm run refocus-test
|
|
244
264
|
npm run context-proposal-test
|
|
265
|
+
bash scripts/canonical-evidence-artifact-test.sh
|
|
245
266
|
npm run observability-status-test
|
|
267
|
+
npm run evaluator-calibration-test
|
|
246
268
|
npm run rubric-contract-test
|
|
247
269
|
npm run release-check
|
|
248
270
|
```
|
|
249
271
|
|
|
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
|
|
272
|
+
`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
273
|
|
|
252
274
|
## Release
|
|
253
275
|
|
|
@@ -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.
|