@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.
- package/README.md +49 -0
- package/dist/conductor/loop.js +23 -1
- package/dist/conductor/types.d.ts +6 -0
- package/dist/config/defaults.js +11 -0
- package/dist/config/merge.js +93 -1
- package/dist/config/profiles.d.ts +36 -0
- package/dist/config/profiles.js +102 -0
- package/dist/config/recommended.d.ts +14 -0
- package/dist/config/recommended.js +28 -0
- package/dist/config/schema.js +159 -3
- package/dist/config/types.d.ts +52 -0
- package/dist/config/types.js +10 -0
- package/dist/extension/conductor-command.d.ts +2 -5
- package/dist/extension/conductor-command.js +18 -6
- package/dist/extension/factory.d.ts +2 -0
- package/dist/extension/factory.js +10 -3
- package/dist/routing/dispatch.d.ts +9 -2
- package/dist/routing/dispatch.js +115 -46
- package/dist/routing/state.d.ts +26 -0
- package/dist/routing/state.js +67 -1
- package/dist/routing/types.d.ts +7 -0
- package/dist/settings/console.d.ts +7 -0
- package/dist/settings/console.js +214 -35
- package/dist/settings/view.d.ts +3 -1
- package/dist/settings/view.js +8 -1
- package/package.json +1 -1
- package/skills/audit-docs/SKILL.md +3 -3
- package/skills/audit-pr/SKILL.md +8 -8
- package/skills/audit-pr/references/01_MERGE_GATES.md +3 -3
- package/skills/audit-pr/references/02_CLOSURE_AND_SCOPE_GATES.md +4 -5
- package/skills/audit-pr/references/03_AUDIT_PROCESS.md +1 -1
- package/skills/audit-pr/references/04_VERDICT.md +3 -3
- package/skills/audit-pr/references/05_ROUTING_AND_GUARDRAILS.md +2 -2
- package/skills/discover-repository-state/SKILL.md +3 -4
- package/skills/execute-phase/SKILL.md +1 -1
- package/skills/execute-phase/references/DESCOPE.md +1 -1
- package/skills/fold-findings/SKILL.md +8 -8
- package/skills/fold-findings/references/FOLD_PROCESS.md +6 -5
- package/skills/orchestration-envelope/SKILL.md +4 -3
- package/skills/phase-contract/SKILL.md +3 -4
- package/skills/pre-execution-review/SKILL.md +10 -7
- package/skills/pre-execution-review/references/POLICY.md +17 -8
- package/skills/product-audit/SKILL.md +12 -13
- package/skills/product-audit/references/AUDIT_PROCESS.md +1 -1
- package/skills/resolve-repository-state/SKILL.md +2 -3
- package/skills/review-change/SKILL.md +3 -3
- package/skills/review-change/references/ADVERSARIAL_RECOMMENDATION.md +1 -1
- package/skills/review-change/references/ADVERSARIAL_SETUP.md +1 -1
- package/skills/review-change/references/OUTPUT_AND_GUARDRAILS.md +5 -5
- package/skills/review-change/references/PERSIST_AND_DECIDE.md +7 -6
- package/skills/review-implementation/SKILL.md +1 -1
- package/skills/review-implementation/references/CLASSIFY.md +13 -11
- package/skills/triage-issue/SKILL.md +11 -10
- package/skills/triage-issue/references/ISSUE_PROCESS.md +11 -10
- package/skills/triage-issue/references/LABELS.md +3 -3
- package/skills/triage-issue/references/REVIEW_FINDING_PROCESS.md +6 -6
- package/skills/unit-lane/SKILL.md +24 -9
- package/skills/workflow-status/SKILL.md +12 -13
- package/skills/workflow-status/references/CRASH_RECOVERY.md +6 -6
- package/skills/workflow-status/references/ENVELOPE_CORE.md +1 -4
- package/skills/workflow-status/references/ENVELOPE_FIELDS.md +7 -7
- package/skills/workflow-status/references/PRE_EXECUTION.md +5 -0
- 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.
|
|
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
|
|
127
|
-
`/
|
|
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> + …) → /
|
|
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
|
-
`/
|
|
186
|
-
`<
|
|
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` | `/
|
|
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 — `/
|
|
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
|
|
62
|
-
planner (`/
|
|
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
|
|
65
|
-
|
|
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.
|
|
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
|
-
- `
|
|
40
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
-
`
|
|
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
|
-
|
|
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
|
-
-
|
|
31
|
-
|
|
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`
|
|
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
|
|
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
|
|
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 —
|
|
119
|
-
|
|
120
|
-
`
|
|
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
|
|
146
|
-
`execute-phase` resumes **only** on that current
|
|
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.
|
|
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:
|
|
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: /
|
|
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 → /
|
|
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
|
-
|
|
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
|
|
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
|
-
`/
|
|
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 /
|
|
202
|
-
├─ Roadmap: add .......... ▶
|
|
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 /
|
|
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 `/
|
|
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
|
-
(`
|
|
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.
|
|
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 → /
|
|
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.
|
|
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`, `/
|
|
46
|
-
`/
|
|
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 `
|
|
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. `
|
|
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
|
|
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
|
|
32
|
-
`/
|
|
33
|
-
user confirms the appended SPEC phase(s),
|
|
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
|
|
130
|
-
|
|
131
|
-
the
|
|
132
|
-
|
|
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? → /
|
|
135
|
-
|
|
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
|
|
@@ -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
|
|
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
|
|
113
|
-
(`/
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
`
|
|
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
|
|
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
|
|
156
|
-
|
|
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
|
|
176
|
-
| `product` | `/
|
|
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.
|
|
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 ─────────▶
|
|
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 →
|
|
113
|
-
├─ promote ─────────▶
|
|
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
|
|
120
|
-
feature, `/
|
|
121
|
-
|
|
122
|
-
|
|
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 → /
|
|
140
|
-
· fix-in-unit → /execute-phase <NN> P<k> or /fold-findings — never
|
|
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 —
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
|
42
|
-
|
|
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
|
|
47
|
-
|
|
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 `
|
|
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
|
-
|
|
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
|
|