@gtrabanco/pi-agentic-workflow 0.15.2 → 0.16.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 (63) hide show
  1. package/README.md +49 -0
  2. package/dist/conductor/loop.js +23 -1
  3. package/dist/conductor/types.d.ts +6 -0
  4. package/dist/config/defaults.js +11 -0
  5. package/dist/config/merge.js +93 -1
  6. package/dist/config/profiles.d.ts +36 -0
  7. package/dist/config/profiles.js +102 -0
  8. package/dist/config/recommended.d.ts +14 -0
  9. package/dist/config/recommended.js +28 -0
  10. package/dist/config/schema.js +159 -3
  11. package/dist/config/types.d.ts +52 -0
  12. package/dist/config/types.js +10 -0
  13. package/dist/extension/conductor-command.d.ts +2 -5
  14. package/dist/extension/conductor-command.js +18 -6
  15. package/dist/extension/factory.d.ts +2 -0
  16. package/dist/extension/factory.js +10 -3
  17. package/dist/routing/dispatch.d.ts +9 -2
  18. package/dist/routing/dispatch.js +115 -46
  19. package/dist/routing/state.d.ts +26 -0
  20. package/dist/routing/state.js +67 -1
  21. package/dist/routing/types.d.ts +7 -0
  22. package/dist/settings/console.d.ts +7 -0
  23. package/dist/settings/console.js +214 -35
  24. package/dist/settings/view.d.ts +3 -1
  25. package/dist/settings/view.js +8 -1
  26. package/package.json +1 -1
  27. package/skills/audit-docs/SKILL.md +3 -3
  28. package/skills/audit-pr/SKILL.md +8 -8
  29. package/skills/audit-pr/references/01_MERGE_GATES.md +3 -3
  30. package/skills/audit-pr/references/02_CLOSURE_AND_SCOPE_GATES.md +4 -5
  31. package/skills/audit-pr/references/03_AUDIT_PROCESS.md +1 -1
  32. package/skills/audit-pr/references/04_VERDICT.md +3 -3
  33. package/skills/audit-pr/references/05_ROUTING_AND_GUARDRAILS.md +2 -2
  34. package/skills/discover-repository-state/SKILL.md +3 -4
  35. package/skills/execute-phase/SKILL.md +1 -1
  36. package/skills/execute-phase/references/DESCOPE.md +1 -1
  37. package/skills/fold-findings/SKILL.md +8 -8
  38. package/skills/fold-findings/references/FOLD_PROCESS.md +6 -5
  39. package/skills/orchestration-envelope/SKILL.md +4 -3
  40. package/skills/phase-contract/SKILL.md +3 -4
  41. package/skills/pre-execution-review/SKILL.md +10 -7
  42. package/skills/pre-execution-review/references/POLICY.md +17 -8
  43. package/skills/product-audit/SKILL.md +12 -13
  44. package/skills/product-audit/references/AUDIT_PROCESS.md +1 -1
  45. package/skills/resolve-repository-state/SKILL.md +2 -3
  46. package/skills/review-change/SKILL.md +3 -3
  47. package/skills/review-change/references/ADVERSARIAL_RECOMMENDATION.md +1 -1
  48. package/skills/review-change/references/ADVERSARIAL_SETUP.md +1 -1
  49. package/skills/review-change/references/OUTPUT_AND_GUARDRAILS.md +5 -5
  50. package/skills/review-change/references/PERSIST_AND_DECIDE.md +7 -6
  51. package/skills/review-implementation/SKILL.md +1 -1
  52. package/skills/review-implementation/references/CLASSIFY.md +13 -11
  53. package/skills/triage-issue/SKILL.md +11 -10
  54. package/skills/triage-issue/references/ISSUE_PROCESS.md +11 -10
  55. package/skills/triage-issue/references/LABELS.md +3 -3
  56. package/skills/triage-issue/references/REVIEW_FINDING_PROCESS.md +6 -6
  57. package/skills/unit-lane/SKILL.md +24 -9
  58. package/skills/workflow-status/SKILL.md +12 -13
  59. package/skills/workflow-status/references/CRASH_RECOVERY.md +6 -6
  60. package/skills/workflow-status/references/ENVELOPE_CORE.md +1 -4
  61. package/skills/workflow-status/references/ENVELOPE_FIELDS.md +7 -7
  62. package/skills/workflow-status/references/PRE_EXECUTION.md +5 -0
  63. package/skills/workflow-status/references/SENSOR_SIGNALS.md +1 -1
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: fold-findings
3
3
  user-invocable: true
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  argument-hint: [finding-id …]
6
6
  author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
7
7
  license: MIT
@@ -123,9 +123,9 @@ frozen class is `replan-in-unit` or `decision-required`, nothing folds: no
123
123
  `folded: yes` flips, no commits. The receipt records the `REPLAN-ROUTE` branch
124
124
  and every retained (unfolded) row id, and the loop stops. The consumer is the
125
125
  conclusion the already-run router printed, never the invocation itself: on
126
- `route: replan` the planner it named — `/plan-fix <n>` for a fix unit or
127
- `/plan-feature <slug>` for a feature unit; on `route: decision` stop and
128
- surface the decision to the user, never a planner. `<unit>` is the bare folder number or the full slug (both resolve). The invocation
126
+ `route: replan` the planner command it printed — `/unit-lane <slug>` for a
127
+ feature unit or `/unit-lane --fix <n>` for a fix unit; on `route: decision` stop
128
+ and surface the decision to the user, never a planner. `<unit>` is the bare folder number or the full slug (both resolve). The invocation
129
129
  `node scripts/unit-route.mjs <unit>` is the discovery step the fold already
130
130
  ran; it is never the recommendation.
131
131
 
@@ -173,7 +173,7 @@ or touched outside the queue.
173
173
  · all FOLDED (<F1> + <F2> + …) → /review-change — re-review the branch now that all listed findings are fixed
174
174
  · any DISPUTED (<F1> + <F2> + …) → user decision — resolve every evidenced dispute without creating backlog
175
175
  · any BLOCKED (<F1> + <F2> + …) → supply the listed missing inputs, then re-run /fold-findings
176
- · any REPLAN (<F1> + <F2> + …) → /plan-fix <n> or /plan-feature <slug> — the planner appends the proposed phases to the unit's SPEC, the user confirms them, then a fresh /review-plan must pass before /execute-phase on this unit
176
+ · any REPLAN (<F1> + <F2> + …) → /unit-lane <slug> or /unit-lane --fix <n> — the lane re-runs its plan step, appends the phases to the unit's SPEC; its review step gates before /execute-phase on this unit
177
177
  · any DECISION (<F1> + <F2> + …) → stop and surface the decision to the user — a `route: decision` conclusion names no planner, so the unit waits on the user before any plan or code change
178
178
  ```
179
179
 
@@ -182,8 +182,8 @@ several lines, never joined into one prose line.
182
182
 
183
183
  Replace placeholders with every actual affected finding ID before printing; never
184
184
  print `<F2>`, `…`, or a single representative ID in a live hand-off. Resolve the
185
- `/plan-fix <n>` / `/plan-feature <slug>` unit argument the same way — never carry
186
- `<n>` or `<slug>` into a live hand-off.
185
+ `/unit-lane <slug>` / `/unit-lane --fix <n>` unit argument the same way — never
186
+ carry `<slug>` or `<n>` into a live hand-off.
187
187
 
188
188
  ## Closing-block decision branch (choose one, at emission)
189
189
 
@@ -193,7 +193,7 @@ decision to skip.
193
193
 
194
194
  | Batch state | Branch | `→ Next:` (consumer) |
195
195
  |---|---|---|
196
- | freeze-batch (≥ 1 replan-class row) | `REPLAN-ROUTE` | `/plan-fix <n>` (fix) or `/plan-feature <slug>` (feature) when the router concludes `replan` — user confirms, fresh `/review-plan` passes, then `/execute-phase` on this unit; on `route: decision` stop and surface the decision to the user — the conclusion printed by `node scripts/unit-route.mjs <unit>` (discovery step the fold already ran) |
196
+ | freeze-batch (≥ 1 replan-class row) | `REPLAN-ROUTE` | `/unit-lane <slug>` (feature) or `/unit-lane --fix <n>` (fix) when the router concludes `replan` — user confirms, the lane's `plan` step appends the phases and its `review` step gates, then `/execute-phase` on this unit; on `route: decision` stop and surface the decision to the user — the conclusion printed by `node scripts/unit-route.mjs <unit>` (discovery step the fold already ran) |
197
197
  | `all-repair-in-place` + docs-only + no folded row severity `high` + prior consumer skip decision | `RE-REVIEW-SKIPPED` | skip — consumer has explicitly decided to skip the re-review |
198
198
  | `all-repair-in-place` + docs-only + no folded row severity `high` | `RE-REVIEW-OPTIONAL` | `/review-change` (default, delta mode) — or the consumer's recorded skip decision |
199
199
  | empty batch (class `none`) | `RE-REVIEW-OPTIONAL` | `/review-change` by default — safe: the head is unchanged |
@@ -43,7 +43,7 @@
43
43
 
44
44
  | Condition over the taken batch | Batch class | Fold behavior |
45
45
  |---|---|---|
46
- | ≥ 1 row with frozen class `replan-in-unit` or `decision-required` | `frozen (replan present)` | **freeze-batch** — nothing folds, no `folded: yes` flips, no commits; the receipt records the REPLAN-ROUTE and every retained (unfolded) row id; the loop stops; the consumer is the conclusion printed by `node scripts/unit-route.mjs <unit>` (discovery step the fold already ran), where `<unit>` is the bare folder number or the full slug (both resolve): on `route: replan` the planner — `/plan-fix <n>` (fix) or `/plan-feature <slug>` (feature) — user confirms, fresh `/review-plan` passes, then `/execute-phase` on this unit; on `route: decision` stop and surface the decision to the user, never a planner |
46
+ | ≥ 1 row with frozen class `replan-in-unit` or `decision-required` | `frozen (replan present)` | **freeze-batch** — nothing folds, no `folded: yes` flips, no commits; the receipt records the REPLAN-ROUTE and every retained (unfolded) row id; the loop stops; the consumer is the conclusion printed by `node scripts/unit-route.mjs <unit>` (discovery step the fold already ran), where `<unit>` is the bare folder number or the full slug (both resolve): on `route: replan` the planner command the router printed — `/unit-lane <slug>` (feature) or `/unit-lane --fix <n>` (fix) — the lane appends the phases and its `review` step gates, then `/execute-phase` on this unit; on `route: decision` stop and surface the decision to the user, never a planner |
47
47
  | all taken rows foldable, none replan-class | `all-repair-in-place` | fold as today (group → fix → gate → commit → flip) |
48
48
  | empty queue (zero findings taken) | `none` | receipt only |
49
49
 
@@ -58,11 +58,12 @@
58
58
  `DISPUTED <evidence → user decision>`; never edit classification or create an
59
59
  issue.
60
60
  9. **Replan.** If the smallest correct group exceeds a reviewable correction,
61
- run `node scripts/unit-route.mjs <unit>` — its `route: replan` line names the
62
- planner (`/plan-feature <slug>` or `/plan-fix <n>`) that appends the proposed
61
+ run `node scripts/unit-route.mjs <unit>` — its `route: replan` line prints the
62
+ planner command (`/unit-lane <slug>` for a feature, `/unit-lane --fix <n>` for
63
+ a fix) that appends the proposed
63
64
  phases to the unit's SPEC. The `<unit>` argument accepts the bare folder number
64
- or the full slug (both resolve). After the user confirms and a fresh
65
- `/review-plan <unit>` passes, `/execute-phase <unit>` completes them and ticks
65
+ or the full slug (both resolve). After the user confirms and the lane's
66
+ `review` step passes, `/execute-phase <unit>` completes them and ticks
66
67
  the rows. When the router concludes `route: decision` instead — a
67
68
  `decision-required` row with no replan row — stop and surface the decision to
68
69
  the user; no planner runs until the user decides.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: orchestration-envelope
3
3
  user-invocable: false
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
6
6
  license: MIT
7
7
  description: >
@@ -36,8 +36,9 @@ copy a second schema here.
36
36
  driver appends `renderOutputInstruction(skill)` to that invocation. It has
37
37
  the small model-owned fields: outcome, next intent/targets, blockers,
38
38
  questions, discoveries, and evidence references.
39
- - `ship-roadmap` is the conductor, not a worker profile: it keeps its native
40
- terminal `SHIP:` banner and is parsed by its own fixed turn contract.
39
+ - `advance` (the companion pi package command) is the conductor, not a worker
40
+ profile: it runs as deterministic code over the sensor envelope and never
41
+ emits a worker SkillOutcome.
41
42
  - Interactive invocations emit their normal human-readable reports; no driver
42
43
  result is required.
43
44
 
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: phase-contract
3
3
  user-invocable: false
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
6
6
  license: MIT
7
7
  description: >
8
8
  Internal contract: the single owner of the eight phase-lint rules, the fixed
9
9
  PASS/BLOCKED result, and the normalized phase fingerprint. Consumed by
10
- plan-feature-scaffold, plan-fix, and execute-phase. Not a menu entry.
10
+ `execute-phase` and the lane's `plan` step. Not a menu entry.
11
11
  ---
12
12
 
13
13
  # Phase Contract (internal)
@@ -18,8 +18,7 @@ the same rules before any edit. Nothing else may define what a valid phase is.
18
18
 
19
19
  ## When to use
20
20
 
21
- - `plan-feature-scaffold` — lint every phase of a feature plan before emission.
22
- - `plan-fix` — lint every phase of a fix SPEC before commit.
21
+ - The lane's `plan` step — lint every phase before emission.
23
22
  - `execute-phase` — phase-lint pre-flight guard before editing a phase.
24
23
  - Templates store the contract version + fingerprint + lint result, never the
25
24
  eight rules (they point here).
@@ -1,14 +1,16 @@
1
1
  ---
2
2
  name: pre-execution-review
3
3
  user-invocable: false
4
- version: 2.5.1
4
+ version: 2.6.0
5
5
  author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
6
6
  license: MIT
7
7
  description: >
8
8
  Internal owner of the pre-execution review cycle and the planning ledgers:
9
9
  independence, unioned findings, counter-evidence dismissal, no-progress,
10
10
  `CONVERGENCE-ANOMALY`, and the evidence/obligation/findings tables. Consumed by
11
- `review-spec`, `review-plan`, and the authoring skills. Not a menu entry.
11
+ `execute-phase`, `review-change`, and the lane's authoring steps for the
12
+ **planning-ledger shapes and ownership**; the pre-execution verdict owners
13
+ (`review-spec`/`review-plan`) were retired by feature 61. Not a menu entry.
12
14
  ---
13
15
 
14
16
  # Pre-Execution Review Policy (internal)
@@ -22,15 +24,16 @@ writes nothing, and emits no verdict of its own.
22
24
  evidence-grounding = how an author prepares and self-checks an artifact.
23
25
  pre-execution-review = how any pre-execution reviewer judges it, and what the
24
26
  frozen ledgers look like.
25
- review-spec / review-plan = the only skills that emit a pre-execution verdict.
27
+ lane (design/plan/review steps) = the surviving pre-execution path; feature 61
28
+ P8b retired the standalone review-spec / review-plan
29
+ verdict skills, so this pack now owns the ledger shapes
30
+ the lane and execute-phase consume, not a verdict gate.
26
31
  ```
27
32
 
28
33
  ## When to use
29
34
 
30
- - `review-spec` / `review-plan` — before the first check and again before any
31
- repeat, repair, or synthesis step.
32
- - `design-feature`, `plan-feature`, `plan-feature-scaffold`, `plan-fix` — when
33
- writing the ledgers and when a review comes back failed.
35
+ - The lane's `plan`/`review` steps — when writing the ledgers and when a review
36
+ comes back failed.
34
37
  - Nothing else. Candidate-source review (`review-change`), merge gating
35
38
  (`audit-pr`) and execution (`execute-phase`) keep their own contracts; this
36
39
  skill adds no authority over them.
@@ -1,6 +1,14 @@
1
+ ## Status (feature 61 P8b)
2
+
3
+ `review-spec` and `review-plan` are retired and
4
+ absorbed into the lane. This document now governs the **planning-ledger shapes
5
+ and ownership** (`LEDGERS.md`) that `execute-phase` and `review-change` consume;
6
+ the spec/plan review-cycle semantics below are retained for the legacy units
7
+ that still carry those receipts and are not applied by any live skill.
8
+
1
9
  ## The pre-execution review cycle
2
10
 
3
- Both `review-spec` and `review-plan` run this cycle. The stage files add only
11
+ Both `review-spec` and `review-plan` ran this cycle. The stage files added only
4
12
  what is specific to their artifact set.
5
13
 
6
14
  ### 1. Independence
@@ -97,10 +105,11 @@ outside this policy and can never be translated into a PASS.
97
105
 
98
106
  A **third cycle never** starts without explicit user instruction: after two
99
107
  consecutive unconverged cycles the orchestrator's `stop-review-loop-cap` refusal
100
- stops a further `review-spec`/`review-plan` invocation, names `design-feature` as
108
+ stops a further spec/plan review-cycle invocation, names the lane's `design` step
109
+ as
101
110
  the human route, and a PASS resets the count. An unconverged loop ends in the
102
111
  `needs-design` verdict where the verdict vocabulary sanctions it (the spec stage)
103
- and in the refusal plus `design-feature` routing at the plan stage. The guards
112
+ and in the refusal plus the lane's `design` routing at the plan stage. The guards
104
113
  above gate **blind re-reviews** — an identical snapshot with the identical
105
114
  question — and never a repair performed in response to a persisted verdict: a
106
115
  repair turn whose input is a FAIL/NEEDS-DESIGN receipt produces a new snapshot by
@@ -115,9 +124,9 @@ a count and never waives a finding.
115
124
  - A PASS earned by dropping a finding to `info`, by narrowing a check, or by
116
125
  editing a validator/test to accept the artifact.
117
126
  - A silent second cycle, a silent dismissal, or a silent substitute receipt.
118
- - An automatic forge issue. No route in the pre-execution set — `evidence-grounding`
119
- readiness, `review-spec`, `review-plan`, `plan-feature-scaffold`, `plan-fix`,
120
- `execute-phase`, `workflow-status`, `ship-roadmap`, `review-change`,
127
+ - An automatic forge issue. No route in the pre-execution set — the lane's
128
+ `research`/`design`/`plan`/`review` steps, `execute-phase`, `workflow-status`,
129
+ `advance`, `review-change`,
121
130
  `audit-pr` — creates one for a planning gap, and none defers
122
131
  an obligation to a future issue: the row stays in the unit's ledger, open, until
123
132
  the **user** amends the governing SPEC. A blocker that says "file an issue" is a
@@ -142,8 +151,8 @@ One rule, same shape for every consumer:
142
151
  and obligation ledgers, built from the artifacts as they stand today — and leave
143
152
  `ACCEPTANCE.md`, `PLAN.md`, `TASKS.md`, the phase commits and any older receipt
144
153
  byte-identical. Rewriting an old verdict, its digest, or its date is forgery.
145
- - **Re-review, then resume.** The adopted unit runs `/review-plan` like any other and
146
- `execute-phase` resumes **only** on that current `PLAN-REVIEW-PASS`. A pre-28 unit
154
+ - **Re-review, then resume.** The adopted unit re-runs the lane's `review` step like any other and
155
+ `execute-phase` resumes **only** on that current verdict. A pre-lane unit
147
156
  is never grandfathered in on the strength of its roadmap status.
148
157
  - **No retroactive defect.** A missing ledger means the unit predates the gate, not
149
158
  that its author was wrong; report it as `legacy`, never as a finding against them.
@@ -2,7 +2,7 @@
2
2
  name: product-audit
3
3
  user-invocable: true
4
4
  disable-model-invocation: true
5
- version: 3.2.1
5
+ version: 3.3.0
6
6
  metadata:
7
7
  opencode/autoinvoke: false
8
8
  argument-hint: <path-or-area> (optional — defaults to the whole product)
@@ -117,7 +117,7 @@ Verdict: <one-line honest health verdict>
117
117
  (none — <why>)
118
118
 
119
119
  ### Roadmap — add
120
- - <feature> — from: F<k> — <rationale & opportunity> — route: plan-feature
120
+ - <feature> — from: F<k> — <rationale & opportunity> — route: /unit-lane --from-issue <n>
121
121
  (none — <why>)
122
122
 
123
123
  ### Roadmap — remove / revise
@@ -126,7 +126,7 @@ Verdict: <one-line honest health verdict>
126
126
 
127
127
  ### Tooling — register / re-design
128
128
  - <skill|MCP> — register in AGENTS.md (Optional review extras): <why> — route: user edits AGENTS.md
129
- - <skill|MCP> — would change <feature> scope: <why> — route: /design-feature <slug>
129
+ - <skill|MCP> — would change <feature> scope: <why> — route: /unit-lane <slug>
130
130
  (none — <why>)
131
131
 
132
132
  ## Manual-verification checklist (what automation can't confirm)
@@ -134,7 +134,7 @@ Verdict: <one-line honest health verdict>
134
134
 
135
135
  Finding set: F<k> + F<j> + F<m> (print every proposed finding; one finding → F<k>)
136
136
  → Next: /triage-issue <id> F<k> F<j> F<m> — classify the complete finding set in one batch (opens the ones that warrant it)
137
- · accepted bug/debt → /plan-fix · accepted capability → /plan-feature
137
+ · accepted bug/debt → /unit-lane --fix <n> · accepted capability → /unit-lane --from-issue <n>
138
138
  · nothing to act on → the persisted report is the record; move on
139
139
  ```
140
140
 
@@ -159,12 +159,12 @@ security items to track first").
159
159
  order, never a different letter per problem type. Once persisted, ids are
160
160
  frozen: a later audit gets a new audit id, never renumbers an old file; cross-audit
161
161
  lineage lives only in Delta mappings as `<audit-id> F<k>`, never global slugs or
162
- replaced ids. When the user accepts, route: `triage-issue` files/classifies,
163
- `plan-feature` adds roadmap work, `plan-fix` scopes a concrete fix.
162
+ replaced ids. When the user accepts, route: `triage-issue` files/classifies, `/unit-lane`
163
+ adds roadmap work or scopes a concrete fix.
164
164
  - **Never registers tooling or edits `AGENTS.md`.** The tooling sweep proposes a
165
- skill/MCP to register, but the user (or a routed `design-feature` run)
165
+ skill/MCP to register, but the user (or a routed `/unit-lane <slug>` run)
166
166
  performs the edit; a scope-affecting discovery routes to
167
- `/design-feature <slug>`, which the user approves.
167
+ `/unit-lane <slug>`, which the user approves.
168
168
  - Platform-adaptive: run only applicable axes; always list what you skipped and why.
169
169
  - **No silent caps.** If you sampled, prioritized, or time-boxed a dimension, say
170
170
  so — never present partial coverage as exhaustive.
@@ -198,10 +198,10 @@ product-audit (whole product, all axes, periodic)
198
198
  ├─ composes review-change axes (codebase-wide) + audit-docs (doc coherence)
199
199
  ├─ mines feature docs (decisions / known-issues / architecture-notes)
200
200
  ├─ sweeps installed skills / connected MCP servers (product-wide, periodic)
201
- └─ proposes ─┬─ Issues to open ........ ▶ triage-issue / plan-fix
202
- ├─ Roadmap: add .......... ▶ plan-feature
201
+ └─ proposes ─┬─ Issues to open ........ ▶ triage-issue / unit-lane --fix
202
+ ├─ Roadmap: add .......... ▶ unit-lane --from-issue
203
203
  ├─ Roadmap: remove/revise ▶ triage-issue / roadmap edit (user decides)
204
- └─ Tooling: register/re-design ▶ user edits AGENTS.md / design-feature
204
+ └─ Tooling: register/re-design ▶ user edits AGENTS.md / unit-lane
205
205
  ```
206
206
 
207
207
  - Broader than `review-change` (one change) and `audit-pr` (one PR); subsumes
@@ -221,5 +221,4 @@ product-audit (whole product, all axes, periodic)
221
221
  with the next incremental audit id, and printed in chat.
222
222
  - Nothing else was fixed, filed, or changed — the user decides what to act on.
223
223
  - The **closing `→ Next:` block is printed** — typically a batch
224
- `/triage-issue <id> F<k> …` for the proposed issues, then `/plan-feature` /
225
- `/plan-fix` for the accepted work.
224
+ `/triage-issue <id> F<k> …` for the proposed issues, then `/unit-lane` for the accepted work.
@@ -32,7 +32,7 @@ step (2–5). Each item ends with exactly one fallback; never pick another one m
32
32
  inventory freshness**: cross-check `docs/CAPABILITIES.md` against the code —
33
33
  roles, permissions, or cross-cutting subsystems present in the code but
34
34
  missing from the inventory (or vice versa) are a Process & docs finding
35
- (`design-feature`'s Integration closure is only as good as this file). If
35
+ (`unit-lane`'s design step Integration closure is only as good as this file). If
36
36
  the project has no inventory file, propose seeding it from the template —
37
37
  a finding, never an auto-fix.
38
38
  4. **Mine accumulated suggestions** — read every feature folder's `decisions.md`,
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: resolve-repository-state
3
3
  user-invocable: true
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  argument-hint: <contradiction-id>
6
6
  description: >
7
7
  Resolve an explicit Normalized Repository State contradiction. This is the
@@ -74,7 +74,6 @@ If human input is required:
74
74
  Otherwise:
75
75
 
76
76
  → Next: resume the interrupted workflow named by `Reported by` — continue from the resolved snapshot
77
- · planning was interrupted → /plan-feature <slug>
77
+ · planning was interrupted → /unit-lane <slug>
78
78
  · implementation was interrupted → /execute-phase <NN>
79
- (only while its `PLAN-REVIEW-PASS` is still current → else /review-plan <NN>)
80
79
  · review, audit, or status was interrupted → rerun that same skill
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: review-change
3
3
  user-invocable: true
4
- version: 3.7.1
4
+ version: 3.8.0
5
5
  argument-hint: <path-or-glob> [--adversarial N] [--synthesize]
6
6
  author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
7
7
  license: MIT
@@ -42,8 +42,8 @@ finding.
42
42
  ## Review-end turn boundary
43
43
 
44
44
  On `REVIEW-FAIL` or `NEEDS-DECISION`, this skill **ends at the report**: it
45
- never invokes `/fold-findings`, `/execute-phase`, `/plan-feature`,
46
- `/design-feature` or `/triage-issue` — those are separate user-initiated invocations,
45
+ never invokes `/fold-findings`, `/execute-phase`, `/unit-lane` or
46
+ `/triage-issue` — those are separate user-initiated invocations,
47
47
  run in a fresh turn (a programmatic outer driver may compose the same
48
48
  sequence in-turn, per `REVIEW_PROCESS.md`). The review's only mutations are the
49
49
  ledger commit (persist step 11) and, on `REVIEW-PASS` with a PR, the
@@ -23,7 +23,7 @@ model identity, so this skill never tries; it states the condition in prose
23
23
  and lets the human (or the orchestrator that knows which model is running)
24
24
  judge it.
25
25
 
26
- **N ladder (fixed).** `N=2` is the default (the `ship-roadmap` floor). Bump to
26
+ **N ladder (fixed).** `N=2` is the default (the `advance` floor). Bump to
27
27
  `N=3` when either holds: the change has a security/auth surface, or all
28
28
  available reviewers share one model family (the third reviewer buys back some
29
29
  of the decorrelation a single family can't provide). `N>3` is **explicitly
@@ -11,7 +11,7 @@ fused table.
11
11
  no message (today's default). `--adversarial` passed **without** a valid N
12
12
  (no number given, or a number `< 2`) → usage error: state that `--adversarial`
13
13
  needs an integer N≥2 and fall back to the single-reviewer path — never
14
- silently run 1. `ship-roadmap`'s hard floor always passes `N=2`.
14
+ silently run 1. `advance`'s hard floor always passes `N=2`.
15
15
 
16
16
  **Why N reviewers.** A single adversarial, context-clean reviewer (see the
17
17
  turn-contract box) decorrelates some blind spots; running N independent
@@ -22,16 +22,16 @@ 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
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
25
+ — never a tracked issue, never a standalone replan. Classification honors
26
26
  `review-implementation`'s **current-unit contract**: in-scope defects are
27
27
  always fix-now / replan-in-unit — never a postpone/tradeoff/wontfix/new-issue
28
28
  escape.
29
29
  - **fix-now / `replan-in-unit`** (too large to fold as-is) → keeps its fix-now
30
30
  class and ledger row; run `node scripts/unit-route.mjs <unit>` — its
31
- `route: replan` line names the planner (`/plan-feature <unit>` for a feature,
32
- `/plan-fix <n>` for a fix). The planner re-cuts the plan on this branch, the
33
- user confirms the appended SPEC phase(s), a fresh `/review-plan <unit>` passes,
34
- and only then `execute-phase` runs them.
31
+ `route: replan` line prints the planner command (`/unit-lane <unit>` for a
32
+ feature, `/unit-lane --fix <n>` for a fix). The lane re-runs its plan step on
33
+ this branch, the user confirms the appended SPEC phase(s), its review step
34
+ gates, and only then `execute-phase` runs them.
35
35
  - **fix-now / `decision-required`** → stop and surface the decision to the user;
36
36
  the unit blocks until decided. No issue is created.
37
37
  - **proposal** (independent future capability) → batched in the report with a
@@ -126,13 +126,14 @@ exact command tokens.
126
126
  third cycle never starts without an explicit user instruction)
127
127
  · /audit-pr → only after the table is clean (not yet — findings open)
128
128
  · any finding routed replan-in-unit or owned by plan? → `node
129
- scripts/unit-route.mjs <unit>` prints `route: replan` and names the
130
- planner (`/plan-feature <unit>` for a feature, `/plan-fix <n>` for a fix);
131
- the planner re-cuts the plan on this branch, a fresh `/review-plan <unit>`
132
- passes, then `/execute-phase <unit>` (yes: list the finding ids; no: omit
129
+ scripts/unit-route.mjs <unit>` prints `route: replan` and the planner
130
+ command (`/unit-lane <unit>` for a feature, `/unit-lane --fix <n>` for a
131
+ fix); the lane re-runs its plan step on this branch, its review step
132
+ gates, then `/execute-phase <unit>` (yes: list the finding ids; no: omit
133
133
  this line)
134
- · any finding owned by product? → /design-feature <unit>, then /review-spec
135
- <unit> (yes: list the ids; no: omit this line)
134
+ · any finding owned by product? → /unit-lane <unit> — the lane's design
135
+ step repairs the half, its review step re-judges it (yes: list the ids;
136
+ no: omit this line)
136
137
  · independent proposals → present to the user; only the user routes them
137
138
  to /triage-issue
138
139
  · adversarial recommendation checklist fired AND this run was
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: review-implementation
3
3
  user-invocable: false
4
- version: 1.9.0
4
+ version: 1.10.0
5
5
  argument-hint: <path-or-glob>
6
6
  allowed-tools: Read, Grep, Glob, Bash, WebFetch
7
7
  author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
@@ -85,7 +85,7 @@ in-scope capability complete (D2: complete capabilities, not short unit
85
85
  duration). Current-unit work has **only blocking outcomes**:
86
86
 
87
87
  - **fix-now** — it can fold directly. It is NEVER a tracked issue and NEVER
88
- routes to `plan-fix`: it folds into the current unit's open phase (AC 12).
88
+ routes to a standalone replan: it folds into the current unit's open phase (AC 12).
89
89
  - **replan-in-unit** — it needs additional user-confirmed phases (see *Large
90
90
  in-scope fix-now → replan, never downgrade* below).
91
91
  - **decision-required** — a new product/architecture decision is unavoidable.
@@ -109,11 +109,12 @@ the user routes a proposal to `triage-issue`.
109
109
  An in-scope fix-now too large to fold as-is (multi-file redesign, or evidence
110
110
  the unit should have been split) keeps its **fix-now** class — size is never a
111
111
  reason to downgrade. Set its `Route` to **`replan-in-unit`**: run
112
- `node scripts/unit-route.mjs <unit>` — its `route: replan` line names the planner
113
- (`/plan-feature <unit>` or `/plan-fix <n>`) — and the unit's SPEC `## Phases`
114
- ledger gets one or more new phases covering the work, on the SAME branch, a fresh
115
- `/review-plan <unit>` passing before `execute-phase` runs them. It never routes to
116
- `plan-fix` for a new unit or a new issue (AC 12). Placement
112
+ `node scripts/unit-route.mjs <unit>` — its `route: replan` line prints the
113
+ planner command (`/unit-lane <unit>` for a feature, `/unit-lane --fix <n>` for a
114
+ fix) — and the unit's SPEC `## Phases`
115
+ ledger gets one or more new phases covering the work, on the SAME branch, the
116
+ lane's own `review` step passing before `execute-phase` runs them. It never routes to
117
+ a standalone planner for a new unit or a new issue (AC 12). Placement
117
118
  depends on whether the final `Hardening & PR` phase has already run:
118
119
 
119
120
  - **Hardening not yet executed** → insert the new phase(s) BEFORE it; the
@@ -150,10 +151,11 @@ your domains):
150
151
  ## Routing (what each class feeds)
151
152
 
152
153
  - **fix-now** → fold directly into the current unit's open phase; never a
153
- tracked issue, never `plan-fix` (AC 12).
154
+ tracked issue, never a standalone planner (AC 12).
154
155
  - **fix-now / `replan-in-unit`** → `node scripts/unit-route.mjs <unit>` prints
155
- `route: replan`; the planner it names re-cuts the SPEC `## Phases` ledger
156
- (user confirms), a fresh `/review-plan <unit>` passes, then `execute-phase`
156
+ `route: replan`; the planner command it prints re-cuts the SPEC `## Phases`
157
+ ledger
158
+ (user confirms), the lane's `review` step gates, then `execute-phase`
157
159
  runs the new phases — never a downgrade, never a tracked issue (AC 12).
158
160
  - **fix-now / `decision-required`** → stop and surface the decision; the unit
159
161
  blocks until the user decides. No issue is created.
@@ -172,8 +174,8 @@ finding in its `Route` cell.
172
174
  | Owning stage | Hand-off | Never |
173
175
  |---|---|---|
174
176
  | `source` | fold locally: `/fold-findings`, then re-run `/review-change` on the changed HEAD | — |
175
- | `plan` | run `node scripts/unit-route.mjs <unit>` → `route: replan`; the planning author re-cuts the artifact (SPEC `## Phases`, an obligation row, an acceptance mapping, a ledger) on the same branch with the user's confirmation, then a **fresh `/review-plan <unit>`** precedes `execute-phase` | fold it in code and leave the plan describing the old build |
176
- | `product` | `/design-feature <unit>` repairs the half, then `/review-spec <unit>` re-judges it | patch the product claim into agreement in code |
177
+ | `plan` | run `node scripts/unit-route.mjs <unit>` → `route: replan`; the planning author re-cuts the artifact (SPEC `## Phases`, an obligation row, an acceptance mapping, a ledger) on the same branch with the user's confirmation, then the lane's **`review` step** precedes `execute-phase` | fold it in code and leave the plan describing the old build |
178
+ | `product` | `/unit-lane <unit>` repairs the half through its `design` step, its `review` step re-judges it | patch the product claim into agreement in code |
177
179
  | `environment` / `runtime` | the existing retry/`BLOCKED` paths | translate into a PASS, or an issue |
178
180
 
179
181
  - `fix-now` with a `plan` or `product` owner keeps its severity but is **not**
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: triage-issue
3
3
  user-invocable: true
4
- version: 2.8.0
4
+ version: 2.9.0
5
5
  argument-hint: <issue-number> [more issue numbers…] | <audit-id> F<k> [F<j>…] | --prioritize-now <unit> F<k> [F<j>…]
6
6
  author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
7
7
  license: MIT
@@ -106,20 +106,21 @@ classification, label ownership, and persisted-output contracts do not change.
106
106
  ## Relationship to other skills
107
107
 
108
108
  ```
109
- ┌─ fix-now ─────────▶ plan-fix ─▶ execute-phase --fix
109
+ ┌─ fix-now ─────────▶ /unit-lane --fix <n> ─▶ the lane's implement step
110
110
  ├─ fix-in-unit ─────▶ execute-phase <NN> P<k> (fold into phase)
111
111
  triage-issue ────┤ or fold-findings (ledger row)
112
- │ or unit-route → plan-feature / plan-fix (replan)
113
- ├─ promote ─────────▶ plan-feature (router → from-issue)
112
+ │ or unit-route <unit> → /unit-lane <unit> (replan)
113
+ ├─ promote ─────────▶ /unit-lane --from-issue <n> (feature from issue)
114
114
  ├─ postpone ────────▶ dated comment, leave open
115
115
  └─ wontfix ─────────▶ propose close
116
116
  ```
117
117
 
118
118
  In review-finding mode, `replan-in-unit` runs `node scripts/unit-route.mjs
119
- <unit>`: its `route: replan` line names the planner (`/plan-feature` for a
120
- feature, `/plan-fix` for a fix), with new `P<n>` phases appended to the same
121
- unit and a fresh `/review-plan` before execution. The user manually runs those
122
- phases; this skill never implements them.
119
+ <unit>`: its `route: replan` line prints the planner command — `/unit-lane
120
+ <unit>` for a feature, `/unit-lane --fix <n>` for a fix — which re-runs the
121
+ lane's `plan` catalog step and appends new `P<n>` phases to the same unit. The
122
+ lane's own `review` step is the gate before execution. The user manually runs
123
+ those phases; this skill never implements them.
123
124
 
124
125
  ## Done when
125
126
 
@@ -136,8 +137,8 @@ phases; this skill never implements them.
136
137
 
137
138
  Batch:
138
139
  → Next: apply every verdict: #<n1> → <command> + #<n2> → <command> + #<n3> → <command>
139
- · fix-now → /plan-fix <n> · promote → /plan-feature <n>
140
- · fix-in-unit → /execute-phase <NN> P<k> or /fold-findings — never /plan-fix
140
+ · fix-now → /unit-lane --fix <n> · promote → /unit-lane --from-issue <n>
141
+ · fix-in-unit → /execute-phase <NN> P<k> or /fold-findings — never a new planner skill
141
142
  · postpone → dated comment, leave open · wontfix → propose close
142
143
  · same inconsistency across several issues → /product-audit (a recurring pattern,
143
144
  not isolated tickets — sweep the product rather than triaging one by one)
@@ -25,12 +25,11 @@
25
25
  append a provenance-marked row to the unit's `review-findings.md` (see
26
26
  *Ledger-append mechanism* below).
27
27
  - *changes the unit's shape* → **incremental replan** on the same unit:
28
- name the exact command — `design-feature <slug> "<instruction>"`
29
- (product half, upsert) for a product-shape change, `plan-feature
30
- <slug>` (re-run, engineering half) for an engineering-shape change, or
31
- a user-approved, dated `## Amendments` entry per #66's mechanism (fix
32
- units). Never write "replan if needed" — always name which of the
33
- three applies and why.
28
+ name the exact command — `/unit-lane <slug>` (the lane re-reads the
29
+ SPEC, re-triages, and re-runs its `design`/`plan` catalog steps) — or a
30
+ user-approved, dated `## Amendments` entry per #66's mechanism (fix
31
+ units). Never write "replan if needed" — always name which applies and
32
+ why.
34
33
  - *born as an un-amended descope of an unmerged unit* →
35
34
  **scope-bleed restore**: the route is restore-the-criterion-in-the-unit
36
35
  (no matching `## Amendments` entry); the issue closes as
@@ -38,13 +37,15 @@
38
37
  - No candidate matched → fall through to today's four-verdict
39
38
  classification below, unchanged.
40
39
  4. **Classify** into one of:
41
- - **fix-now** — defect or trigger met → route to `plan-fix` then
42
- `execute-phase --fix`; add the entry to the fix index. **High severity** →
40
+ - **fix-now** — defect or trigger met → route to `/unit-lane --fix <n>`
41
+ (creates the fix unit and triages it; the lane's `implement` step runs
42
+ it); add the entry to the fix index. **High severity** →
43
43
  apply the urgency label per *Urgency label vocabulary* above (`urgent` by
44
44
  default; `fix-next` when the call is "queue it next" rather than "maybe
45
45
  interrupt now" — see that section's table). Non-high severity → no label.
46
- - **promote-to-feature** — really new capability → route to `plan-feature`
47
- (the router handles the issue path). Apply the `promoted` disposition
46
+ - **promote-to-feature** — really new capability → route to
47
+ `/unit-lane --from-issue <n>` (creates the feature unit from the issue and
48
+ triages it). Apply the `promoted` disposition
48
49
  label per *Disposition label vocabulary* above.
49
50
  - **postpone** — valid but trigger unmet → leave open; post a **dated
50
51
  re-confirmation** comment stating what you checked and why it stays
@@ -2,7 +2,7 @@
2
2
 
3
3
  This skill is the **sole owner and sole writer** of the workflow's urgency
4
4
  labels. No other skill defines, spells, or applies them — `workflow-status`
5
- only *reads* them (labels-only, presence-only) and `ship-roadmap` only
5
+ only *reads* them (labels-only, presence-only) and `advance` only
6
6
  *consumes* what `workflow-status` reports.
7
7
 
8
8
  | Label | Color | Meaning |
@@ -38,8 +38,8 @@ verdict — never a separate, silent step:
38
38
  landing).
39
39
 
40
40
  A **fix-now + non-high** severity verdict routes normally (fix index +
41
- `plan-fix`) but applies **no** label — only high severity reaches the urgent
42
- tier.
41
+ `/unit-lane --fix <n>`) but applies **no** label — only high severity reaches
42
+ the urgent tier.
43
43
 
44
44
  ## Disposition label vocabulary (owned here)
45
45