@gtrabanco/pi-agentic-workflow 0.20.0 → 0.21.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/package.json +1 -1
- package/skills/fold-findings/SKILL.md +19 -7
- package/skills/fold-findings/references/FOLD_PROCESS.md +6 -4
- package/skills/review-change/SKILL.md +1 -1
- package/skills/review-change/references/PERSIST_AND_DECIDE.md +4 -3
- package/skills/review-implementation/SKILL.md +1 -1
- package/skills/review-implementation/references/CLASSIFY.md +1 -1
- package/skills/triage-issue/SKILL.md +1 -1
- package/skills/triage-issue/references/REVIEW_FINDING_PROCESS.md +8 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fold-findings
|
|
3
3
|
user-invocable: true
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.8.0
|
|
5
5
|
argument-hint: [finding-id …]
|
|
6
6
|
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
@@ -102,9 +102,9 @@ no schema field). Six fields, always present:
|
|
|
102
102
|
- Repaired: <F-ids with (VF-<n>) refs, joined ` + `, or `none`>
|
|
103
103
|
- Refuted/open: <F-ids joined ` + `, or `none`>
|
|
104
104
|
- Gate: <command> → exit <n> at head <40-hex sha> · n/a when nothing was folded
|
|
105
|
-
- Batch class: <all-repair-in-place | frozen (replan present) | none>
|
|
105
|
+
- Batch class: <all-repair-in-place | frozen (replan present) | frozen (product owner present) | none>
|
|
106
106
|
- Fold diff: <shortstat from a real `git diff` run> · none when nothing was folded
|
|
107
|
-
- Branch: <RE-REVIEW-REQUIRED (delta) | RE-REVIEW-OPTIONAL | RE-REVIEW-SKIPPED | REPLAN-ROUTE>
|
|
107
|
+
- Branch: <RE-REVIEW-REQUIRED (delta) | RE-REVIEW-OPTIONAL | RE-REVIEW-SKIPPED | REPLAN-ROUTE | PRODUCT-ROUTE>
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
- The `Gate` line carries the actual exit codes observed at the head the gate
|
|
@@ -114,9 +114,9 @@ no schema field). Six fields, always present:
|
|
|
114
114
|
- The `Fold diff` shortstat comes from a real `git diff` run over the batch's
|
|
115
115
|
commits.
|
|
116
116
|
- The `Batch class` derives from the taken queue's frozen rows only — the fold
|
|
117
|
-
never reclassifies (`all-repair-in-place`, `frozen (replan present)`,
|
|
118
|
-
`none` for an empty queue); the
|
|
119
|
-
`review-implementation`'s closed class set.
|
|
117
|
+
never reclassifies (`all-repair-in-place`, `frozen (replan present)`,
|
|
118
|
+
`frozen (product owner present)`, or `none` for an empty queue); the
|
|
119
|
+
vocabulary comes from `review-implementation`'s closed class set.
|
|
120
120
|
|
|
121
121
|
**Freeze-batch (replan present).** When the taken queue contains any row whose
|
|
122
122
|
frozen class is `replan-in-unit` or `decision-required`, nothing folds: no
|
|
@@ -129,6 +129,16 @@ and surface the decision to the user, never a planner. `<unit>` is the bare fold
|
|
|
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
|
|
|
132
|
+
**Freeze-batch (product owner present).** Any taken `fix-now` row whose `Route`
|
|
133
|
+
cell begins `product owner`, `product-owned` or `owned by product` (head-anchored,
|
|
134
|
+
identical to `scripts/unit-route.mjs`'s `PRODUCT_ROUTE` regex,
|
|
135
|
+
per `#293`) freezes the batch too —
|
|
136
|
+
nothing folds, no `folded: yes` flips, no commits: the fold loop repairs source,
|
|
137
|
+
never authority (`pre-execution-review` POLICY §4, `#293`). The receipt records
|
|
138
|
+
the `PRODUCT-ROUTE` branch and the retained row ids; the consumer is the
|
|
139
|
+
router's printed `route: product` lane hand-off. Full condition and hand-off
|
|
140
|
+
table: [`FOLD_PROCESS.md`](references/FOLD_PROCESS.md) §Batch classification.
|
|
141
|
+
|
|
132
142
|
## Guardrails
|
|
133
143
|
|
|
134
144
|
Scope is the ledger (or explicit ID subset); unlisted discoveries are proposals
|
|
@@ -175,6 +185,7 @@ or touched outside the queue.
|
|
|
175
185
|
· any BLOCKED (<F1> + <F2> + …) → supply the listed missing inputs, then re-run /fold-findings
|
|
176
186
|
· 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
187
|
· 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
|
|
188
|
+
· any PRODUCT (<F1> + <F2> + …) → /unit-lane <slug> or /unit-lane --fix <n> — the lane repairs the half, its review step re-judges it
|
|
178
189
|
```
|
|
179
190
|
|
|
180
191
|
Every `· ` sub-bullet is exactly one physical line — never hard-wrapped across
|
|
@@ -187,12 +198,13 @@ carry `<slug>` or `<n>` into a live hand-off.
|
|
|
187
198
|
|
|
188
199
|
## Closing-block decision branch (choose one, at emission)
|
|
189
200
|
|
|
190
|
-
The closing block picks exactly one of
|
|
201
|
+
The closing block picks exactly one of five outcomes. The **no-decision →
|
|
191
202
|
re-review default** holds whenever the turn carries no recorded prior consumer
|
|
192
203
|
decision to skip.
|
|
193
204
|
|
|
194
205
|
| Batch state | Branch | `→ Next:` (consumer) |
|
|
195
206
|
|---|---|---|
|
|
207
|
+
| freeze-batch (≥ 1 product-owned row) | `PRODUCT-ROUTE` | `/unit-lane <slug>` (feature) or `/unit-lane --fix <n>` (fix) when the router concludes `product` — the lane repairs the half through its `design` step, its `review` step re-judges it; the conclusion printed by `node scripts/unit-route.mjs <unit>` (discovery step the fold already ran) |
|
|
196
208
|
| 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
209
|
| `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
210
|
| `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 |
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
| Condition over the taken batch | Batch class | Fold behavior |
|
|
45
45
|
|---|---|---|
|
|
46
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
|
+
| ≥ 1 row with frozen class `fix-now` whose `Route` cell begins `product owner`, `product-owned` or `owned by product` (head-anchored, identical to `scripts/unit-route.mjs`'s `PRODUCT_ROUTE` regex: `/^(?:product[- ]owner\|product[- ]owned\|owned by product)\b/i`, per `#293`) | `frozen (product owner present)` | **freeze-batch** — nothing folds, no `folded: yes` flips, no commits; the receipt records the PRODUCT-ROUTE and every retained (unfolded) row id; the loop stops; the consumer is the conclusion printed by `node scripts/unit-route.mjs <unit>`: `route: product` and the lane hand-off — `/unit-lane <slug>` (feature) or `/unit-lane --fix <n>` (fix) — the lane repairs the half, its `review` step re-judges it, then `/execute-phase` on this unit |
|
|
47
48
|
| all taken rows foldable, none replan-class | `all-repair-in-place` | fold as today (group → fix → gate → commit → flip) |
|
|
48
49
|
| empty queue (zero findings taken) | `none` | receipt only |
|
|
49
50
|
|
|
@@ -51,8 +52,9 @@
|
|
|
51
52
|
class set (`CLASSIFY.md`); the receipt invents no parallel vocabulary.
|
|
52
53
|
|
|
53
54
|
The emitted branch follows the closing-block decision inputs in the skill:
|
|
54
|
-
a freeze-batch
|
|
55
|
-
|
|
55
|
+
a freeze-batch selects `REPLAN-ROUTE` for a `frozen (replan present)` batch
|
|
56
|
+
and `PRODUCT-ROUTE` for a `frozen (product owner present)` batch; otherwise
|
|
57
|
+
the docs-only file-set test (E-D3) and the frozen-severity-`high` override (E-D2) select
|
|
56
58
|
`RE-REVIEW-OPTIONAL` vs `RE-REVIEW-REQUIRED (delta)`.
|
|
57
59
|
8. **Disputes.** Non-reproducible/already-fixed/wrong findings become
|
|
58
60
|
`DISPUTED <evidence → user decision>`; never edit classification or create an
|
|
@@ -82,7 +84,7 @@ present:
|
|
|
82
84
|
- Repaired: <F-ids with (VF-<n>) refs, joined ` + `, or `none`>
|
|
83
85
|
- Refuted/open: <F-ids joined ` + `, or `none`>
|
|
84
86
|
- Gate: <command> → exit <n> at head <40-hex sha> · n/a when nothing was folded
|
|
85
|
-
- Batch class: <all-repair-in-place | frozen (replan present) | none>
|
|
87
|
+
- Batch class: <all-repair-in-place | frozen (replan present) | frozen (product owner present) | none>
|
|
86
88
|
- Fold diff: <shortstat from a real `git diff` run> · none when nothing was folded
|
|
87
|
-
- Branch: <RE-REVIEW-REQUIRED (delta) | RE-REVIEW-OPTIONAL | RE-REVIEW-SKIPPED | REPLAN-ROUTE>
|
|
89
|
+
- Branch: <RE-REVIEW-REQUIRED (delta) | RE-REVIEW-OPTIONAL | RE-REVIEW-SKIPPED | REPLAN-ROUTE | PRODUCT-ROUTE>
|
|
88
90
|
```
|
|
@@ -138,9 +138,10 @@ exact command tokens.
|
|
|
138
138
|
fix); the lane re-runs its plan step on this branch, its review step
|
|
139
139
|
gates, then `/execute-phase <unit>` (yes: list the finding ids; no: omit
|
|
140
140
|
this line)
|
|
141
|
-
· any finding owned by product? → /unit-
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
· any finding owned by product? → `node scripts/unit-route.mjs <unit>` prints
|
|
142
|
+
`route: product` + the lane hand-off — `/unit-lane <unit>` for a feature,
|
|
143
|
+
`/unit-lane --fix <n>` for a fix: the lane repairs the half, its review
|
|
144
|
+
step re-judges it (yes: list the ids; no: omit this line)
|
|
144
145
|
· independent proposals → present to the user; only the user routes them
|
|
145
146
|
to /triage-issue
|
|
146
147
|
· adversarial recommendation checklist fired AND this run was
|
|
@@ -175,7 +175,7 @@ finding in its `Route` cell.
|
|
|
175
175
|
|---|---|---|
|
|
176
176
|
| `source` | fold locally: `/fold-findings`, then re-run `/review-change` on the changed HEAD | — |
|
|
177
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 |
|
|
178
|
+
| `product` | run `node scripts/unit-route.mjs <unit>` → `route: product` → `/unit-lane <slug>` (feature) or `/unit-lane --fix <n>` (fix): the lane repairs the half through its `design` step, its `review` step re-judges it | patch the product claim into agreement in code |
|
|
179
179
|
| `environment` / `runtime` | the existing retry/`BLOCKED` paths | translate into a PASS, or an issue |
|
|
180
180
|
|
|
181
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.11.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
|
|
@@ -24,6 +24,13 @@ after `/fold-findings` leaves rows unresolved.
|
|
|
24
24
|
`decision-required`. Ask the user; do not guess or weaken the finish line.
|
|
25
25
|
- A finding disproved by current evidence is `disputed`. Preserve the row
|
|
26
26
|
and show the evidence; do not mark it folded or silently delete it.
|
|
27
|
+
- A `fix-now` finding whose owning stage is `product` — the finding is
|
|
28
|
+
against the product half, not the code — is `product-repair` (#293). Run
|
|
29
|
+
`node scripts/unit-route.mjs <unit>`; its `route: product` line prints the
|
|
30
|
+
lane hand-off (`/unit-lane <unit>` for a feature, `/unit-lane --fix <n>`
|
|
31
|
+
for a fix): the lane repairs the half, its review step re-judges it. Never
|
|
32
|
+
fold it into the current unit — the fold loop repairs source, not
|
|
33
|
+
authority (`pre-execution-review` POLICY §4).
|
|
27
34
|
|
|
28
35
|
4. Never implement the new phases in this triage turn. After a replan, ask the
|
|
29
36
|
user to continue manually with `/execute-phase <unit> P<n>` (or the fix
|
|
@@ -34,7 +41,7 @@ Return exactly one block per finding:
|
|
|
34
41
|
```text
|
|
35
42
|
REVIEW FINDING <F-k> — <short title>
|
|
36
43
|
Checked: <commands and evidence>
|
|
37
|
-
VERDICT: fix-now | replan-in-unit | decision-required | disputed
|
|
44
|
+
VERDICT: fix-now | replan-in-unit | decision-required | product-repair | disputed
|
|
38
45
|
Action taken: <current-unit fold/phase | unit-lane | user decision>
|
|
39
46
|
```
|
|
40
47
|
|