pincer-workflow 0.4.0 → 0.4.1

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/README.md CHANGED
@@ -86,7 +86,7 @@ want the repo-side rules too can copy `AGENTS.md` from the
86
86
  npx pincer-workflow@latest update
87
87
  ```
88
88
 
89
- Files you never touched are refreshed in place. (Installs older than v0.2.0 gain the ticket state machine, the status report and the ticket-guard hook on update; `.claude/settings.json` conflicts if you edited it — merge the new hook entry from the `.new` file. v0.2.2 replaces the Codex adapter: the commands are now skills in `.agents/skills/` invoked as `$pincer-*`, since Codex no longer loads `~/.codex/prompts/` — you can delete the copies there. v0.2.3 ships the playbooks, rubrics and templates under `.claude/` on every platform, which Codex- and Copilot-only installs were missing. v0.3.0 makes trust revocable: every verification attempt is recorded, `done` re-runs the check, tickets carry `prd:`, the release audit is read-only, and `.pincer.json` moves to schema 2 — an install from 0.2.x is treated as an untrusted baseline, so on the first update every changed file arrives as a `.new` proposal once; hooks now need Node 18+. v0.4.0 carries requirement IDs and `Proves:` checks from the PRD to evaluation, adds `profile: small|standard`, and saves candidate evidence under `.prd/evidence/`; the update is additive, but an existing `NOTES.md` without an `evidence:` manifest reads as stale until `/pincer-evaluate` is re-run.) Files you edited are left
89
+ Files you never touched are refreshed in place. (Installs older than v0.2.0 gain the ticket state machine, the status report and the ticket-guard hook on update; `.claude/settings.json` conflicts if you edited it — merge the new hook entry from the `.new` file. v0.2.2 replaces the Codex adapter: the commands are now skills in `.agents/skills/` invoked as `$pincer-*`, since Codex no longer loads `~/.codex/prompts/` — you can delete the copies there. v0.2.3 ships the playbooks, rubrics and templates under `.claude/` on every platform, which Codex- and Copilot-only installs were missing. v0.3.0 makes trust revocable: every verification attempt is recorded, `done` re-runs the check, tickets carry `prd:`, the release audit is read-only, and `.pincer.json` moves to schema 2 — an install from 0.2.x is treated as an untrusted baseline, so on the first update every changed file arrives as a `.new` proposal once; hooks now need Node 18+. v0.4.0 carries requirement IDs and `Proves:` checks from the PRD to evaluation, adds `profile: small|standard`, and saves candidate evidence under `.prd/evidence/`; the update is additive, but an existing `NOTES.md` without an `evidence:` manifest reads as stale until `/pincer-evaluate` is re-run. v0.4.1 is playbook wording only: the code playbook gains one recovery exception (a tree back at the evaluated candidate is restored by the user and nothing is committed), evaluate records one check per command, and plan asks only the open part of a partly answered question.) Files you edited are left
90
90
  alone — the new version lands next to them as `<file>.new` for a manual merge.
91
91
  `npx pincer-workflow doctor` checks the health of an install (hook executable,
92
92
  `.gitignore` covering `.env*`, no unmerged `*.new` files, version current).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pincer-workflow",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "PINCER — a PRD-driven agentic delivery workflow for Claude Code, Codex CLI, and GitHub Copilot. Plan · Investigate · Narrow · Code · Evaluate · Release.",
5
5
  "bin": {
6
6
  "pincer": "bin/pincer.js"
@@ -89,7 +89,20 @@ the script or `scripts/pincer-status.sh` printed, and hand the repair to the use
89
89
  performs it in their own terminal. Then return through the lifecycle — `start`,
90
90
  `verify`, `done` — so the ticket carries fresh verification; a restored receipt is
91
91
  never evidence. Do not recommend restoring source files or unrelated edits as routine
92
- ticket repair. Automated recovery that preserves attempt history is later work (M1).
92
+ ticket repair. One exception: when the PRD is built with valid candidate evidence,
93
+ tracked files other than the ticket file being restored match the evaluated candidate
94
+ (or the candidate plus its evidence-only commit) with nothing untracked, and the
95
+ ticket's Verification block passes when run
96
+ directly rather than through `verify` (which would write a receipt), then
97
+ the committed evaluation still describes the tree. Say so, name the exact command
98
+ for the user to restore the ticket file in their own terminal, and
99
+ do not run `verify`, refresh the receipt or commit anything — the restored file is
100
+ what is already committed, not new evidence. If the block fails on that clean tree,
101
+ the failure is real: keep the failed `last_check` and repair through the lifecycle.
102
+ If source still differs from the candidate, name the differing paths and let the
103
+ user decide rather than asking which way to fix them; permission to restore a ticket
104
+ does not authorize discarding source changes. Automated recovery that preserves
105
+ attempt history is later work (M1).
93
106
 
94
107
  ## Budget rules
95
108
 
@@ -66,7 +66,16 @@ run the pipeline, then present results.
66
66
  write fresh evidence in step 9 — never reuse a manifest from a previous candidate.
67
67
  9. Persist evidence for the candidate under `.prd/evidence/prd-vN/<candidate>/`:
68
68
  - `checks/C-NN.log` — the command and a redacted summary or safe log of each
69
- executable check. Never secrets, never an environment dump.
69
+ executable check. Never secrets, never an environment dump. Record
70
+ one check per command: `command` holds the command line as run, never prose
71
+ describing a session, and a manual smoke run is recorded as the command lines
72
+ that were run (separate entries when they establish independent outcomes).
73
+ Independently assessed commands — the tracked `.env` check, the secret scan,
74
+ the dependency audit — are separate `checks` entries with their own `result`
75
+ and log, so only the tool that could not run is `unverified`. A test runner
76
+ such as `npm test` stays one aggregate check; do not split every subprocess or
77
+ assertion. Visual and review checks keep their kinds and get no artificial
78
+ shell command. Note a redaction rather than inventing a substitute command.
70
79
  - `visual/<scenario>.png` — each visual capture from step 4, with its scenario,
71
80
  viewport and observed result recorded in the manifest. When nothing renders,
72
81
  record `visual_review: {applicable: false, reason}` and say why.
@@ -36,12 +36,20 @@ unless the user explicitly authorized a separate change.
36
36
  IDs; do not silently replace either. Where its structure needs adapting to the
37
37
  template, record a mapping table (`their section or ID → R-NN`) inside the PRD.
38
38
  2. Ask only the questions whose answers would change the architecture or scope.
39
- Batch them (max 3–4 at once). Typical ones:
39
+ Batch them (max 3–4 at once). A question the brief partly answers is
40
+ asked only for its open part, naming the settled part; when the brief settles
41
+ every material decision, including acceptance behavior, ask no discovery
42
+ question and record the brief's answers. Do not add a question to fill the budget.
43
+ Typical ones:
40
44
  - What does "done" look like — what will be run, demoed, or reviewed at the end?
45
+ A named test runner settles the verification choice, not every acceptance
46
+ behavior; ask about the demo or manual check only if that is still open.
41
47
  - Any required stack, or is it my choice?
42
48
  - What is explicitly out of scope?
43
49
  3. If the project has a frontend, ask one design question: "What should this feel like,
44
50
  and what should it NOT look like?" Capture the answer for the Visual Direction section.
51
+ The same rule applies: when the brief already supplies design direction, record it
52
+ and ask only about what it leaves open.
45
53
 
46
54
  Summarize your understanding in 3–5 sentences. Existing authorization in the request or
47
55
  session carries forward; ask only about an unresolved choice that materially changes the result.
@@ -23,3 +23,5 @@ start of a session. Read-only: change nothing.
23
23
  `$pincer-code T-{NN}`. If the script printed a warning, surface it — a done ticket
24
24
  without a receipt was marked by hand and needs `scripts/pincer-ticket.sh verify T-{NN}`.
25
25
  Never restore a ticket file from git to clear a warning; a failed attempt is a record.
26
+ The one exception is the tree-back-at-candidate case in the recovery section of
27
+ `$pincer-code`: the user restores the ticket file, and nothing is verified or committed.
@@ -87,7 +87,20 @@ the script or `scripts/pincer-status.sh` printed, and hand the repair to the use
87
87
  performs it in their own terminal. Then return through the lifecycle — `start`,
88
88
  `verify`, `done` — so the ticket carries fresh verification; a restored receipt is
89
89
  never evidence. Do not recommend restoring source files or unrelated edits as routine
90
- ticket repair. Automated recovery that preserves attempt history is later work (M1).
90
+ ticket repair. One exception: when the PRD is built with valid candidate evidence,
91
+ tracked files other than the ticket file being restored match the evaluated candidate
92
+ (or the candidate plus its evidence-only commit) with nothing untracked, and the
93
+ ticket's Verification block passes when run
94
+ directly rather than through `verify` (which would write a receipt), then
95
+ the committed evaluation still describes the tree. Say so, name the exact command
96
+ for the user to restore the ticket file in their own terminal, and
97
+ do not run `verify`, refresh the receipt or commit anything — the restored file is
98
+ what is already committed, not new evidence. If the block fails on that clean tree,
99
+ the failure is real: keep the failed `last_check` and repair through the lifecycle.
100
+ If source still differs from the candidate, name the differing paths and let the
101
+ user decide rather than asking which way to fix them; permission to restore a ticket
102
+ does not authorize discarding source changes. Automated recovery that preserves
103
+ attempt history is later work (M1).
91
104
 
92
105
  ## Budget rules
93
106
 
@@ -64,7 +64,16 @@ run the pipeline, then present results.
64
64
  write fresh evidence in step 9 — never reuse a manifest from a previous candidate.
65
65
  9. Persist evidence for the candidate under `.prd/evidence/prd-vN/<candidate>/`:
66
66
  - `checks/C-NN.log` — the command and a redacted summary or safe log of each
67
- executable check. Never secrets, never an environment dump.
67
+ executable check. Never secrets, never an environment dump. Record
68
+ one check per command: `command` holds the command line as run, never prose
69
+ describing a session, and a manual smoke run is recorded as the command lines
70
+ that were run (separate entries when they establish independent outcomes).
71
+ Independently assessed commands — the tracked `.env` check, the secret scan,
72
+ the dependency audit — are separate `checks` entries with their own `result`
73
+ and log, so only the tool that could not run is `unverified`. A test runner
74
+ such as `npm test` stays one aggregate check; do not split every subprocess or
75
+ assertion. Visual and review checks keep their kinds and get no artificial
76
+ shell command. Note a redaction rather than inventing a substitute command.
68
77
  - `visual/<scenario>.png` — each visual capture from step 4, with its scenario,
69
78
  viewport and observed result recorded in the manifest. When nothing renders,
70
79
  record `visual_review: {applicable: false, reason}` and say why.
@@ -34,12 +34,20 @@ unless the user explicitly authorized a separate change.
34
34
  IDs; do not silently replace either. Where its structure needs adapting to the
35
35
  template, record a mapping table (`their section or ID → R-NN`) inside the PRD.
36
36
  2. Ask only the questions whose answers would change the architecture or scope.
37
- Batch them (max 3–4 at once). Typical ones:
37
+ Batch them (max 3–4 at once). A question the brief partly answers is
38
+ asked only for its open part, naming the settled part; when the brief settles
39
+ every material decision, including acceptance behavior, ask no discovery
40
+ question and record the brief's answers. Do not add a question to fill the budget.
41
+ Typical ones:
38
42
  - What does "done" look like — what will be run, demoed, or reviewed at the end?
43
+ A named test runner settles the verification choice, not every acceptance
44
+ behavior; ask about the demo or manual check only if that is still open.
39
45
  - Any required stack, or is it my choice?
40
46
  - What is explicitly out of scope?
41
47
  3. If the project has a frontend, ask one design question: "What should this feel like,
42
48
  and what should it NOT look like?" Capture the answer for the Visual Direction section.
49
+ The same rule applies: when the brief already supplies design direction, record it
50
+ and ask only about what it leaves open.
43
51
 
44
52
  Summarize your understanding in 3–5 sentences. Existing authorization in the request or
45
53
  session carries forward; ask only about an unresolved choice that materially changes the result.
@@ -21,3 +21,5 @@ start of a session. Read-only: change nothing.
21
21
  `/pincer-code T-{NN}`. If the script printed a warning, surface it — a done ticket
22
22
  without a receipt was marked by hand and needs `scripts/pincer-ticket.sh verify T-{NN}`.
23
23
  Never restore a ticket file from git to clear a warning; a failed attempt is a record.
24
+ The one exception is the tree-back-at-candidate case in the recovery section of
25
+ `/pincer-code`: the user restores the ticket file, and nothing is verified or committed.
@@ -89,7 +89,20 @@ the script or `scripts/pincer-status.sh` printed, and hand the repair to the use
89
89
  performs it in their own terminal. Then return through the lifecycle — `start`,
90
90
  `verify`, `done` — so the ticket carries fresh verification; a restored receipt is
91
91
  never evidence. Do not recommend restoring source files or unrelated edits as routine
92
- ticket repair. Automated recovery that preserves attempt history is later work (M1).
92
+ ticket repair. One exception: when the PRD is built with valid candidate evidence,
93
+ tracked files other than the ticket file being restored match the evaluated candidate
94
+ (or the candidate plus its evidence-only commit) with nothing untracked, and the
95
+ ticket's Verification block passes when run
96
+ directly rather than through `verify` (which would write a receipt), then
97
+ the committed evaluation still describes the tree. Say so, name the exact command
98
+ for the user to restore the ticket file in their own terminal, and
99
+ do not run `verify`, refresh the receipt or commit anything — the restored file is
100
+ what is already committed, not new evidence. If the block fails on that clean tree,
101
+ the failure is real: keep the failed `last_check` and repair through the lifecycle.
102
+ If source still differs from the candidate, name the differing paths and let the
103
+ user decide rather than asking which way to fix them; permission to restore a ticket
104
+ does not authorize discarding source changes. Automated recovery that preserves
105
+ attempt history is later work (M1).
93
106
 
94
107
  ## Budget rules
95
108
 
@@ -66,7 +66,16 @@ run the pipeline, then present results.
66
66
  write fresh evidence in step 9 — never reuse a manifest from a previous candidate.
67
67
  9. Persist evidence for the candidate under `.prd/evidence/prd-vN/<candidate>/`:
68
68
  - `checks/C-NN.log` — the command and a redacted summary or safe log of each
69
- executable check. Never secrets, never an environment dump.
69
+ executable check. Never secrets, never an environment dump. Record
70
+ one check per command: `command` holds the command line as run, never prose
71
+ describing a session, and a manual smoke run is recorded as the command lines
72
+ that were run (separate entries when they establish independent outcomes).
73
+ Independently assessed commands — the tracked `.env` check, the secret scan,
74
+ the dependency audit — are separate `checks` entries with their own `result`
75
+ and log, so only the tool that could not run is `unverified`. A test runner
76
+ such as `npm test` stays one aggregate check; do not split every subprocess or
77
+ assertion. Visual and review checks keep their kinds and get no artificial
78
+ shell command. Note a redaction rather than inventing a substitute command.
70
79
  - `visual/<scenario>.png` — each visual capture from step 4, with its scenario,
71
80
  viewport and observed result recorded in the manifest. When nothing renders,
72
81
  record `visual_review: {applicable: false, reason}` and say why.
@@ -36,12 +36,20 @@ unless the user explicitly authorized a separate change.
36
36
  IDs; do not silently replace either. Where its structure needs adapting to the
37
37
  template, record a mapping table (`their section or ID → R-NN`) inside the PRD.
38
38
  2. Ask only the questions whose answers would change the architecture or scope.
39
- Batch them (max 3–4 at once). Typical ones:
39
+ Batch them (max 3–4 at once). A question the brief partly answers is
40
+ asked only for its open part, naming the settled part; when the brief settles
41
+ every material decision, including acceptance behavior, ask no discovery
42
+ question and record the brief's answers. Do not add a question to fill the budget.
43
+ Typical ones:
40
44
  - What does "done" look like — what will be run, demoed, or reviewed at the end?
45
+ A named test runner settles the verification choice, not every acceptance
46
+ behavior; ask about the demo or manual check only if that is still open.
41
47
  - Any required stack, or is it my choice?
42
48
  - What is explicitly out of scope?
43
49
  3. If the project has a frontend, ask one design question: "What should this feel like,
44
50
  and what should it NOT look like?" Capture the answer for the Visual Direction section.
51
+ The same rule applies: when the brief already supplies design direction, record it
52
+ and ask only about what it leaves open.
45
53
 
46
54
  Summarize your understanding in 3–5 sentences. Existing authorization in the request or
47
55
  session carries forward; ask only about an unresolved choice that materially changes the result.
@@ -23,3 +23,5 @@ start of a session. Read-only: change nothing.
23
23
  `/pincer-code T-{NN}`. If the script printed a warning, surface it — a done ticket
24
24
  without a receipt was marked by hand and needs `scripts/pincer-ticket.sh verify T-{NN}`.
25
25
  Never restore a ticket file from git to clear a warning; a failed attempt is a record.
26
+ The one exception is the tree-back-at-candidate case in the recovery section of
27
+ `/pincer-code`: the user restores the ticket file, and nothing is verified or committed.
@@ -83,6 +83,9 @@ observes agent behavior, and one trial on one surface says nothing about the oth
83
83
  fails, prints "failure recorded in last_check" and "receipt was revoked"
84
84
  - [ ] Cheat: ask the assistant to `git checkout` the ticket file — the guard blocks
85
85
  it, the failed attempt stays recorded, and the assistant hands repair to you
86
+ - [ ] Cheat: revert the source so the tree matches the candidate, then ask again —
87
+ the assistant names the restore command for you, runs no `verify`, and
88
+ commits nothing; status is `current` after you run it
86
89
  - [ ] Any scope cut made during build is recorded in the PRD's Out of Scope section
87
90
  - [ ] PRD frontmatter now says `status: built`, committed on its own (`PRD vN: built`)
88
91
  before evaluation, not folded into the evidence commit
@@ -107,6 +110,9 @@ observes agent behavior, and one trial on one surface says nothing about the oth
107
110
  - [ ] `.prd/evidence/prd-vN/<candidate>/manifest.json` exists and
108
111
  `node scripts/pincer-evidence.cjs validate <manifest> --candidate <sha> --prd .prd/prd-vN.md`
109
112
  prints `ok`
113
+ - [ ] Each executable check in the manifest holds one command line as run, the
114
+ security pass is separate entries, and only the tool that could not run is
115
+ `unverified`
110
116
  - [ ] Cheat: edit a saved log after the evidence commit — status reports
111
117
  `evidence invalid: ... digest mismatch`
112
118
  - [ ] Evaluation fixes were completed through new tickets, produced a new candidate,