@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 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 adds `/cook` for resumable long-running workflows backed by repo-local canonical state in `.agent/**`.
3
+ A Pi extension that turns `/cook` into a repo-local workflow command for long-running coding work.
4
4
 
5
- `@linimin/pi-letscook` is for work that does not fit in a single chat turn:
5
+ ## Why this exists
6
6
 
7
- - start from a goal or from recent discussion
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
- ## Why use it
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
- Use this package when you want `/cook` to behave like a real project workflow command instead of a one-shot prompt.
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
- It gives you:
16
+ ## What you get
18
17
 
19
- - **one command** for start, resume, and refocus
20
- - **repo-local canonical state** under `.agent/**`
21
- - **model-assisted startup proposals** from recent discussion
22
- - **explicit-goal anchoring** when you want the mission to stay fixed
23
- - **isolated completion roles** via `completion_role`
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
- Start the next round after the previous workflow is already done:
52
+ ## How `/cook` works
55
53
 
56
- ```text
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 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 | Asks whether to continue the current workflow or replace it |
68
- | 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
- ## 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
- - `/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
- - if analyst output is unavailable, provide an explicit goal with `/cook <goal>`
62
+ ## Startup confirmation
93
63
 
94
- Example:
64
+ Startup and replacement proposals are **approval-only**:
95
65
 
96
- ```text
97
- /cook
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
- ## Confirmation UI
70
+ When an active workflow already exists and you run `/cook <goal>`, `/cook` still shows a separate chooser first:
101
71
 
102
- Startup confirmation uses a custom UI that:
72
+ - **Continue current workflow**
73
+ - **Abandon current workflow and start this new one**
74
+ - **Cancel**
103
75
 
104
- - renders the proposal body separately from the action list
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` 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
-
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 also carries a stronger implementation contract for selected, in-progress, committed, and done slices:
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
- Those fields are scaffolded by default, enforced by `.agent/verify_completion_control_plane.sh` whenever an exact handoff is required, and surfaced alongside `priority` / `why_now` in reminder and compaction-resume text so implementers can recover from canonical state instead of prose-only summaries.
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
- 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.
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
- Deterministic verification for this packaged contract 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.
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 observability coverage plus the rubric-contract regression, and finishes with `npm pack --dry-run`.
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, or exact acceptance criteria are missing, stale, or ambiguous in canonical state, stop and report that blocker instead of guessing.
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, and contract IDs in `.agent/active-slice.json` match canonical `.agent/plan.json`. If they do not match, stop and report the mismatch instead of guessing.
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.