@gtrabanco/pi-agentic-workflow 0.7.1 → 0.8.0

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.
Files changed (40) hide show
  1. package/README.es.md +22 -3
  2. package/README.md +21 -3
  3. package/dist/config/schema.js +32 -1
  4. package/dist/config/types.d.ts +10 -1
  5. package/dist/config/types.js +2 -0
  6. package/dist/extension/factory.js +26 -15
  7. package/dist/extension/index.js +44 -1
  8. package/dist/routing/dispatch.js +39 -3
  9. package/dist/routing/types.d.ts +15 -0
  10. package/dist/routing/types.js +2 -0
  11. package/dist/settings/console.d.ts +11 -0
  12. package/dist/settings/console.js +203 -19
  13. package/dist/settings/picker.d.ts +31 -0
  14. package/dist/settings/picker.js +93 -0
  15. package/dist/settings/view.js +4 -1
  16. package/package.json +13 -8
  17. package/skills/execute-phase/SKILL.md +6 -4
  18. package/skills/execute-phase/references/BATCH_AND_PORTABILITY.md +5 -3
  19. package/skills/execute-phase/references/CLOSEOUT.md +6 -4
  20. package/skills/execute-phase/references/FOLDING.md +2 -1
  21. package/skills/execute-phase/references/UNIT_LOOP.md +2 -1
  22. package/skills/pre-execution-review/SKILL.md +1 -1
  23. package/skills/pre-execution-review/references/LEDGERS.md +10 -7
  24. package/skills/pre-execution-review/references/SNAPSHOT.md +2 -2
  25. package/skills/review-change/SKILL.md +15 -2
  26. package/skills/review-change/references/OUTPUT_AND_GUARDRAILS.md +5 -4
  27. package/skills/review-change/references/PERSIST_AND_DECIDE.md +8 -0
  28. package/skills/review-change/references/REVIEW_PROCESS.md +4 -3
  29. package/skills/review-plan/SKILL.md +1 -1
  30. package/skills/review-plan/references/CHECKS.md +1 -1
  31. package/skills/review-plan/references/OUTPUT.md +2 -2
  32. package/skills/review-spec/SKILL.md +1 -1
  33. package/skills/review-spec/references/CHECKS.md +1 -1
  34. package/skills/review-spec/references/OUTPUT.md +1 -1
  35. package/skills/ship-roadmap/SKILL.md +2 -2
  36. package/skills/ship-roadmap/references/ADVANCE.md +1 -3
  37. package/skills/ship-roadmap/references/MODEL_ROUTING.md +1 -1
  38. package/skills/workflow-status/SKILL.md +1 -1
  39. package/skills/workflow-status/references/PRE_EXECUTION.md +1 -1
  40. package/skills/workflow-status/references/SENSOR_CORE.md +1 -1
@@ -5,7 +5,7 @@ digest**. One command produces it, so an author, a reviewer and a consumer canno
5
5
  drift apart while reading the same bytes.
6
6
 
7
7
  ```bash
8
- node scripts/pre-execution-snapshot.mjs build --stage <spec|plan> --unit <NN-slug|fix-N> \
8
+ bun scripts/pre-execution-snapshot.mjs build --stage <spec|plan> --unit <NN-slug|fix-N> \
9
9
  [--dir <artifact-dir>] [--unit-kind <feature|fix>] [--artifact-revision <id>] \
10
10
  [--source-revision <sha>] [--parent <64-hex>] [--json <out-file>]
11
11
  ```
@@ -61,7 +61,7 @@ Rules the builder enforces and no caller may improvise around:
61
61
  ### Re-verifying a receipt (consumers)
62
62
 
63
63
  ```bash
64
- node scripts/pre-execution-snapshot.mjs verify --stage <spec|plan> --unit <NN-slug|fix-N> \
64
+ bun scripts/pre-execution-snapshot.mjs verify --stage <spec|plan> --unit <NN-slug|fix-N> \
65
65
  [--dir <artifact-dir>] [--unit-kind <feature|fix>] [--receipt <receipt-id-or-digest>] \
66
66
  [--parent <64-hex>] [--policy <version>] [--source-revision <sha>] [--artifact-revision <id>]
67
67
  ```
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: review-change
3
3
  user-invocable: true
4
- version: 3.4.0
4
+ version: 3.5.0
5
5
  argument-hint: <path-or-glob> [--adversarial N] [--synthesize]
6
6
  author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
7
7
  license: MIT
@@ -37,6 +37,18 @@ For `REVIEW-FAIL` or `NEEDS-DECISION`, list every open finding ID in the closing
37
37
  recommendation, joined with ` + `; the review must never hand off only the first
38
38
  finding.
39
39
 
40
+ ## Review-end turn boundary
41
+
42
+ On `REVIEW-FAIL` or `NEEDS-DECISION`, this skill **ends at the report**: it
43
+ never invokes `/fold-findings`, `/execute-phase`, `/plan-feature`,
44
+ `/design-feature` or `/triage-issue` — those are separate user-initiated invocations,
45
+ run in a fresh turn (a programmatic outer driver may compose the same
46
+ sequence in-turn, per `REVIEW_PROCESS.md`). The review's only mutations are the
47
+ ledger commit (persist step 11) and, on `REVIEW-PASS` with a PR, the
48
+ receipt comment (persist step 12); it never folds a finding, executes a phase,
49
+ or edits code. A `REVIEW-FAIL`/`NEEDS-DECISION` turn closes when the report
50
+ block is printed (report step 13).
51
+
40
52
  Consume the internal [verification contract](<../verification-contract/SKILL.md>);
41
53
  the reviewer checks the same frozen `ACCEPTANCE.md` blob as the executor before
42
54
  mapping candidate evidence.
@@ -140,7 +152,8 @@ Orchestrates internal finders (`review-code`, `review-security`, `review-verify`
140
152
  one `review-implementation` classifier and `review-debt` transform, isolated by
141
153
  default; installed platform packs are optional. `triage-issue` is user-invoked
142
154
  only for independent proposals (D3). It is Stage 4: checkpoint reviews are
143
- optional, the end review is mandatory and fresh. `fix-now` folds in-unit,
155
+ optional, the end review is mandatory and fresh. `fix-now` is routed to the
156
+ unit's fold cycle — a separate `/fold-findings` invocation, never run by this review;
144
157
  `replan-in-unit` adds user-confirmed phases, and independent work becomes
145
158
  proposals. `audit-pr` consumes only the verified PR-comment receipt, never the
146
159
  chat report; `product-audit` is the periodic sweep. On `REVIEW-FAIL` the manual
@@ -21,10 +21,11 @@ Every finding gets a destination under the current-unit contract — none silent
21
21
  lost, and none becomes reviewer-created backlog (D3):
22
22
 
23
23
  - **fix-now** → persisted to the unit's `review-findings.md` fold ledger, then
24
- folded into the current phase (unmerged work) — never a tracked issue, never
25
- `plan-fix`. Classification honors `review-implementation`'s **current-unit
26
- contract**: in-scope defects are always fix-now / replan-in-unit — never a
27
- postpone/tradeoff/wontfix/new-issue escape.
24
+ routed to the current phase's fold cycle (`/fold-findings`, invoked after this review ends)
25
+ — never a tracked issue, never `plan-fix`. Classification honors
26
+ `review-implementation`'s **current-unit contract**: in-scope defects are
27
+ always fix-now / replan-in-unit — never a postpone/tradeoff/wontfix/new-issue
28
+ escape.
28
29
  - **fix-now / `replan-in-unit`** (too large to fold as-is) → keeps its fix-now
29
30
  class and ledger row; propose the new SPEC phase(s) to the user, then
30
31
  `execute-phase` on the same branch folds it.
@@ -37,6 +37,10 @@
37
37
  an uncommitted append hands the next review a dirty-tree stop. On
38
38
  `REVIEW-PASS` with an open PR no ledger write happens (the SHA-bound
39
39
  receipt is the durable record): head and posted receipt stay identical.
40
+ This skill's only mutations are this ledger commit (step 11) and, on
41
+ `REVIEW-PASS` with a PR, the receipt comment (step 12) — it never runs a
42
+ fold, executes a phase, or edits source (see the review-end turn boundary in
43
+ the SKILL.md Turn contract).
40
44
  12. **Close out the final-review receipt before reporting.** First derive the
41
45
  `Decision` from step 7 and persist step 11. Then, before printing any line of
42
46
  the fixed report block or the `→ Next:` block, complete the receipt action
@@ -112,6 +116,10 @@
112
116
  line — each sub-bullet is its own line, exactly as quoted below.
113
117
  For `REVIEW-FAIL` or `NEEDS-DECISION`, list every open finding ID in the
114
118
  closing recommendation, joined with ` + `; never hand off only the first.
119
+ The `→ Next:` block is a **recommendation, not a to-do list**: it names what
120
+ the *next* user-initiated invocation should be, and this turn ends when the
121
+ report block (step 13) is printed — emit the block and end the run; do not
122
+ begin the recommended command.
115
123
 
116
124
  **`Decision: REVIEW-FAIL`** (any fix-now finding open) — the recommended line
117
125
  is the fold, never the merge gate. Findings were persisted in step 11; **no
@@ -148,8 +148,8 @@
148
148
  and a human must check — visual correctness, real-device/locale behavior, UX
149
149
  feel, perf under load, anything marked *verify*. Be explicit so the dev has zero
150
150
  doubt about what to eyeball.
151
- 11. **Route the outcomes.** fix-now findings fold into the current unit (or gain
152
- user-confirmed phases via replan-in-unit); decision-required stops for the
151
+ 11. **Route the outcomes.** fix-now findings are routed to the unit's fold cycle (a separate `/fold-findings` invocation, never run by this review), or gain
152
+ user-confirmed phases via replan-in-unit; decision-required stops for the
153
153
  user's decision; genuinely independent future capabilities become
154
154
  **non-blocking proposals** — batched in the report with a trigger, and
155
155
  **never** sent to `triage-issue` automatically (D3). `review-change` creates
@@ -176,4 +176,5 @@ A **third cycle never starts** unless the user explicitly instructs it — it is
176
176
  the user's escape, never a reviewer election. The residue routes to
177
177
  `triage-issue --prioritize-now` (or the programmatic outer driver), and a unit
178
178
  that needs a third cycle has a planning or root-cause defect, not a review
179
- deficit.
179
+ deficit. Re-runs count **separate review invocations**, not in-session steps:
180
+ `/review-change` is invoked by the user in a fresh turn each time.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: review-plan
3
3
  user-invocable: true
4
- version: 1.6.0
4
+ version: 1.6.1
5
5
  argument-hint: <NN-slug | fix-N | path/to/SPEC.md> [--adversarial N]
6
6
  author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
7
7
  license: MIT
@@ -51,7 +51,7 @@ tables is a finding. Either way `review-plan` reads the **whole** table
51
51
 
52
52
  Then digest it with the recipe owner —
53
53
  `pre-execution-review`'s [`SKILL.md`](<../../pre-execution-review/SKILL.md>) →
54
- SNAPSHOT reference: `node scripts/pre-execution-snapshot.mjs build --stage plan
54
+ SNAPSHOT reference: `bun scripts/pre-execution-snapshot.mjs build --stage plan
55
55
  --unit <unitId> --parent <Product snapshot digest>`
56
56
  (`verify` mode is what consumers run afterwards, and it shares the builder, so pass
57
57
  `--parent` there too on a feature unit; a **fix** unit omits it and binds `null`).
@@ -59,9 +59,9 @@ answer beside the verdict block before reporting. A feature plan run names `--pa
59
59
 
60
60
  ```bash
61
61
  # feature plan — binds the Product snapshot it descends from
62
- node scripts/pre-execution-snapshot.mjs verify --stage plan --unit <NN-slug> --dir docs/features/<NN>-<slug> --unit-kind feature --parent <64-hex>
62
+ bun scripts/pre-execution-snapshot.mjs verify --stage plan --unit <NN-slug> --dir docs/features/<NN>-<slug> --unit-kind feature --parent <64-hex>
63
63
  # fix unit — no Product half exists (D6)
64
- node scripts/pre-execution-snapshot.mjs verify --stage plan --unit fix-<N> --dir docs/fix/<N> --unit-kind fix
64
+ bun scripts/pre-execution-snapshot.mjs verify --stage plan --unit fix-<N> --dir docs/fix/<N> --unit-kind fix
65
65
  ```
66
66
 
67
67
  A digest-bound receipt requires `structural.fresh: true` (and, for a PASS verdict,
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: review-spec
3
3
  user-invocable: true
4
- version: 1.7.0
4
+ version: 1.7.1
5
5
  argument-hint: <NN-slug | path/to/SPEC.md>
6
6
  author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
7
7
  license: MIT
@@ -43,7 +43,7 @@ contract failures, not style.
43
43
 
44
44
  Then build the snapshot with the recipe owner —
45
45
  `pre-execution-review`'s [`SKILL.md`](<../../pre-execution-review/SKILL.md>) →
46
- SNAPSHOT reference: `node scripts/pre-execution-snapshot.mjs build --stage spec
46
+ SNAPSHOT reference: `bun scripts/pre-execution-snapshot.mjs build --stage spec
47
47
  --unit <unitId>` (canonical serializer: sorted keys, context rows ordered by kind
48
48
  then identifier, UTF-8, lowercase SHA-256). The digest is stdout's first line, so
49
49
  this recipe writes no file; `--json` is in-repository only. Paste the digest it
@@ -47,7 +47,7 @@ receipt, run the recipe owner's re-verify for this stage and paste the sensor's
47
47
  answer beside the verdict block before reporting:
48
48
 
49
49
  ```bash
50
- node scripts/pre-execution-snapshot.mjs verify --stage spec --unit <NN-slug> --dir docs/features/<NN>-<slug> --unit-kind <feature|fix>
50
+ bun scripts/pre-execution-snapshot.mjs verify --stage spec --unit <NN-slug> --dir docs/features/<NN>-<slug> --unit-kind <feature|fix>
51
51
  ```
52
52
 
53
53
  A digest-bound receipt requires `structural.fresh: true` (and, for a PASS verdict,
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ship-roadmap
3
3
  user-invocable: true
4
- version: 5.2.0
4
+ version: 5.2.1
5
5
  author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
6
6
  license: MIT
7
7
  argument-hint: "[--fullauto] | --continue [--fullauto]"
@@ -102,7 +102,7 @@ fallback only when a primitive is unavailable; keep stage order and safety floor
102
102
 
103
103
  | Relation | Skills/policy |
104
104
  |---|---|
105
- | Compose (same/lower tier) | `init-workspace`; JIT `design-feature` + `plan-feature-scaffold`; `plan-feature`; the review→fold manual path (`/fold-findings` → re-run `/review-change`); verdict-only `audit-pr`; `audit-docs`. |
105
+ | Compose (same/lower tier) | `init-workspace`; JIT `design-feature` + `plan-feature-scaffold`; `plan-feature`; the review→fold manual path (`/review-change` → `/fold-findings` on `REVIEW-FAIL` → re-run `/review-change`); verdict-only `audit-pr`; `audit-docs`. |
106
106
  | Cheap workers | `execute-phase` (fresh context/phase), mechanical folds, audit-blocker fixes; use the validated worker model. |
107
107
  | Human hand-off | Default merges, `product-audit` (higher effort), and report issue batches via `triage-issue`. |
108
108
  | Sibling | `workflow-status` supplies the strict sensor result; worker skills use the package-owned output profiles, while the conductor keeps its native `SHIP:` turn contract. |
@@ -70,9 +70,7 @@
70
70
  when the PR opens; any flips left at run end ride the report commit).
71
71
  Stop before the literal final `Hardening & PR` phase: PR owns that explicit
72
72
  phase so close-out has one owner. Never bundle phases into one worker.
73
- - **REVIEW** — compose the manual review→fold path in-turn (equal tier) once,
74
- `/fold-findings`, then re-run `/review-change`, over the complete PR
75
- candidate. It reuses a current exact-SHA receipt or runs `review-change`
73
+ - **REVIEW** — compose the review→fold path (equal tier) once: `/review-change`, then `/fold-findings` (on `REVIEW-FAIL`), then re-run `/review-change`. It reuses a current exact-SHA receipt or runs `review-change`
76
74
  context-clean, batches compatible fixes through `fold-findings`, and
77
75
  re-reviews only changed HEADs. Default correction budget is two; unchanged
78
76
  evidence stops NO-PROGRESS. L/sensitive features
@@ -9,7 +9,7 @@
9
9
  | Product review (REVIEW-SPEC) | opus/high | `review-spec` in a **clean context** (fresh subagent or outside headless call) — never the turn that wrote the product half; tier equals or exceeds the author's, so the ≥ rule holds |
10
10
  | Plan review (REVIEW-PLAN) | opus/high | `review-plan` in a **clean context**, same rule; it judges the plan the previous stage froze |
11
11
  | Phase execution, single-pass, fixes | **cheap worker** | fresh context per phase following `execute-phase`; Claude branch maps this role to `sonnet`, portable drivers use their validated worker tier |
12
- | Final review/correction loop | opus/high | compose the manual path `/fold-findings`, then re-run `/review-change`; it reuses a current exact-SHA receipt or reviews context-clean, and routes unresolved findings to `triage-issue --prioritize-now` |
12
+ | Final review/correction loop | opus/high | compose the manual path `/review-change`, then `/fold-findings` (only on `REVIEW-FAIL`), then re-run `/review-change`; it reuses a current exact-SHA receipt or reviews context-clean, and routes unresolved findings to `triage-issue --prioritize-now` |
13
13
  | Merge gate | opus/high | compose `audit-pr` in-turn (the highest-stakes automated verdict; must share one turn with the floor checks) |
14
14
  | Forge/git mechanics | — | Bash tool calls; no model judgment involved |
15
15
  | Final-report evidence gathering | haiku (optional) | fan-out subagents for grep-shaped per-feature log collection when ultracode is on; synthesis stays opus |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: workflow-status
3
3
  user-invocable: true
4
- version: 3.2.0
4
+ version: 3.2.1
5
5
  author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
6
6
  license: MIT
7
7
  argument-hint: "[--json-only] [--last-envelope <json|path>]"
@@ -12,7 +12,7 @@ For every unit whose resolved status is `defined`, `planned` or `in-progress`:
12
12
  unit's `progress.md` (no `progress.md`, or no block for that stage → `missing`).
13
13
  2. The `snapshot` line — the `sha256:` digest the receipt binds — and each bound
14
14
  artifact's current bytes: re-derive the digest with the recipe owner's verify
15
- mode — `node scripts/pre-execution-snapshot.mjs verify --stage <spec|plan> --unit
15
+ mode — `bun scripts/pre-execution-snapshot.mjs verify --stage <spec|plan> --unit
16
16
  <id> [--parent <64-hex>]` (`pre-execution-review` owns the recipe; a feature plan
17
17
  check needs the Product digest it descended from, a fix check binds no parent).
18
18
  Read `structural.reasonCode` and `structural.changedPaths` out of the JSON — they
@@ -71,7 +71,7 @@ live evidence against a frozen ledger remains a contradiction candidate.
71
71
  missing receipt there surfaces as a gate blocker; merged units stay excluded
72
72
  (the merge itself closes their gates). Read the stage's
73
73
  newest receipt block, re-derive the bound digest with the recipe owner's
74
- verify mode (`node scripts/pre-execution-snapshot.mjs verify --stage
74
+ verify mode (`bun scripts/pre-execution-snapshot.mjs verify --stage
75
75
  <spec|plan> --unit <id> [--parent <64-hex>]` — a snapshot digest is a canonical SHA-256, never a
76
76
  git blob id; `structural.reasonCode` names the dimension that drifted), and
77
77
  label the stage `current`/`missing`/`stale`/`wrong-stage`/`substitute`/