@gtrabanco/pi-agentic-workflow 0.12.0 → 0.13.2
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 +5 -4
- package/skills/audit-docs/SKILL.md +6 -5
- package/skills/audit-pr/SKILL.md +2 -2
- package/skills/design-feature/SKILL.md +1 -1
- package/skills/evidence-grounding/SKILL.md +1 -1
- package/skills/execute-phase/SKILL.md +2 -2
- package/skills/execute-phase/references/EXECUTION_CONTRACT.md +19 -0
- package/skills/execute-phase/references/FOLDING.md +9 -2
- package/skills/fold-findings/SKILL.md +6 -4
- package/skills/generate-docs/SKILL.md +1 -1
- package/skills/implementation-discovery/SKILL.md +1 -1
- package/skills/init-workspace/SKILL.md +1 -1
- package/skills/log-session/SKILL.md +1 -1
- package/skills/orchestration-envelope/SKILL.md +1 -1
- package/skills/phase-contract/SKILL.md +1 -1
- package/skills/plan-feature/SKILL.md +5 -4
- package/skills/plan-feature-from-issue/SKILL.md +1 -1
- package/skills/plan-feature-scaffold/SKILL.md +1 -1
- package/skills/plan-fix/SKILL.md +1 -1
- package/skills/planning-preflight/SKILL.md +1 -1
- package/skills/pre-execution-review/SKILL.md +2 -2
- package/skills/pre-execution-review/references/LEDGERS.md +35 -2
- package/skills/product-audit/SKILL.md +4 -4
- package/skills/product-audit/references/AUDIT_DIMENSIONS.md +1 -1
- package/skills/product-audit/references/AUDIT_PROCESS.md +1 -1
- package/skills/replan-findings/SKILL.md +4 -4
- package/skills/review-a11y/SKILL.md +1 -1
- package/skills/review-brand/SKILL.md +1 -1
- package/skills/review-change/SKILL.md +7 -5
- package/skills/review-change/references/OUTPUT_AND_GUARDRAILS.md +2 -1
- package/skills/review-change/references/PERSIST_AND_DECIDE.md +17 -11
- package/skills/review-code/SKILL.md +1 -1
- package/skills/review-debt/SKILL.md +1 -1
- package/skills/review-design/SKILL.md +1 -1
- package/skills/review-implementation/SKILL.md +2 -2
- package/skills/review-implementation/references/CLASSIFY.md +55 -0
- package/skills/review-perf/SKILL.md +1 -1
- package/skills/review-plan/SKILL.md +1 -1
- package/skills/review-security/SKILL.md +1 -1
- package/skills/review-seo/SKILL.md +1 -1
- package/skills/review-spec/SKILL.md +1 -1
- package/skills/review-verify/SKILL.md +1 -1
- package/skills/triage-issue/SKILL.md +1 -1
- package/skills/verification-contract/SKILL.md +1 -1
- package/skills/workflow-status/SKILL.md +2 -2
- package/skills/workflow-status/references/ENVELOPE_CORE.md +5 -4
- package/skills/workflow-status/references/SENSOR_CORE.md +5 -4
- package/skills/workflow-status/references/SENSOR_SIGNALS.md +3 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gtrabanco/pi-agentic-workflow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.2",
|
|
4
4
|
"description": "Pi package: canonical agentic-workflow skills, friendly slash commands, and per-command model routing.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"model-routing"
|
|
12
12
|
],
|
|
13
13
|
"license": "MIT",
|
|
14
|
-
"author": "Gabriel Trabanco <gtrabanco@users.noreply.github.com>",
|
|
14
|
+
"author": "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>",
|
|
15
15
|
"repository": {
|
|
16
16
|
"type": "git",
|
|
17
17
|
"url": "git+https://github.com/gtrabanco/agentic-workflow.git",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"scripts": {
|
|
45
45
|
"build": "tsc",
|
|
46
46
|
"bundle:skills": "bun scripts/bundle-skills.mjs",
|
|
47
|
+
"bundle:skills:check": "bun scripts/bundle-skills.mjs --check",
|
|
47
48
|
"test": "tsc && bun test test/*.test.mjs",
|
|
48
49
|
"test:node": "tsc && node --test test/*.test.mjs",
|
|
49
50
|
"prepublishOnly": "bun run build && bun run test",
|
|
@@ -51,10 +52,10 @@
|
|
|
51
52
|
"prepare": "bun run build"
|
|
52
53
|
},
|
|
53
54
|
"peerDependencies": {
|
|
54
|
-
"@earendil-works/pi-coding-agent": ">=0.
|
|
55
|
+
"@earendil-works/pi-coding-agent": ">=0.87.0"
|
|
55
56
|
},
|
|
56
57
|
"dependencies": {
|
|
57
|
-
"@earendil-works/pi-tui": "0.
|
|
58
|
+
"@earendil-works/pi-tui": "0.87.0"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
60
61
|
"@types/node": "24.13.3",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: audit-docs
|
|
3
3
|
user-invocable: true
|
|
4
|
-
version: 2.0
|
|
4
|
+
version: 2.1.0
|
|
5
5
|
argument-hint: "[--fix]"
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Audit cross-document coherence: docs ↔ roadmap ↔ code ↔ fix index ↔ issues.
|
|
@@ -95,7 +95,7 @@ run the command shown, don't infer.
|
|
|
95
95
|
`Docs site` block; otherwise state n/a).** Scan the declared content dir
|
|
96
96
|
for pages carrying `generated-by: agentic-workflow/generate-docs`. For
|
|
97
97
|
each: (a) its `source-unit` exists in the roadmap or fix index — no match
|
|
98
|
-
is an **orphan** (
|
|
98
|
+
is an **orphan** (low: propose deletion or re-attribution); (b) the
|
|
99
99
|
unit's PR merged **after** the page's `updated` date with commits touching
|
|
100
100
|
the page's subject paths — that page is **stale** (LOW: propose
|
|
101
101
|
`/generate-docs <unit>` to refresh). Cite page path + unit per finding.
|
|
@@ -118,16 +118,17 @@ say so.
|
|
|
118
118
|
```
|
|
119
119
|
AUDIT DOCS — scope: <docs tree / roadmap / fix index / issues checked>
|
|
120
120
|
|
|
121
|
-
| # | Check (1-
|
|
121
|
+
| # | Check (1-14) | Finding | Sev | Evidence | Proposed fix |
|
|
122
122
|
|---|-------------|---------|-----|----------|--------------|
|
|
123
123
|
| 1 | <which> | <what> | high|low | <path:line / #issue> | <smallest action> |
|
|
124
124
|
|
|
125
|
-
Checks run: <n>/
|
|
125
|
+
Checks run: <n>/14 (skipped: <which + why — absent structures only>)
|
|
126
126
|
Summary: <1-2 sentences>
|
|
127
127
|
Decision: PASS | FAIL (FAIL if any high-severity finding is open)
|
|
128
128
|
```
|
|
129
129
|
|
|
130
130
|
Sev: **high** = misleading or broken; **low** = cosmetic.
|
|
131
|
+
Only `high` and `low` are defined in this legend
|
|
131
132
|
3. **Fix only on request.** With explicit `--fix` (or user go-ahead), apply the
|
|
132
133
|
low-risk corrections (remove a merged fix-index row, fix a dead link, register
|
|
133
134
|
a missing roadmap entry, add a verified PR link to a bare `done` row). Leave judgment calls to the user.
|
package/skills/audit-pr/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: audit-pr
|
|
3
3
|
user-invocable: true
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.3.0
|
|
5
5
|
argument-hint: <pr-number> (optional — defaults to the current branch's PR)
|
|
6
6
|
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
@@ -51,7 +51,7 @@ independently evaluates only the delivery gates below.
|
|
|
51
51
|
✓ No review pass was composed or reconstructed: a missing/stale receipt is a
|
|
52
52
|
blocker, never a prompt to re-run review axes from this skill
|
|
53
53
|
✓ Closure integrity was evaluated and its result stated explicitly: pass /
|
|
54
|
-
blocker /
|
|
54
|
+
blocker / n-a (fix-governed PRs are always n-a; never skipped
|
|
55
55
|
silently)
|
|
56
56
|
✓ Scope integrity (descope) was evaluated and its result stated explicitly:
|
|
57
57
|
pass / blocker / n-a (no unit-referencing issues born on the branch → n-a;
|
|
@@ -3,7 +3,7 @@ name: design-feature
|
|
|
3
3
|
user-invocable: true
|
|
4
4
|
version: 3.5.0
|
|
5
5
|
argument-hint: <idea | NN-slug> [<instruction>]
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Turn a raw idea or existing feature into a designed product SPEC by completing
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: evidence-grounding
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.6.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal shared owner of evidence-grounded authoring: the fixed
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: execute-phase
|
|
3
3
|
user-invocable: true
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.7.0
|
|
5
5
|
argument-hint: <NN> [P<k>] | --fix <n> [P<k>] | [--max-attempts N] [--force]
|
|
6
6
|
allowed-tools: [Bash, Read, Edit, Write, MultiEdit]
|
|
7
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
7
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
8
8
|
license: MIT
|
|
9
9
|
description: >
|
|
10
10
|
Implement all remaining phases of a planned feature/fix by default, or one
|
|
@@ -57,6 +57,25 @@ never treat a missing marker as a blocker or crash condition.
|
|
|
57
57
|
Something forbidden looks necessary → stop, record it in `decisions.md` or
|
|
58
58
|
`known-issues.md`, and surface it — never do it silently.
|
|
59
59
|
|
|
60
|
+
## Gate-run mark
|
|
61
|
+
|
|
62
|
+
The phase completion gate records a `GATE-RAN` mark at the head it ran and
|
|
63
|
+
consumes an identical-head green mark instead of re-running. The mark's shape,
|
|
64
|
+
ownership, and reuse rule are declared in `LEDGERS.md` (§gate-ran@1).
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
GATE-RAN | HEAD <40-hex sha> | <cmds> | exit <code>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
- **Record**: whoever runs the project gate records a mark at the head the gate
|
|
71
|
+
actually ran. A green run is recorded; a red run is also recorded (exit code
|
|
72
|
+
≠ 0 is evidence, not silence).
|
|
73
|
+
- **Consume**: any skill may consume a green run only at the identical HEAD. A
|
|
74
|
+
changed head ⇒ re-run the gate.
|
|
75
|
+
- **Recorder column-sets**: `execute-phase:gate-ran-marks` (executor phase gates)
|
|
76
|
+
and `review-change:review-gate-ran-marks` (reviewer gate runs) are declared in
|
|
77
|
+
the `review-findings` truth-class row's owner cell.
|
|
78
|
+
|
|
60
79
|
## Phase completion gate — pass only if (every box, every phase)
|
|
61
80
|
|
|
62
81
|
```
|
|
@@ -23,8 +23,8 @@ end up "solved" locally but absent from the merged PR:
|
|
|
23
23
|
(known-issues.md entry resolved? progress.md notes the fold)
|
|
24
24
|
✓ Each folded finding's row in the unit's `review-findings.md` ledger (if one
|
|
25
25
|
exists — the ledger is optional; a unit with no fix-now findings has none)
|
|
26
|
-
flipped `folded: no → yes` — the one and only ledger state transition,
|
|
27
|
-
|
|
26
|
+
flipped `folded: no → yes` — the one and only ledger state transition,
|
|
27
|
+
`ledger-ownership@1` / `fold-findings:folded-flag` is the sole writer
|
|
28
28
|
✓ `git add` + `git commit` RUN (sha pasted) — e.g.
|
|
29
29
|
`fix(<scope>): fold review findings — <summary>`
|
|
30
30
|
✓ `git push` RUN (PR is open → every commit pushes immediately)
|
|
@@ -35,6 +35,13 @@ Then hand back to the gate that sent you (`/review-change` re-review, or
|
|
|
35
35
|
`/audit-pr` re-audit). Never report findings as resolved while any box is
|
|
36
36
|
unchecked — an unpushed fix does not exist for CI, the reviewer, or the merge.
|
|
37
37
|
|
|
38
|
+
## Gate-run mark (P4)
|
|
39
|
+
|
|
40
|
+
A `GATE-RAN` mark is appended to the unit's `review-findings.md` ledger at the
|
|
41
|
+
head the gate actually ran. The mark's shape and ownership rule are declared in
|
|
42
|
+
`LEDGERS.md` (§gate-ran@1). A green run is recorded; a red run is also recorded.
|
|
43
|
+
The identical-head reuse rule is documented in `EXECUTION_CONTRACT.md` (§gate-ran).
|
|
44
|
+
|
|
38
45
|
Final-phase / single-pass / fix hand-off:
|
|
39
46
|
|
|
40
47
|
```
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fold-findings
|
|
3
3
|
user-invocable: true
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.6.0
|
|
5
5
|
argument-hint: [finding-id …]
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Repair persisted fix-now findings in compatible atomic batches: root-cause
|
|
@@ -154,8 +154,10 @@ audit-pr ──BLOCKED─────┼──▶ fold-findings ──FOLDED─
|
|
|
154
154
|
│ ──BLOCKED──▶ user supplies missing input
|
|
155
155
|
```
|
|
156
156
|
|
|
157
|
-
`review-change`/`audit-pr` classify and persist;
|
|
158
|
-
`
|
|
157
|
+
`review-change`/`audit-pr` classify and persist;
|
|
158
|
+
`ledger-ownership@1` / `fold-findings:folded-flag` is the sole writer of
|
|
159
|
+
the `folded: no → yes` flip — this skill only flips that flag after a real
|
|
160
|
+
fix. `execute-phase`'s embedded fold checklist
|
|
159
161
|
is the inline fallback; this standalone path keeps frozen classification and its
|
|
160
162
|
forbidden list and never runs above its tier. `DISPUTED` stops for user evidence;
|
|
161
163
|
no issue is created.
|
|
@@ -3,7 +3,7 @@ name: generate-docs
|
|
|
3
3
|
user-invocable: true
|
|
4
4
|
version: 2.0.1
|
|
5
5
|
argument-hint: "[NN-slug | fix-n | path/glob] [--review]"
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Generate incremental, diff-driven developer guides through the project's
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: implementation-discovery
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.1.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
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 bounded pre-write implementation
|
|
@@ -3,7 +3,7 @@ name: init-workspace
|
|
|
3
3
|
user-invocable: true
|
|
4
4
|
version: 2.9.0
|
|
5
5
|
argument-hint: <target-dir>
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Adapt the workflow scaffold to a new repository or add only missing substrate
|
|
@@ -3,7 +3,7 @@ name: log-session
|
|
|
3
3
|
user-invocable: true
|
|
4
4
|
version: 2.2.0
|
|
5
5
|
argument-hint: "[note to prepend to the entry]"
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Append a structured entry to the project's session log (`docs/LOGS.md`):
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: orchestration-envelope
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 2.2.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal machine-result contract for headless agentic-workflow drivers. The
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: phase-contract
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.0.5
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-feature
|
|
3
3
|
user-invocable: true
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.3.1
|
|
5
5
|
argument-hint: <NN-slug | #N> | --from-issue N | --scaffold <slug> | --next
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Route designed features or issues into engineering planning and roadmap
|
|
@@ -91,8 +91,9 @@ one hop from this file, and fail closed when missing.
|
|
|
91
91
|
the internal steps; never re-fetched mid-plan.
|
|
92
92
|
4. **Confirm roadmap.** Verify the feature is registered in
|
|
93
93
|
`docs/features/ROADMAP.md` with the right number, ordering, and dependencies;
|
|
94
|
-
if any of the three is missing or wrong, fix the entry now — never leave
|
|
95
|
-
|
|
94
|
+
if any of the three is missing or wrong, fix the entry now — never leave registration for later.
|
|
95
|
+
`plan-feature` verifies and repairs the roadmap entry; `plan-feature-scaffold`
|
|
96
|
+
is the sole writer of the `defined → planned` write.
|
|
96
97
|
5. **Dependency & blocker check (always, before recommending execution).**
|
|
97
98
|
- Walk the feature's `Depends on:` closure (transitively): every dependency
|
|
98
99
|
must be `done` **and merged**. Any unmet → the closing block recommends
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: plan-feature-from-issue
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 2.0.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal step of plan-feature: turn a feature-request issue into a scoped,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: plan-feature-scaffold
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 2.4.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal step of plan-feature: from an already-designed SPEC (product half
|
package/skills/plan-fix/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: plan-fix
|
|
|
3
3
|
user-invocable: true
|
|
4
4
|
version: 3.3.0
|
|
5
5
|
argument-hint: <issue-number> [<issue-number> …]
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Draft and locally commit a tightly scoped, phased fix SPEC from one or more
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: planning-preflight
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.1.1
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal planning gate: consumes the normalized repository state and makes
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pre-execution-review
|
|
3
3
|
user-invocable: false
|
|
4
|
-
version: 2.
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
4
|
+
version: 2.5.1
|
|
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:
|
|
@@ -118,7 +118,7 @@ The one-owner rule, stated once so every skill and template can cite it here:
|
|
|
118
118
|
**a durable ledger has exactly one writer per column set, plus at most one
|
|
119
119
|
declared mechanical annotator, which may append only the token its own row
|
|
120
120
|
names.** Nobody else writes a row — not a reviewer, not a later phase, not a
|
|
121
|
-
script. So `fold-findings` flips only the `folded:` flag `
|
|
121
|
+
script. So `fold-findings` flips only the `folded:` flag per the map's `fold-findings:folded-flag` owner entry,
|
|
122
122
|
and `scripts/ledger-provenance.mjs` appends only the marker it really emits:
|
|
123
123
|
its `· fold <sha>` (or `· ticked <sha>` on a row that scores 1) plus the
|
|
124
124
|
`· REOPENED — provenance unproven` note when a tick has no matching
|
|
@@ -142,7 +142,7 @@ must pass; the CI node-compat job enforces the fallback.
|
|
|
142
142
|
```text
|
|
143
143
|
ledger-ownership@1
|
|
144
144
|
truth-class | ledger | owner | annotator | annotator-token | validator
|
|
145
|
-
review-findings | docs/features/<NN>-<slug>/review-findings.md · docs/fix/<issue>-<topic>/review-findings.md | review-change:finding-rows + review-change:finding-mark + review-change:review-mark + audit-pr:audit-rows + triage-issue:triage-rows + fold-findings:folded-flag | scripts/ledger-provenance.mjs | · fold <sha> + · ticked <sha> + · REOPENED | bun test scripts/ledger-provenance.test.mjs
|
|
145
|
+
review-findings | docs/features/<NN>-<slug>/review-findings.md · docs/fix/<issue>-<topic>/review-findings.md | review-change:finding-rows + review-change:finding-mark + review-change:review-mark + review-change:review-gate-ran-marks + audit-pr:audit-rows + triage-issue:triage-rows + execute-phase:gate-ran-marks + fold-findings:folded-flag | scripts/ledger-provenance.mjs | · fold <sha> + · ticked <sha> + · REOPENED | bun test scripts/ledger-provenance.test.mjs
|
|
146
146
|
planning-findings | docs/features/<NN>-<slug>/planning-findings.md · docs/fix/<issue>-<topic>/planning-findings.md | review-spec:spec-stage-rows + review-plan:plan-stage-rows + design-feature:product-class-resolutions + plan-feature:plan-class-resolutions + plan-fix:fix-plan-class-resolutions + fold-findings:source-class-resolutions | none | none | bun test scripts/pre-execution-quality.test.mjs
|
|
147
147
|
progress | docs/features/<NN>-<slug>/progress.md · docs/fix/<issue>-<topic>/progress.md | plan-feature-scaffold:create + execute-phase:phase-entries + execute-phase:gate-rejection-traces + review-spec:product-receipt + review-plan:plan-receipt | none | none | bun test scripts/pre-execution-sensor.test.mjs
|
|
148
148
|
known-issues | docs/features/<NN>-<slug>/known-issues.md · docs/fix/<issue>-<topic>/known-issues.md | plan-feature-scaffold:create + execute-phase:blocker-entries-and-status | none | none | bun test scripts/ledger-ownership.test.mjs
|
|
@@ -207,3 +207,36 @@ reproducer as its regression check — it never re-derives it; a `recheck` cell
|
|
|
207
207
|
that cannot be materialized yields `BLOCKED <missing input>`. This consumption
|
|
208
208
|
leaves the row shape, the `VF-` exclusions, and the `review-change`
|
|
209
209
|
single-writer rule untouched.
|
|
210
|
+
|
|
211
|
+
### The gate-run mark
|
|
212
|
+
|
|
213
|
+
A gate run — green or red — leaves a durable mark in the unit's
|
|
214
|
+
`review-findings.md` ledger (for features:
|
|
215
|
+
`docs/features/<NN>-<slug>/review-findings.md`, for fixes:
|
|
216
|
+
`docs/fix/<issue>-<topic>/review-findings.md`), owned by the `review-findings`
|
|
217
|
+
truth-class row's owner cell extended with the two recorder column-sets:
|
|
218
|
+
|
|
219
|
+
```text
|
|
220
|
+
gate-ran@1
|
|
221
|
+
id | file:line | cmds | exit | [additive-slots ...]
|
|
222
|
+
GATE-RAN | HEAD <40-hex sha> | <cmds> | exit <code> | [reserved trailing slot: `manifest <sha>`]
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
- **Fixed format** (the one grammar; every consumer cites this block):
|
|
226
|
+
`GATE-RAN | HEAD <sha> | <cmds> | exit <code>` — every run records the SHA,
|
|
227
|
+
the commands run, and the exit code (green and red alike; `exit 0` is green).
|
|
228
|
+
`<cmds>` is the runnable command(s) the gate ran, joined by ` | ` when several.
|
|
229
|
+
- **Additive slots**: fields after `HEAD` are additive; consumers ignore unknown
|
|
230
|
+
trailing fields (feature 35's `manifest <sha>` slot is reserved, not yet
|
|
231
|
+
consumed).
|
|
232
|
+
- **Identical-head reuse**: any skill may consume a **green** run only at the
|
|
233
|
+
identical HEAD; a changed head ⇒ re-run the gate. A red mark is never
|
|
234
|
+
consumed as a pass.
|
|
235
|
+
- **Recorder column-sets**: the `review-findings` truth-class row's owner cell
|
|
236
|
+
declares `execute-phase:gate-ran-marks` (executor phase gates) and
|
|
237
|
+
`review-change:review-gate-ran-marks` (reviewer gate runs), distinct column-set
|
|
238
|
+
names per the one-writer-per-column-set rule.
|
|
239
|
+
- **Owner extension**: the identical owner cell is mirrored into both template
|
|
240
|
+
projections (`docs/features/_TEMPLATE/LEDGERS.md` and `docs/fix/_TEMPLATE/LEDGERS.md`).
|
|
241
|
+
- **No new truth-class row**: the grammar admits no new row — the existing
|
|
242
|
+
`review-findings.md` ledger pattern is reused with extended owner cells.
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
name: product-audit
|
|
3
3
|
user-invocable: true
|
|
4
4
|
disable-model-invocation: true
|
|
5
|
-
version: 3.
|
|
5
|
+
version: 3.2.0
|
|
6
6
|
metadata:
|
|
7
7
|
opencode/autoinvoke: false
|
|
8
8
|
argument-hint: <path-or-area> (optional — defaults to the whole product)
|
|
9
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
9
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
10
10
|
license: MIT
|
|
11
11
|
description: >
|
|
12
12
|
Audit the whole product across code, quality, process, docs, roadmap, and
|
|
@@ -97,12 +97,12 @@ Verdict: <one-line honest health verdict>
|
|
|
97
97
|
Installed tooling ....... ✓ | ⚠ | ✗ | n-a
|
|
98
98
|
|
|
99
99
|
## Findings (severity-ranked, one F-sequence for the whole audit)
|
|
100
|
-
F1 [SEV] <dimension> — <finding> — evidence: <file:line | metric | doc> — class: <fix-now|
|
|
100
|
+
F1 [SEV] <dimension> — <finding> — evidence: <file:line | metric | doc> — class: <fix-now|replan-in-unit|decision-required|proposal|ignore>
|
|
101
101
|
F2 [SEV] ...
|
|
102
102
|
[example — scope-export recurrence] F<k> [med] Workflow discipline — <N>
|
|
103
103
|
consecutive units exported scope via `## Amendments`/descope issues —
|
|
104
104
|
features are being cut too big for real capacity — evidence: <unit list +
|
|
105
|
-
amendments/issues> — class:
|
|
105
|
+
amendments/issues> — class: proposal — route: #64 (atomicity/split rules)
|
|
106
106
|
|
|
107
107
|
## Delta vs audit <prior-id>
|
|
108
108
|
New: F<k>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
| **Brand / voice** | User-facing copy vs. the brand guide | surfaces with copy |
|
|
13
13
|
| **Tech debt** | Accumulated shortcuts, TODO/FIXME, stale abstractions | all |
|
|
14
14
|
| **Process & docs** | Incomplete phases, aging open issues, **solvable known-issues**, doc completeness, missing/optimizable workflow docs, capability-inventory freshness (`docs/CAPABILITIES.md` ↔ code drift) | all |
|
|
15
|
-
| **Workflow discipline** | The workflow's own rules held: branch/PR discipline, `done · #<pr>` links, phase naming (`P1…`), per-phase docs, commit format, dependency closures, artifact language — **run `audit-docs` checks
|
|
15
|
+
| **Workflow discipline** | The workflow's own rules held: branch/PR discipline, `done · #<pr>` links, phase naming (`P1…`), per-phase docs, commit format, dependency closures, artifact language — **run `audit-docs` checks mechanically** (cite the count from `audit-docs`; never restated in the dimension table); never assume a rule held because it "should". **Scope-export recurrence:** across the most recent units (merged or in-flight), each with a non-empty `## Amendments` descope log or a descope-classified born issue (`audit-pr`'s scope-bleed gate) counts as one scope-exporting unit — **≥ 2 consecutive** such units is a planning-quality finding ("features cut too big for real capacity"), routed to the atomicity/split rules (**#64**), not re-litigated as a per-unit defect | all |
|
|
16
16
|
| **Roadmap coherence** | Stale/obsolete/superseded features, missing dependencies, gaps & opportunities | all |
|
|
17
17
|
| **Installed tooling** | Installed skills + connected MCP servers vs. the project's applicable axes and roadmap features — unregistered-but-useful items, and tooling that would change a feature's scope | all |
|
|
18
18
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
2. **Sweep code & axes** — run the applicable axes across the codebase: compose
|
|
5
5
|
`review-implementation` plus the internal review pack's applicable passes
|
|
6
6
|
(each returns its fixed-format table + PASS|FAIL), and any optional installed
|
|
7
|
-
extras. Classify findings (severity +
|
|
7
|
+
extras. Classify findings (severity + closed class set from review-implementation/CLASSIFY.md).
|
|
8
8
|
|
|
9
9
|
**Evidence-provenance gate (fixed):** applies during every evidence-collecting sweep
|
|
10
10
|
step (2–5). Each item ends with exactly one fallback; never pick another one mid-audit.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: replan-findings
|
|
3
3
|
user-invocable: false
|
|
4
|
-
version: 1.1.
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
4
|
+
version: 1.1.1
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal contract: the conditional replan entry. Loaded only when
|
|
@@ -67,8 +67,8 @@ fingerprint: <sha256 over the inputs the answer used>
|
|
|
67
67
|
- `read-set` is the bounded intake below: at most 12 paths, then an explicit
|
|
68
68
|
`… and N more` line — never a silent truncation.
|
|
69
69
|
- `open-rows`/`rows:` come from the ledger's open rows only (`folded` not
|
|
70
|
-
`yes`/`—`/`-`/`n/a`/empty), and the id shapes `VF-<n
|
|
71
|
-
marks, never findings.
|
|
70
|
+
`yes`/`—`/`-`/`n/a`/empty), and the id shapes `VF-<n>`, `REVIEW-RAN` and
|
|
71
|
+
`GATE-RAN` are marks, never findings.
|
|
72
72
|
|
|
73
73
|
Exit codes are part of the contract: a route prints and exits **0**; an unknown
|
|
74
74
|
unit, or any argument count other than one, exits **1**; an ambiguous token (a
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: review-a11y
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.1.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal accessibility review pass of the agentic-workflow review pack —
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: review-brand
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.1.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal brand & copy review pass of the agentic-workflow review pack — composed
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-change
|
|
3
3
|
user-invocable: true
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.7.0
|
|
5
5
|
argument-hint: <path-or-glob> [--adversarial N] [--synthesize]
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Review a change with only applicable internal axes, classify every finding,
|
|
@@ -152,12 +152,14 @@ sequential/headless fallbacks; never collapse independent adversarial passes.
|
|
|
152
152
|
Orchestrates internal finders (`review-code`, `review-security`, `review-verify`,
|
|
153
153
|
`review-design`, `review-a11y`, `review-brand`, `review-perf`, `review-seo`), then
|
|
154
154
|
one `review-implementation` classifier and `review-debt` transform, isolated by
|
|
155
|
-
default; installed platform packs are optional. `triage-issue` is user-invoked
|
|
156
|
-
|
|
155
|
+
default; installed platform packs are optional. `triage-issue` is user-invoked,
|
|
156
|
+
never auto-run (D3), for independent proposals, audit findings, and
|
|
157
|
+
`--prioritize-now` runs. It is Stage 4: checkpoint reviews are
|
|
157
158
|
optional, the end review is mandatory and fresh. `fix-now` is routed to the
|
|
158
159
|
unit's fold cycle — a separate `/fold-findings` invocation, never run by this review;
|
|
159
160
|
`replan-in-unit` adds user-confirmed phases, and independent work becomes
|
|
160
|
-
proposals. `audit-pr` consumes
|
|
161
|
+
proposals. `audit-pr` consumes
|
|
162
|
+
only the verified PR-comment receipt, never the
|
|
161
163
|
chat report; `product-audit` is the periodic sweep. On `REVIEW-FAIL` the manual
|
|
162
164
|
correction path is `/fold-findings`, then re-run `/review-change` on the changed
|
|
163
165
|
HEAD (bounded at two cycles — a third cycle never starts without an explicit
|
|
@@ -35,7 +35,8 @@ lost, and none becomes reviewer-created backlog (D3):
|
|
|
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
|
|
38
|
-
trigger; only the **user** routes it to `triage-issue
|
|
38
|
+
trigger; only the **user** routes it to `triage-issue` (independent
|
|
39
|
+
proposals, audit findings, or `--prioritize-now` runs).
|
|
39
40
|
- **ignore** → note the rationale in the report; no further action.
|
|
40
41
|
|
|
41
42
|
The report's `Decision:` line is **three-state** (D10): `REVIEW-PASS` when the
|
|
@@ -18,14 +18,17 @@ exact command tokens.
|
|
|
18
18
|
`gh pr view --json state` when a PR is open; otherwise the unit is unmerged
|
|
19
19
|
by definition). Otherwise, for each **fix-now** finding of severity `high`
|
|
20
20
|
or `med` (only ledger severities; finder scale
|
|
21
|
-
|
|
21
|
+
converts through the canonical table in
|
|
22
|
+
`CLASSIFY.md`):
|
|
23
|
+
append a row
|
|
22
24
|
(create the file with the header row when missing), carrying the
|
|
23
25
|
verbatim `Sev` value into `severity`; `folded` always starts `no` — that
|
|
24
26
|
row comes from a **confirmed** candidate only and carries its
|
|
25
27
|
`finding-mark@1` signature on a **separate `VF-` row** (reviewer, head SHA,
|
|
26
28
|
recheck + reproducer), as modeled in `LEDGERS.md` (§finding-mark@1) and the
|
|
27
29
|
fixture.
|
|
28
|
-
`
|
|
30
|
+
`ledger-ownership@1` / `fold-findings:folded-flag` is the sole writer of
|
|
31
|
+
the `folded: no → yes` flip.
|
|
29
32
|
A `low` finding is **never persisted to the fold ledger** — report-only
|
|
30
33
|
note (step 13), never blocking (finders' materiality floor). Re-runs
|
|
31
34
|
**dedupe by `file:line` + axis**:
|
|
@@ -35,16 +38,19 @@ exact command tokens.
|
|
|
35
38
|
**Non-fix-now findings are never written here** — they keep
|
|
36
39
|
their destinations from step 11 (outcome routing): independent future
|
|
37
40
|
capabilities batch as proposals; only the user routes them to `triage-issue`
|
|
38
|
-
(D3).
|
|
39
|
-
**Commit the ledger append** — rows + `REVIEW-RAN`
|
|
40
|
-
(
|
|
41
|
+
(independent proposals, audit findings, or `--prioritize-now` runs) (D3).
|
|
42
|
+
**Commit the ledger append** — rows + `REVIEW-RAN` + `GATE-RAN` marks,
|
|
43
|
+
one commit (a reviewer records a `GATE-RAN` mark for the gate run the review
|
|
44
|
+
performed and consumes an identical-head green mark instead of re-running,
|
|
45
|
+
see `LEDGERS.md` §gate-ran@1; `docs(<unit>): persist review findings`);
|
|
46
|
+
pushed when a PR is open;
|
|
41
47
|
an uncommitted append hands the next review a dirty-tree stop. On
|
|
42
|
-
`REVIEW-PASS` with an open PR
|
|
43
|
-
|
|
44
|
-
This skill's only mutations are
|
|
45
|
-
`REVIEW-PASS` with a PR, the receipt
|
|
46
|
-
fold, executes a phase, or edits source
|
|
47
|
-
the SKILL.md Turn contract).
|
|
48
|
+
`REVIEW-PASS` with an open PR the SHA-bound receipt is the durable record:
|
|
49
|
+
head and posted receipt stay identical.
|
|
50
|
+
This skill's only mutations are the rows + `REVIEW-RAN` + `GATE-RAN` marks
|
|
51
|
+
(all in the step 11 commit), and, on `REVIEW-PASS` with a PR, the receipt
|
|
52
|
+
comment (step 12) — it never runs a fold, executes a phase, or edits source
|
|
53
|
+
(see the review-end turn boundary in the SKILL.md Turn contract).
|
|
48
54
|
12. **Close out the final-review receipt before reporting.** Derive the
|
|
49
55
|
`Decision` from step 7 and persist step 11 first. Then — **only on
|
|
50
56
|
`Decision: REVIEW-PASS` and when the PR exists** — run the receipt emitter,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: review-code
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.2.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal correctness + simplification review pass of the agentic-workflow
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: review-debt
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.1.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal tech-debt transform pass of the agentic-workflow review pack —
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: review-design
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.1.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal UI/UX design review pass of the agentic-workflow review pack —
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-implementation
|
|
3
3
|
user-invocable: false
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.9.0
|
|
5
5
|
argument-hint: <path-or-glob>
|
|
6
6
|
allowed-tools: Read, Grep, Glob, Bash, WebFetch
|
|
7
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
7
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
8
8
|
license: MIT
|
|
9
9
|
description: >
|
|
10
10
|
Internal scope/classification engine composed by review-change (and reused by
|
|
@@ -5,6 +5,61 @@ the **synthesized** findings table (D5). Classify each finding into exactly one
|
|
|
5
5
|
class, in this order. Never reopen source files to classify; the table's
|
|
6
6
|
evidence is authoritative.
|
|
7
7
|
|
|
8
|
+
### Severity conversion (canonical table)
|
|
9
|
+
|
|
10
|
+
The single-owner table below maps every severity scale the review pack emits
|
|
11
|
+
onto the classification scale (`high | med | low`). Only this section may
|
|
12
|
+
convert — a consumer facing an unknown scale **fails closed** (no ad-hoc
|
|
13
|
+
conversion). The table replaces the ad-hoc mapping that lived at
|
|
14
|
+
`PERSIST_AND_DECIDE.md`.
|
|
15
|
+
|
|
16
|
+
The sensor's own `SEVERITY_VOCABULARY` map (`scripts/workflow-status.mjs:718-721`)
|
|
17
|
+
is a direct projection of this table onto the envelope schema's `high|med|low`
|
|
18
|
+
enum, not a competing converter; it always produces a value listed here.
|
|
19
|
+
|
|
20
|
+
| Producer scale | → `high` | → `med` | → `low` |
|
|
21
|
+
|---|---|---|---|
|
|
22
|
+
| Ledger (`CLASSIFY.md` itself): `high` | self | — | — |
|
|
23
|
+
| Ledger: `med` | — | self | — |
|
|
24
|
+
| Ledger: `low` | — | — | self |
|
|
25
|
+
| Finder (nine review passes): `critical` → `high` | ✓ | — | — |
|
|
26
|
+
| Finder: `major` → `med` | — | ✓ | — |
|
|
27
|
+
| Finder: `minor` → `low` | — | — | ✓ |
|
|
28
|
+
| Planning: `critical` → `high` | ✓ | — | — |
|
|
29
|
+
| Planning: `high` → `high` | ✓ | — | — |
|
|
30
|
+
| Planning: `medium` → `med` | — | ✓ | — |
|
|
31
|
+
| Planning: `low` → `low` | — | — | ✓ |
|
|
32
|
+
| Planning: `info` → `low` | — | — | ✓ |
|
|
33
|
+
| `audit-docs`: `high` → `high` | ✓ | — | — |
|
|
34
|
+
| `audit-docs`: `low` → `low` | — | — | ✓ |
|
|
35
|
+
|
|
36
|
+
**Unknown scale → fail closed.** A scale not listed above is an error; the
|
|
37
|
+
consuming skill must not guess.
|
|
38
|
+
|
|
39
|
+
### Derived blocking gate
|
|
40
|
+
|
|
41
|
+
A finding **blocks** only when the reviewer cites which single-owner source
|
|
42
|
+
fails — blocking is a table lookup over cited sources, never a severity
|
|
43
|
+
opinion. The four citation categories are:
|
|
44
|
+
|
|
45
|
+
1. **ACCEPTANCE criterion** unverified or failed.
|
|
46
|
+
2. **Obligation row** in the unit's ledger is not `verified` or `n-a`.
|
|
47
|
+
3. **Gate is red** at the reviewed head (the project gate exited non-zero at
|
|
48
|
+
the exact head under review).
|
|
49
|
+
4. **Open confirmed `fix-now` row** on the fold ledger (a finding already
|
|
50
|
+
persisted as `fix-now` with `folded: no`).
|
|
51
|
+
|
|
52
|
+
No citation among these four categories → the finding is a **report-note** or
|
|
53
|
+
**proposal**, never blocking. D10's verdict rule (the three-way `REVIEW-PASS |
|
|
54
|
+
REVIEW-FAIL | NEEDS-DECISION` verdict) remains **unchanged** — the derived gate
|
|
55
|
+
operates inside the `REVIEW-FAIL` branch as the evidence that determines whether
|
|
56
|
+
a finding truly blocks.
|
|
57
|
+
|
|
58
|
+
**`report-note` definition owner.** The `report-note` classification is owned by
|
|
59
|
+
`LEDGERS.md` §3 (`:91-96`): material is `medium`+, a `low` row is a persisted
|
|
60
|
+
report-note. Classifying surfaces cite this owner instead of restating the
|
|
61
|
+
materiality bar.
|
|
62
|
+
|
|
8
63
|
### Step 1 — `ignore` first (the claim, not a class choice)
|
|
9
64
|
|
|
10
65
|
`ignore` claims **"this is not a real defect"** — a false positive or a
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: review-perf
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.2.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal performance review pass of the agentic-workflow review pack — composed
|
|
@@ -3,7 +3,7 @@ name: review-plan
|
|
|
3
3
|
user-invocable: true
|
|
4
4
|
version: 1.7.0
|
|
5
5
|
argument-hint: <NN-slug | fix-N | path/to/SPEC.md> [--adversarial N]
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Independent read-only review of a frozen Engineering plan before execution, in a
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: review-security
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.1.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal security review pass of the agentic-workflow review pack — composed
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: review-seo
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.1.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal SEO review pass of the agentic-workflow review pack — composed
|
|
@@ -3,7 +3,7 @@ name: review-spec
|
|
|
3
3
|
user-invocable: true
|
|
4
4
|
version: 1.8.0
|
|
5
5
|
argument-hint: <NN-slug | path/to/SPEC.md>
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Independent read-only review of a frozen Product half before engineering
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: review-verify
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.1.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal run-it verification review pass of the agentic-workflow review pack —
|
|
@@ -3,7 +3,7 @@ name: triage-issue
|
|
|
3
3
|
user-invocable: true
|
|
4
4
|
version: 2.8.0
|
|
5
5
|
argument-hint: <issue-number> [more issue numbers…] | <audit-id> F<k> [F<j>…] | --prioritize-now <unit> F<k> [F<j>…]
|
|
6
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
6
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
7
7
|
license: MIT
|
|
8
8
|
description: >
|
|
9
9
|
Verify an issue, persisted audit finding, or unresolved review finding against
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: verification-contract
|
|
3
3
|
user-invocable: false
|
|
4
4
|
version: 1.3.0
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
description: >
|
|
8
8
|
Internal contract: one compact frozen ACCEPTANCE.md per delivery unit, its
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: workflow-status
|
|
3
3
|
user-invocable: true
|
|
4
|
-
version: 3.
|
|
5
|
-
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
|
|
4
|
+
version: 3.8.1
|
|
5
|
+
author: "Gabriel Trabanco <1969593+gtrabanco@users.noreply.github.com>"
|
|
6
6
|
license: MIT
|
|
7
7
|
argument-hint: "[--json-only] [--last-envelope <json|path>]"
|
|
8
8
|
description: >
|
|
@@ -9,10 +9,11 @@ placement per the installed `orchestration-envelope` skill. The
|
|
|
9
9
|
states** (the schema package needs no release):
|
|
10
10
|
|
|
11
11
|
- `CLEAN` → `state: OK` (the sensor default when the substrate is usable).
|
|
12
|
-
-
|
|
13
|
-
gate and overrides the crash-recovery state with
|
|
14
|
-
blocker and concrete discovery/resolution command
|
|
15
|
-
readiness data.
|
|
12
|
+
- `draft`, `contradicted`, or `resolved` repository-state ledger is a
|
|
13
|
+
run-scoped substrate gate and overrides the crash-recovery state with
|
|
14
|
+
`state: BLOCKED`; the blocker and concrete discovery/resolution command
|
|
15
|
+
are emitted before readiness data.
|
|
16
|
+
An absent ledger is a non-blocking notice, not a blocker.
|
|
16
17
|
- `RESUMABLE` → `state: CONTINUE`, `next.recommended` = the resume command
|
|
17
18
|
from the decision table.
|
|
18
19
|
- `AMBIGUOUS` → `state: NEEDS_INPUT`, `needs_input.question` = what is
|
|
@@ -12,12 +12,13 @@ the JSON and interprets it.
|
|
|
12
12
|
|
|
13
13
|
Read `docs/workflow/REPOSITORY_STATE.md` when present and always emit
|
|
14
14
|
`detail.repository_state: {status, snapshot_id, source_revision}`. Before
|
|
15
|
-
readiness classification, if the ledger is
|
|
15
|
+
readiness classification, if the ledger is `draft`, `contradicted`, or
|
|
16
16
|
`resolved`, add a run-scoped `substrate` blocker, set the envelope state to
|
|
17
17
|
`BLOCKED`, leave `startable_now` empty, and set `next.recommended` to
|
|
18
|
-
`/discover-repository-state` for
|
|
19
|
-
`/resolve-repository-state <contradiction-id>` for `contradicted` state.
|
|
20
|
-
|
|
18
|
+
`/discover-repository-state` for non-frozen state or
|
|
19
|
+
`/resolve-repository-state <contradiction-id>` for `contradicted` state.
|
|
20
|
+
An absent ledger emits a non-blocking substrate notice instead of a blocker.
|
|
21
|
+
The sensor remains read-only; it never edits or resolves the ledger. Conflicting
|
|
21
22
|
live evidence against a frozen ledger remains a contradiction candidate.
|
|
22
23
|
|
|
23
24
|
3. **Urgency labels (`detail.urgent`) — labels-only, presence-only, never
|
|
@@ -83,8 +83,9 @@ mechanized.*
|
|
|
83
83
|
|
|
84
84
|
A row is **open** under the router's own predicate (`scripts/unit-route.mjs`
|
|
85
85
|
`isOpen`), never a re-derived one: `folded: yes`, `—`, `-`, `n/a` and an empty
|
|
86
|
-
cell all close it. The id shapes `VF-<n>` (a finding's verification mark)
|
|
87
|
-
`REVIEW-RAN` (a review mark)
|
|
86
|
+
cell all close it. The id shapes `VF-<n>` (a finding's verification mark),
|
|
87
|
+
`REVIEW-RAN` (a review mark) and `GATE-RAN` (a gate-run mark) are **never**
|
|
88
|
+
findings — a ledger pads a mark row
|
|
88
89
|
with empty cells, so it reaches the row parser looking like an open finding and
|
|
89
90
|
would otherwise project a suggestion for a merged unit. A **decision-required**
|
|
90
91
|
open row contributes **nothing**: it outranks the fold in the route table (which
|