@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 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 | Asks whether to continue the current workflow or replace it |
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 uses a custom UI that:
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 also carries a stronger implementation contract for selected, in-progress, committed, and done slices:
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
- 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.
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
- 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.
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 observability coverage plus the rubric-contract regression, and finishes with `npm pack --dry-run`.
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, 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.