@webpresso/agent-kit 3.1.26 → 3.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/catalog/AGENTS.md.tpl +7 -11
  2. package/catalog/agent/commands/verify.md +2 -2
  3. package/catalog/agent/rules/changeset-release.md +4 -2
  4. package/catalog/agent/rules/ci-cost-local-first.md +139 -0
  5. package/catalog/agent/rules/ci-test-perf.md +5 -1
  6. package/catalog/agent/rules/cmd-execution.md +9 -0
  7. package/catalog/agent/rules/pre-implementation.md +2 -1
  8. package/catalog/agent/rules/test-scan-perf.md +80 -0
  9. package/catalog/agent/rules/workflow-skills-routing.md +9 -4
  10. package/catalog/agent/skills/autopilot/SKILL.md +48 -11
  11. package/catalog/agent/skills/claude/SKILL.md +7 -0
  12. package/catalog/agent/skills/codex/SKILL.md +7 -0
  13. package/catalog/agent/skills/fix/SKILL.md +36 -8
  14. package/catalog/agent/skills/grok/SKILL.md +7 -0
  15. package/catalog/agent/skills/investigate/SKILL.md +12 -1
  16. package/catalog/agent/skills/pll/SKILL.md +53 -48
  17. package/catalog/agent/skills/team/SKILL.md +26 -9
  18. package/catalog/agent/skills/ultragoal/SKILL.md +147 -19
  19. package/catalog/agent/skills/verify/SKILL.md +89 -51
  20. package/dist/esm/audit/blueprint-lifecycle-sql.d.ts +8 -0
  21. package/dist/esm/audit/blueprint-lifecycle-sql.js +25 -1
  22. package/dist/esm/audit/blueprint-pr-coverage.js +68 -7
  23. package/dist/esm/audit/registry.d.ts +4 -4
  24. package/dist/esm/audit/registry.js +3 -0
  25. package/dist/esm/audit/roadmap-links.js +6 -0
  26. package/dist/esm/audit/test-scan-perf.d.ts +18 -0
  27. package/dist/esm/audit/test-scan-perf.js +275 -0
  28. package/dist/esm/blueprint/lifecycle/engine.d.ts +9 -0
  29. package/dist/esm/blueprint/lifecycle/engine.js +53 -6
  30. package/dist/esm/blueprint/lifecycle/review-provenance.d.ts +6 -0
  31. package/dist/esm/blueprint/lifecycle/review-provenance.js +93 -12
  32. package/dist/esm/blueprint/markdown/helpers.js +6 -2
  33. package/dist/esm/ci/act-replay.js +110 -7
  34. package/dist/esm/ci/act-runner.d.ts +4 -0
  35. package/dist/esm/ci/act-runner.js +85 -26
  36. package/dist/esm/ci/act-worktree-git.d.ts +11 -0
  37. package/dist/esm/ci/act-worktree-git.js +219 -0
  38. package/dist/esm/ci/native-session-memory-cache.d.ts +9 -1
  39. package/dist/esm/ci/native-session-memory-cache.js +9 -1
  40. package/dist/esm/ci/vitest-ci-shards.d.ts +6 -4
  41. package/dist/esm/ci/vitest-ci-shards.js +6 -4
  42. package/dist/esm/cli/auto-update/guard-tombstone.d.ts +25 -0
  43. package/dist/esm/cli/auto-update/guard-tombstone.js +67 -0
  44. package/dist/esm/cli/auto-update/installer.d.ts +4 -17
  45. package/dist/esm/cli/auto-update/installer.js +6 -57
  46. package/dist/esm/cli/auto-update/self-invocation.d.ts +37 -0
  47. package/dist/esm/cli/auto-update/self-invocation.js +62 -0
  48. package/dist/esm/cli/commands/audit.js +4 -0
  49. package/dist/esm/cli/commands/blueprint/mutations.js +35 -18
  50. package/dist/esm/cli/commands/blueprint/router.js +27 -2
  51. package/dist/esm/cli/commands/ci.d.ts +8 -1
  52. package/dist/esm/cli/commands/ci.js +80 -21
  53. package/dist/esm/cli/commands/dash/index.js +3 -3
  54. package/dist/esm/cli/commands/dash/keymap.js +1 -0
  55. package/dist/esm/cli/commands/dash/launch-preferences.d.ts +15 -0
  56. package/dist/esm/cli/commands/dash/launch-preferences.js +46 -17
  57. package/dist/esm/cli/commands/dash/plan-once-attention.d.ts +32 -0
  58. package/dist/esm/cli/commands/dash/plan-once-attention.js +50 -0
  59. package/dist/esm/cli/commands/dash/plan-once-label.d.ts +7 -0
  60. package/dist/esm/cli/commands/dash/plan-once-label.js +5 -0
  61. package/dist/esm/cli/commands/dash/plan-once-membership.d.ts +67 -0
  62. package/dist/esm/cli/commands/dash/plan-once-membership.js +151 -0
  63. package/dist/esm/cli/commands/dash/plan-once-merge.d.ts +143 -0
  64. package/dist/esm/cli/commands/dash/plan-once-merge.js +238 -0
  65. package/dist/esm/cli/commands/dash/plan-once-schema.d.ts +73 -0
  66. package/dist/esm/cli/commands/dash/plan-once-schema.js +119 -0
  67. package/dist/esm/cli/commands/dash/plan-once.d.ts +142 -0
  68. package/dist/esm/cli/commands/dash/plan-once.js +261 -0
  69. package/dist/esm/cli/commands/dash/tui/attention-hud.d.ts +9 -0
  70. package/dist/esm/cli/commands/dash/tui/attention-hud.js +9 -0
  71. package/dist/esm/cli/commands/dash/tui/chat-bridge.d.ts +41 -0
  72. package/dist/esm/cli/commands/dash/tui/chat-bridge.js +73 -0
  73. package/dist/esm/cli/commands/dash/tui/chat-mode.d.ts +47 -0
  74. package/dist/esm/cli/commands/dash/tui/chat-mode.js +98 -0
  75. package/dist/esm/cli/commands/dash/tui/frame.d.ts +3 -0
  76. package/dist/esm/cli/commands/dash/tui/frame.js +3 -1
  77. package/dist/esm/cli/commands/dash/tui/ipc-protocol.d.ts +87 -0
  78. package/dist/esm/cli/commands/dash/tui/ipc-protocol.js +128 -0
  79. package/dist/esm/cli/commands/dash/tui/native-host.d.ts +34 -0
  80. package/dist/esm/cli/commands/dash/tui/native-host.js +256 -0
  81. package/dist/esm/cli/commands/dash/tui/native-path.d.ts +11 -0
  82. package/dist/esm/cli/commands/dash/tui/native-path.js +41 -0
  83. package/dist/esm/cli/commands/dash/tui/palette.d.ts +1 -1
  84. package/dist/esm/cli/commands/dash/tui/palette.js +14 -0
  85. package/dist/esm/cli/commands/dash/tui/runtime.js +311 -4
  86. package/dist/esm/cli/commands/dash/tui/state.d.ts +41 -0
  87. package/dist/esm/cli/commands/dash/tui/state.js +257 -4
  88. package/dist/esm/cli/commands/format.js +0 -2
  89. package/dist/esm/cli/commands/init/config.d.ts +0 -1
  90. package/dist/esm/cli/commands/init/config.js +1 -4
  91. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/emitters/claude.d.ts +5 -6
  92. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/emitters/claude.js +6 -13
  93. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/ir.d.ts +0 -2
  94. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/ir.js +0 -2
  95. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/merge.d.ts +6 -3
  96. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/merge.js +39 -26
  97. package/dist/esm/cli/commands/init/scaffolders/agent-kit-global/index.js +1 -1
  98. package/dist/esm/cli/commands/init/scaffolders/codex-mcp/index.js +61 -23
  99. package/dist/esm/cli/commands/logs.d.ts +15 -0
  100. package/dist/esm/cli/commands/logs.js +192 -3
  101. package/dist/esm/cli/commands/package-manager.js +2 -1
  102. package/dist/esm/cli/commands/quality-log-store.d.ts +1 -0
  103. package/dist/esm/cli/commands/quality-log-store.js +187 -51
  104. package/dist/esm/cli/commands/review.js +5 -8
  105. package/dist/esm/cli/commands/secrets.d.ts +1 -0
  106. package/dist/esm/cli/commands/secrets.js +4 -1
  107. package/dist/esm/cli/commands/self-install-guard.d.ts +14 -32
  108. package/dist/esm/cli/commands/self-install-guard.js +17 -63
  109. package/dist/esm/cli/direct-provider-launch.js +25 -1
  110. package/dist/esm/hooks/doctor.d.ts +15 -0
  111. package/dist/esm/hooks/doctor.js +56 -0
  112. package/dist/esm/hooks/guard-switch/index.js +8 -4
  113. package/dist/esm/hooks/post-tool/lint-after-edit.js +6 -4
  114. package/dist/esm/hooks/precompact/index.js +5 -3
  115. package/dist/esm/hooks/pretool-guard/validators/forbidden-commands.js +4 -4
  116. package/dist/esm/hooks/pretool-guard/validators/mcp-redirect.d.ts +0 -1
  117. package/dist/esm/hooks/pretool-guard/validators/mcp-redirect.js +8 -5
  118. package/dist/esm/hooks/pretool-guard/validators/worktree-discipline.d.ts +9 -7
  119. package/dist/esm/hooks/pretool-guard/validators/worktree-discipline.js +126 -14
  120. package/dist/esm/hooks/sessionstart/index.d.ts +10 -0
  121. package/dist/esm/hooks/sessionstart/index.js +61 -4
  122. package/dist/esm/hooks/shared/types.d.ts +11 -0
  123. package/dist/esm/hooks/shared/types.js +21 -0
  124. package/dist/esm/mcp/tools/_shared/audit-kinds.d.ts +1 -1
  125. package/dist/esm/mcp/tools/audit.d.ts +2 -1
  126. package/dist/esm/mcp/tools/audit.js +10 -0
  127. package/dist/esm/mcp/tools/audits.d.ts +1 -0
  128. package/dist/esm/mcp/tools/ci-act.js +9 -11
  129. package/dist/esm/paths/state-root.js +9 -0
  130. package/dist/esm/review/authority.js +17 -2
  131. package/dist/esm/review/availability.js +18 -5
  132. package/dist/esm/review/subject.d.ts +15 -0
  133. package/dist/esm/review/subject.js +105 -10
  134. package/dist/esm/runtime/executor.d.ts +1 -0
  135. package/dist/esm/runtime/executor.js +2 -1
  136. package/dist/esm/secret-gate/runner.d.ts +1 -0
  137. package/dist/esm/secret-gate/runner.js +4 -1
  138. package/dist/esm/session-memory/current-session.js +2 -0
  139. package/dist/esm/session-memory/native-runtime.js +5 -3
  140. package/dist/esm/session-memory/native-warm-markers.d.ts +18 -0
  141. package/dist/esm/session-memory/native-warm-markers.js +22 -0
  142. package/dist/esm/session-memory/sync/types.d.ts +4 -0
  143. package/dist/esm/session-memory/types.d.ts +3 -1
  144. package/dist/esm/session-memory/types.js +2 -0
  145. package/dist/esm/ultragoal/runtime.js +44 -2
  146. package/dist/esm/worktrees/current.d.ts +1 -0
  147. package/dist/esm/worktrees/current.js +1 -0
  148. package/dist/esm/worktrees/project-agent-surfaces.d.ts +1 -0
  149. package/dist/esm/worktrees/project-agent-surfaces.js +2 -1
  150. package/package.json +17 -14
@@ -5,78 +5,83 @@ title: PLL Skill — Blueprint-Aware Parallel Execution
5
5
  status: active
6
6
  scope: repo
7
7
  applies_to: [agents]
8
- related: []
8
+ related: [ultragoal, autopilot, team]
9
9
  created: "2026-05-07"
10
- last_reviewed: "2026-05-07"
10
+ last_reviewed: "2026-07-21"
11
11
  name: pll
12
+ description: "Blueprint-aware parallel execution: ready-queue, max-parallel lanes, cascade-skip."
12
13
  ---
13
14
 
14
15
  # PLL Skill — Blueprint-Aware Parallel Execution
15
16
 
16
- Use this skill when the user invokes `/pll` or asks for Blueprint-aware parallel execution.
17
+ Use when the user invokes `/pll` or asks for Blueprint-aware parallel execution.
17
18
 
18
- `/pll` is not a standalone runner. It is the operator-facing adapter over the same shared execution model used by `wp blueprint exec`: both surfaces consume the same Blueprint-backed launch spec, backend vocabulary, and runtime-state bridge, but `/pll` stays manual and operator-facing.
19
-
20
- `/pll`:
21
-
22
- 1. understands Blueprint/task dependencies
23
- 2. updates `wp blueprint` lifecycle state honestly
24
- 3. delegates generic parallel fan-out to the engine layer such as `$ultrawork` or host-native subagents
19
+ `/pll` is the operator-facing adapter over the same shared execution model as
20
+ `wp blueprint exec`: Blueprint-backed launch specs, backend vocabulary, and
21
+ runtime-state bridge. `/pll` stays manual and operator-facing; `ultragoal` is the
22
+ durable multi-phase controller that should call the same ready-queue rules.
25
23
 
26
24
  ## Responsibilities
27
25
 
28
- 1. **Input parsing**
29
- - Accept inline task lists, comma-separated strings, or file paths.
30
- - Treat blueprint paths under `blueprints/` as lifecycle-backed execution.
31
- 2. **Blueprint lifecycle**
32
- - Use `wp blueprint start`, `wp blueprint task ...`, and `wp blueprint finalize` for durable state.
33
- - Never use `wp blueprint move` as the normal execution primitive.
34
- - Keep the lifecycle semantics aligned with `wp blueprint exec`; do not invent a separate `/pll`-only plan model.
35
- 3. **Dependency-aware batching**
36
- - Compute ready work from explicit dependencies and obvious blocking relationships.
37
- - Prioritize critical-path or high-fan-out work when choosing the next batch.
38
- 4. **Engine delegation**
39
- - Hand independent work to the current engine layer (`$ultrawork`, subagents, or equivalent runtime-native parallel lanes).
40
- - Do not promise a fixed active-agent count across runtimes.
41
- 5. **Verification discipline**
42
- - Require repo verification before marking blueprint tasks complete.
43
- 6. **Shared execution model**
44
- - Treat `/pll` as the interactive/manual front door for the same control-plane contract that `wp blueprint exec` uses.
45
- - Reuse the same backend names, progress bridge semantics, and truthfulness rules.
46
-
47
- ## Roadmap-Aware Lane Picking
48
-
49
- When no explicit task list is supplied, ground lane selection in `wp blueprint list` before inventing work:
26
+ 1. **Input parsing** — inline task lists, files, or blueprint paths under `blueprints/`.
27
+ 2. **Blueprint lifecycle** — `wp blueprint start`, task tools, finalize; never `wp blueprint move`
28
+ as the normal primitive. Prefer MCP: `wp_blueprint_list` / `get` / `context` /
29
+ `put` / `transition` / `task_verify`.
30
+ 3. **Ready-queue (max parallel)** compute tasks with satisfied deps; print the ready-set
31
+ before launching; fill up to `concurrency` (default 4, max 8; user can set `--max`).
32
+ 4. **Engine delegation** independent work host subagents / `$ultrawork` / worktrees via
33
+ `wp_worktree`. Before each delegate: `wp_session_context` (no full-history paste).
34
+ 5. **Verification** complete tasks only with `wp_blueprint_task_verify` + repo proof
35
+ (`wp_qa` / `wp_test` / targeted tools). Large commands `wp_session_execute` /
36
+ `wp_session_batch_execute`.
37
+ 6. **Shared model** same control-plane contract as `wp blueprint exec` and ultragoal execute.
38
+
39
+ ## Ready-queue algorithm
40
+
41
+ ```text
42
+ ready = tasks where status=todo and all Depends are done
43
+ while ready or in_progress:
44
+ launch min(len(ready), concurrency - in_progress) implementers in worktrees
45
+ on success verify with evidence → unlock dependents into ready
46
+ on hard fail → block task, cascade-skip dependents that require it, continue others
47
+ ```
50
48
 
51
- 1. Prefer active `ROADMAP` rows and pick the next `planned` `CHILD` row whose `depends_on:` chain is satisfied.
52
- 2. Treat `ORPHANS` as fallback work only when no roadmap child is actionable.
53
- 3. Keep the heuristic discoverable and auditable: `wp audit roadmap-links` checks bidirectional roadmap/child links, while `wp audit blueprint-lifecycle` checks lifecycle placement.
54
- 4. If command output changes, update `/pll` guidance and the shared blueprint output contract together.
49
+ Prioritize critical-path / high-fan-out tasks when choosing the next batch.
55
50
 
56
51
  ## Concurrency Limits
57
52
 
58
- | Scope | Guidance |
59
- | ------------------ | ------------------------------------------------------------------------- |
60
- | Default batches | Use the smallest parallelism that still keeps safe independent lanes busy |
61
- | Test-heavy tasks | Keep concurrency conservative |
62
- | Build/deploy tasks | Keep concurrency conservative |
53
+ | Scope | Guidance |
54
+ | --------------------------- | -------------------------------------------- |
55
+ | Default | Keep safe independent lanes busy (default 4) |
56
+ | Hard max | 8 unless the user explicitly raises |
57
+ | Test-heavy / build / deploy | Conservative (often 1–2) |
58
+ | Shared file ownership | Serialize or merge tasks — never two writers |
63
59
 
64
60
  ## Deadlock and Failure Handling
65
61
 
66
- - If no tasks remain ready but some are blocked, report the blocking tasks and their dependencies.
67
- - Failed tasks stay blocked with reasons; downstream work remains blocked unless explicitly safe to continue.
68
- - If lifecycle mutation fails, stop instead of continuing with stale plan state.
62
+ - No ready work but blocked tasks remain report blockers + deps; stop or handoff.
63
+ - Failed tasks stay blocked with reasons; dependents cascade-skipped unless safe alone.
64
+ - Lifecycle mutation failure stop (no stale plan execution).
65
+ - Capture decisions with `wp_session_capture`; resume via `wp_session_search` / `restore`.
66
+
67
+ ## Roadmap-Aware Lane Picking
68
+
69
+ When no explicit task list is supplied, ground selection in `wp blueprint list`:
70
+
71
+ 1. Prefer active `ROADMAP` rows; next `planned` `CHILD` with satisfied `depends_on:`.
72
+ 2. `ORPHANS` only when no roadmap child is actionable.
73
+ 3. Audits: `wp audit roadmap-links`, `wp audit blueprint-lifecycle`.
69
74
 
70
75
  ## When **NOT** to use
71
76
 
72
- - Small, strictly serial work where `/plan` or direct execution is simpler.
73
- - Situations where you only need generic parallel fan-out and do not need Blueprint lifecycle/state awareness; use `$ultrawork` directly there.
77
+ - Small strictly serial work direct execution or `/fix`.
78
+ - Generic fan-out without blueprint lifecycle host-native parallel only.
79
+ - Overnight multi-phase goals → `ultragoal` / `autopilot` (which should still use these rules).
74
80
 
75
- ## Quick Start Examples
81
+ ## Quick Start
76
82
 
77
83
  ```bash
78
84
  /pll "lint auth, lint utils, typecheck api [depends: lint auth], test api [depends: typecheck api]"
79
85
  /pll tasks.md --max=6
80
- /pll blueprints/in-progress/new-launch.md
81
86
  /pll blueprints/in-progress/new-launch/_overview.md
82
87
  ```
@@ -7,7 +7,7 @@ scope: repo
7
7
  applies_to: [agents]
8
8
  related: [autopilot, goal, plan-refine, verify]
9
9
  created: "2026-07-13"
10
- last_reviewed: "2026-07-13"
10
+ last_reviewed: "2026-07-21"
11
11
  name: team
12
12
  description: "Coordinate multiple dashboard-backed agent sessions on one task."
13
13
  argument-hint: "<brief|role plan>"
@@ -18,32 +18,49 @@ argument-hint: "<brief|role plan>"
18
18
  Use `team` when the work needs coordinated parallel lanes with a leader-owned
19
19
  task list, explicit handoffs, and independent verification. Prefer native
20
20
  subagents for small bounded lookups; use `team` when the parallel work should be
21
- visible, durable, and operator-controllable from `wp dash`.
21
+ visible, durable, and operator-controllable from `wp dash`. Prefer `ultragoal` +
22
+ `/pll` when the work is blueprint-owned and does not need multi-provider dashboard
23
+ lanes.
24
+
25
+ ## Tooling map
26
+
27
+ | Need | Prefer |
28
+ | --------------------- | --------------------------------------------------------------- |
29
+ | Dashboard / sessions | `wp dash`, `wp_fleet_status`, `wp_worker_tail` |
30
+ | Worktrees | `wp_worktree` per lane |
31
+ | Context-light handoff | `wp_session_context` (required before spawn — no history paste) |
32
+ | Continuity | `wp_session_capture` / `search` / `restore` |
33
+ | Blueprint tasks | `wp_blueprint_task_verify` only for completion |
34
+ | QA | `wp_qa` / targeted `wp_test` / `wp_lint` / `wp_typecheck` |
35
+ | PR | `wp_pr_upsert` / `wp_pr_status` / `wp_pr_wait` |
22
36
 
23
37
  ## Protocol
24
38
 
25
39
  1. Start from a grounded brief or an approved blueprint. If scope is vague, run
26
- `plan-refine` first and define task lanes, shared files, and verification.
40
+ `plan-refine` first and define task lanes, shared files, budgets, and verification.
27
41
  2. Open or reuse `wp dash` and launch the provider sessions needed for the
28
42
  lanes. Direct `wp claude`, `wp codex`, and `wp opencode` commands are
29
43
  expected to enter the dashboard in interactive terminals.
30
44
  3. Assign one owner per lane. Include the task, allowed files or surfaces,
31
45
  expected output, verification command, and blocker-report rule.
32
- 4. Keep one lane or leader pass responsible for integration and evidence.
46
+ 4. Before each worker spawn, build a bounded manifest with `wp_session_context`
47
+ (objective, constraints, evidence refs, remaining steps). Never copy parent transcripts.
48
+ 5. Keep one lane or leader pass responsible for integration and evidence.
33
49
  Workers report findings, patches, tests, and unresolved risks; they do not
34
50
  self-approve or mark blueprint tasks complete.
35
- 5. Integrate only after checking shared-file conflicts, updated assumptions,
51
+ 6. Integrate only after checking shared-file conflicts, updated assumptions,
36
52
  and verification evidence. Use `wp_blueprint_task_verify` for task completion
37
53
  when a blueprint owns the work.
38
- 6. Stop when every lane is complete, cancelled, or explicitly blocked and the
39
- leader has recorded verification evidence.
54
+ 7. Stop when every lane is complete, cancelled, or explicitly blocked and the
55
+ leader has recorded verification evidence (≤40-line handoff if blocked).
40
56
 
41
57
  ## Coordination Rules
42
58
 
43
59
  - Use a single source of truth for assignments: the blueprint, goal handoff, or
44
60
  leader-maintained task list.
45
- - Require ACK-style lane starts for shared files, dependency boundaries, or
46
- handoffs.
61
+ - Cap concurrency (default 4). Cascade-skip dependents of hard failures.
62
+ - Opportunistic `/fix` uses `fix_budget` (default 1) total across the team, not per lane.
63
+ - Require ACK-style lane starts for shared files, dependency boundaries, or handoffs.
47
64
  - Reassign or narrow blocked lanes instead of letting work drift.
48
65
  - Escalate changed assumptions before widening scope.
49
66
  - Never bypass review provenance, push to main, self-approve, or increase
@@ -5,9 +5,9 @@ title: Ultragoal
5
5
  status: active
6
6
  scope: repo
7
7
  applies_to: [agents]
8
- related: [autopilot, plan-refine, verify]
8
+ related: [autopilot, plan-refine, verify, pll, fix, opencode-go]
9
9
  created: "2026-07-10"
10
- last_reviewed: "2026-07-20"
10
+ last_reviewed: "2026-07-21"
11
11
  name: ultragoal
12
12
  description: "Run durable multi-blueprint ultragoals through evidence-gated handoffs."
13
13
  argument-hint: "<new|status|handoff|run|cancel> [brief]"
@@ -15,30 +15,158 @@ argument-hint: "<new|status|handoff|run|cancel> [brief]"
15
15
 
16
16
  # Ultragoal
17
17
 
18
- Use `wp ultragoal` as the durable controller for work spanning one or more blueprints.
18
+ Use `wp ultragoal` / MCP `wp_ultragoal_*` as the durable controller for work spanning
19
+ one or more blueprints. Prefer this spine over host-local mega-sessions or ad-hoc
20
+ multi-agent swarms.
21
+
22
+ ## Default budgets (override only when the user sets them)
23
+
24
+ | Budget | Default | Meaning |
25
+ | --------------- | --------- | ---------------------------------------------------------- |
26
+ | `concurrency` | 4 (max 8) | Parallel ready tasks / implementer lanes |
27
+ | `fix_budget` | 1 | Pre-existing issues fixable via `/fix` this phase |
28
+ | `review_budget` | 1 | Outside-voice reviewers for merge-ready (0 for local work) |
29
+ | `loop` | off | Do not run `/loop` or unbounded stop-hooks |
30
+
31
+ Reject unbudgeted sleep-mode briefs (“complete all”, “full autopilot”, “go to sleep”)
32
+ unless they name a blueprint/slug, budgets, and a stop condition. Route vague briefs
33
+ through `plan-refine` first (or require `force:` only when the user explicitly opts out).
34
+
35
+ ## Tooling map (use these; do not reimplement with Bash)
36
+
37
+ | Phase | Prefer MCP / CLI | Purpose |
38
+ | ---------------------- | -------------------------------------------------------------------------------------- | --------------------------------------------------- |
39
+ | Create / resume | `wp_ultragoal_new`, `wp_ultragoal_status` | Durable controller state |
40
+ | Isolation | `wp_worktree` | Owner / lane worktrees; never primary as controller |
41
+ | Blueprint read | `wp_blueprint_list`, `wp_blueprint_get`, `wp_blueprint_context` | Ready-set and deps |
42
+ | Blueprint write | `wp_blueprint_put`, `wp_blueprint_transition` | Spec edits (MCP-only for blueprints) |
43
+ | Task done | `wp_blueprint_task_verify` only | Evidence-gated completion |
44
+ | Parallel execute | `/pll` or ready-queue + host subagents | Max parallel when deps allow |
45
+ | Context-light delegate | `wp_session_context` | Manifest for subagents (no history paste) |
46
+ | Continuity | `wp_session_capture`, `wp_session_search`, `wp_session_restore`, `wp_session_snapshot` | Decisions / resume |
47
+ | Large command / file | `wp_session_execute`, `wp_session_batch_execute`, `wp_session_execute_file` | Bounded output + index |
48
+ | QA | `wp_qa` (or `wp_lint` + `wp_typecheck` + `wp_test`) | Affected quality gates |
49
+ | PR / land | `wp_pr_upsert`, `wp_pr_status`, `wp_pr_wait` | Open early; wait on required checks |
50
+ | Fleet / workers | `wp_fleet_status`, `wp_worker_tail` | Multi-session visibility |
51
+ | Token gain | `wp_gain` | Optional efficiency check after heavy execute |
52
+ | Advance loop | `wp_ultragoal_run`, `wp_ultragoal_handoff`, `wp_ultragoal_cancel` | Controller steps only |
53
+
54
+ Fallback to `wp …` CLI only when the matching MCP tool is unavailable. Prefer `wp` >
55
+ `vp` > raw package managers. Never raise timeouts to hide hangs.
19
56
 
20
57
  ## Protocol
21
58
 
22
- 1. Create or resume the ultragoal in a managed blueprint owner worktree (never main as controller).
23
- 2. Read `wp ultragoal status`, execute only the current phase handoff, then call `wp ultragoal run` again.
24
- 3. Complete blueprint tasks only through `wp_blueprint_task_verify` with passing evidence.
25
- 4. Stop when the controller reports `complete`, `cancelled`, blocked guard exhaustion, or `WP_ULTRAGOAL_DISABLE=1`.
59
+ 1. Create or resume the ultragoal in a **managed blueprint owner worktree** (`wp_worktree` /
60
+ `wp blueprint start`). Never use `main` or the primary checkout as controller.
61
+ 2. Print the **ready-set**: tasks whose dependencies are satisfied (from blueprint tools).
62
+ 3. Launch up to `concurrency` independent ready tasks in parallel (worktree-isolated).
63
+ Serialize only when file ownership overlaps or deps require it.
64
+ 4. Execute only the current phase handoff; call `wp_ultragoal_run` again after evidence.
65
+ 5. Mark tasks done **only** via `wp_blueprint_task_verify` with passing evidence.
66
+ 6. **Opportunistic `/fix`:** at most `fix_budget` pre-existing issues per phase, each with
67
+ named invariant + failing proof. Excess → handoff backlog (do not expand epic).
68
+ 7. **Validate / land:** local proof with `wp_qa` / targeted tools; outside review only when
69
+ merge-ready and within `review_budget` (default **exactly 1** sequential outside voice).
70
+ Prefer `wp review gate` for lifecycle authority. Use `wp_pr_*` for PR babysit — no
71
+ multi-sleep poll loops; no parallel multi-reviewer stampede.
72
+ 8. Stop on `complete`, `cancelled`, blocked guard exhaustion, or `WP_ULTRAGOAL_DISABLE=1`.
73
+
74
+ The blueprint engine owns task status and approval gates. The ultragoal controller must
75
+ never self-approve, directly mark a task done, bypass review provenance, or mutate the
76
+ primary checkout.
77
+
78
+ ## Failure / cascade
79
+
80
+ - Hard fail on a task → mark blocked with reason; **cascade-skip** dependents that cannot
81
+ proceed; continue independent ready work.
82
+ - Lifecycle mutation failure → stop (do not continue on stale plan state).
83
+ - On block: call `wp_ultragoal_handoff` and emit a **≤40-line handoff**: goal, done, blockers,
84
+ evidence refs (`wp_session_*` ids if any), next 3 commands. Do not paste full transcripts.
85
+
86
+ ## Outside-voice review (required for autopilot)
87
+
88
+ Autopilot and agent-driven ultragoal loops **must** request an **OpenCode Go** outside-voice review after each **goal/phase milestone**, and must pick the model by purpose. Direct `wp review run` output is advisory only. Lifecycle authority that can satisfy promotion/completion gates comes only from a converged **`wp review gate`** (content-addressed ledger + bound artifact).
89
+
90
+ Count each milestone review against `review_budget` for merge-ready claims: **exactly one sequential** reviewer path unless the user sets N. Prefer purpose-matched OpenCode Go first; do not fan out multi-host review swarms.
91
+
92
+ ### Milestones that require a review
93
+
94
+ Run a distinct OpenCode Go review (via `wp review gate` when the milestone is a promotion/approval gate; otherwise `wp review gate` or a purpose-matched gate resume) after each of:
95
+
96
+ | Milestone | When |
97
+ | ------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
98
+ | Plan gate | Before `draft` → `planned` / when ultragoal phase is `plan` and promotion is required |
99
+ | Phase advance | After ultragoal advances `plan` → `execute`, `execute` → `qa`, `qa` → `validate`, `validate` → `land`, or lands `complete` |
100
+ | Task batch handoff | After a meaningful execute batch when the phase remains `execute` (at least once per blueprint before claiming execute-complete) |
101
+
102
+ Do **not** invent ledger approvals. If OpenCode Go is unavailable or hits a provider-wide usage limit, capture the failure evidence and stop; do not substitute a forged approval.
103
+
104
+ ### Purpose → model routing (no hardcoding IDs)
105
+
106
+ Resolve models from the live catalog every time:
107
+
108
+ ```bash
109
+ opencode models opencode-go
110
+ ```
111
+
112
+ Pick by purpose (same intent as the committed OpenCode reviewer policy / `opencode-go` skill):
113
+
114
+ | Purpose | Preferred family (live catalog) | Why |
115
+ | ------------------------------------------- | ------------------------------------------------------------------------------------------------ | -------------------------- |
116
+ | Plan / architecture critique | DeepSeek **Pro** (`opencode-go/deepseek…-pro`) | Deeper plan review depth |
117
+ | Coding / implementation quality | Kimi **Code** first (`…kimi…-code`) | Coding quality lane |
118
+ | Cheap recheck / high-availability follow-up | DeepSeek **Flash** (`…deepseek…-flash`) | Fast secondary pass |
119
+ | Aggregate / unspecified | Follow `opencode-go` skill order: Kimi Code → DeepSeek Pro → DeepSeek Flash → remaining families | Default outside-voice lane |
120
+
121
+ Resolve the actual model ID with catalog greps (never paste a fixed model string into agent instructions as the only option):
122
+
123
+ ```bash
124
+ CATALOG=$(opencode models opencode-go)
125
+ # plan critique example:
126
+ MODEL=$(echo "$CATALOG" | grep '^opencode-go/deepseek' | grep -- '-pro$' | sort -V | tail -1)
127
+ # coding example:
128
+ # MODEL=$(echo "$CATALOG" | grep '^opencode-go/kimi' | grep -- '-code$' | sort -V | tail -1)
129
+ ```
130
+
131
+ Treat a provider-wide usage limit as terminal for every OpenCode Go model in the current review window; do not hop families to evade a usage block on the same provider.
132
+
133
+ ### Gate invocation shape
134
+
135
+ ```bash
136
+ wp review gate <blueprint-slug> \
137
+ --purpose plan|delivery \
138
+ --provider opencode \
139
+ --model "$MODEL" \
140
+ --effort medium|high \
141
+ --target HEAD \
142
+ --json
143
+ ```
144
+
145
+ Use `--purpose plan` for plan-phase promotion and `--purpose delivery` for implementation/delivery validation. Resume interrupted gates with `--resume <gate-id>` against the same immutable target.
146
+
147
+ ### Honesty rules (non-negotiable)
26
148
 
27
- The blueprint engine owns task status and approval gates. The ultragoal controller must never self-approve, directly mark a task done, bypass review provenance, or mutate the primary checkout. Keep every loop bounded and never increase timeouts.
149
+ - Never self-approve or hand-edit `reviews.md` / `review-events.jsonl` / frontmatter approvals to fake OpenCode Go authority.
150
+ - Never mark blueprint tasks done except through `wp_blueprint_task_verify` with real evidence.
151
+ - Never run ultragoal mutations on `main` or a primary checkout; use the managed blueprint owner worktree.
152
+ - Keep every loop bounded and never increase timeouts.
153
+ - When the controller returns `waiting` (`blueprint-promotion`, `approval-gate`, `blueprint-tasks`, …), fix the named gap; do not spin `wp ultragoal run` without progress.
28
154
 
29
155
  ## Tooling-aligned evidence (QA / land)
30
156
 
31
- - **QA phase** prefers **GitHub required checks** for the worktree PR (`gh pr view` + `gh pr checks --required`) when:
32
- - PR is `OPEN` or `MERGED`
33
- - required checks are green (same evaluator as land)
34
- - PR head source snapshot matches the clean worktree HEAD snapshot
35
- - If no PR-bound green CI is available, ultragoal falls back to local **`wp qa`** (`vp run qa`).
36
- - Do **not** raise timeouts to paper over incomplete worktrees; open a PR early so CI can satisfy QA.
37
- - Prefer `wp pr wait` / `gh run watch` while babysitting; do not invent multi-sleep poll loops.
38
- - **Land** still requires a **MERGED** PR with green required checks bound to the projected source snapshot.
157
+ - **QA phase** prefers **GitHub required checks** for the worktree PR (`wp_pr_status` /
158
+ `wp_pr_wait` or `gh pr checks --required`) when PR is `OPEN`/`MERGED`, checks green, and
159
+ PR head matches clean worktree HEAD.
160
+ - If no PR-bound green CI is available, fall back to local **`wp_qa`**.
161
+ - Open a PR early so CI can satisfy QA. Do **not** raise timeouts.
162
+ - **Land** still requires a **MERGED** PR with green required checks bound to the projected
163
+ source snapshot. Use `/verify --merge-ready` (review_budget=1), not default local verify.
39
164
 
40
165
  ## Snapshot / dirty worktree
41
166
 
42
- - Ultragoal ledger appends to blueprint `reviews.md` / `review-events.jsonl` / `review-artifacts/**`.
43
- - These paths under both `blueprints/**` and monorepo `webpresso/blueprints/**` are **evidence-only dirt** and must not fail `createCleanSourceSnapshot`.
44
- - Dirty **source** paths (including `_overview.md` task status edits) still fail closed until committed.
167
+ - Ultragoal ledger appends to blueprint `reviews.md` / `review-events.jsonl` /
168
+ `review-artifacts/**`.
169
+ - These paths under both `blueprints/**` and monorepo `webpresso/blueprints/**` are
170
+ **evidence-only dirt** and must not fail `createCleanSourceSnapshot`.
171
+ - Dirty **source** paths (including `_overview.md` task status edits) still fail closed
172
+ until committed. Use `wp_session_snapshot` before risky branch switches.
@@ -7,10 +7,10 @@ scope: repo
7
7
  applies_to: [agents]
8
8
  related: [testing-philosophy, tph]
9
9
  created: "2026-05-07"
10
- last_reviewed: "2026-07-13"
10
+ last_reviewed: "2026-07-21"
11
11
  name: verify
12
12
  description: "Post-implementation quality gate: run checks, TPH audit, cleanup, docs, proof."
13
- argument-hint: "<target> [--full] where target is: package|file|plan-slug|all"
13
+ argument-hint: "<target> [--full|--merge-ready] where target is: package|file|plan-slug|all"
14
14
  ---
15
15
 
16
16
  # Verify
@@ -21,6 +21,33 @@ Post-implementation quality gate. Run after implementation exists, before claimi
21
21
  repair. `/verify` owns the broader question: **is this work actually complete,
22
22
  integrated, and free of stale garbage?**
23
23
 
24
+ ## Modes
25
+
26
+ | Invocation | Outside voice | When |
27
+ | -------------------------------- | ---------------------------------- | ------------------------------ |
28
+ | `/verify <target>` (default) | **0** | Local completeness / iteration |
29
+ | `/verify <target> --full` | **0** (broader local gates) | Full local QA bookend |
30
+ | `/verify <target> --merge-ready` | **exactly 1** (unless user sets N) | Claiming merge-ready / land |
31
+
32
+ Default `/verify` must **not** spawn outside reviewers. That stampede is a known
33
+ token/time failure mode. Merge-ready runs **one** sequential outside voice via
34
+ the preferred skill (`claude` / `codex` / `grok` / one OpenCode Go), then stops.
35
+
36
+ ## Tooling map
37
+
38
+ | Gate | Prefer |
39
+ | ------------------------- | --------------------------------------------------------------- |
40
+ | Lint / types / tests / QA | `wp_lint`, `wp_typecheck`, `wp_test`, `wp_qa` |
41
+ | Format | `wp_format` |
42
+ | Audits | `wp_audit`, `wp_audits` |
43
+ | Blueprint | blueprint MCP tools + `wp audit blueprint-lifecycle` |
44
+ | PR / CI wait | `wp_pr_status`, `wp_pr_wait` (not multi-sleep loops) |
45
+ | Release | `wp_release_readiness` when shipping |
46
+ | Large output | `wp_session_execute` / `batch_execute` / `execute_file` |
47
+ | Continuity | `wp_session_capture` for verify summary; avoid paste-back walls |
48
+ | E2E / act | `wp_e2e`, `wp_ci_act` when the change requires them |
49
+ | Outside authority | `wp review gate` (not raw multi-agent review swarms) |
50
+
24
51
  ## Iron law — evidence before claims
25
52
 
26
53
  No completion claim without fresh verification evidence.
@@ -40,15 +67,15 @@ Not sufficient: "should pass", "looks correct", lint-only evidence for runtime c
40
67
  ```bash
41
68
  /verify <target>
42
69
  /verify <target> --full
70
+ /verify <target> --merge-ready
43
71
  ```
44
72
 
45
73
  `<target>` is a file path, package name, blueprint slug, or `all`.
46
74
 
47
75
  Follow the repo's current routing and command surface:
48
76
 
49
- - use repo-owned quality wrappers first
50
- - use injected quality-tool routing when present
51
- - use bounded large-output tooling when the repo instructs it
77
+ - use MCP `wp_*` / repo-owned quality wrappers first
78
+ - use bounded session-memory tooling for large output
52
79
  - reuse fresh logs instead of re-running broad commands just to inspect output
53
80
 
54
81
  ## Folded health dashboard
@@ -82,6 +109,9 @@ workflow:
82
109
  1. Identify target type (file / package / blueprint slug / all).
83
110
  2. Map each claim you plan to make to the exact command or log that proves it.
84
111
  3. If the target is a blueprint slug, run the repo's blueprint show/audit surface and record the acceptance boxes that still need proof.
112
+ 4. **CI cost / local-first:** treat remote CI as confirmation, not the first
113
+ debugger. Load `ci-cost-local-first` expectations: no hook skips, no
114
+ blind `gh run rerun`, Ubicloud for private non-release jobs.
85
115
 
86
116
  ## Phase 1 — Governance gates
87
117
 
@@ -98,17 +128,32 @@ Hard stop on any failure.
98
128
 
99
129
  Run the narrowest checks that prove the touched behavior:
100
130
 
101
- - targeted lint
102
- - targeted typecheck
103
- - targeted tests
104
- - build / e2e / package checks only when the change requires them
131
+ - `wp_lint` / targeted lint
132
+ - `wp_typecheck` / targeted typecheck
133
+ - `wp_test` / targeted tests
134
+ - `wp_qa`, `wp_e2e`, build / package checks only when the change requires them
135
+
136
+ **Before push or PR open/update**, run the pre-push owner end-to-end:
137
+
138
+ ```bash
139
+ wp ci-preflight
140
+ ```
141
+
142
+ That is fail-fast branch-scoped format → guardrails → typecheck → lint →
143
+ test. Agent-kit itself enforces it from `.husky/pre-push`; consumer repos may
144
+ keep pre-push checks user-owned, so run the command explicitly before pushing.
145
+ Do **not** claim push-ready if preflight failed. Do **not** bypass hooks to ship
146
+ red work.
105
147
 
106
148
  Rules:
107
149
 
108
- - Prefer repo wrappers over raw underlying tools.
109
- - Reuse fresh logs if the runner auto-saves them.
150
+ - Prefer MCP `wp_*` over raw underlying tools.
151
+ - Reuse fresh logs / session-memory indexed output if the runner auto-saves them.
110
152
  - Never claim broader correctness than the commands actually proved.
111
- - If the repo documents a "full QA" bookend, reserve it for the final broad pass rather than every iteration.
153
+ - If the repo documents a "full QA" bookend, reserve `wp_qa` / `--full` for the final broad pass rather than every iteration.
154
+ - If CI is already red: read the failed job log, reproduce with the matching
155
+ local `wp` command, fix, re-run `wp ci-preflight`, then push **one**
156
+ corrective commit — do not burn another full matrix “to check.”
112
157
 
113
158
  ## Phase 3 — Cross-surface impact scan
114
159
 
@@ -161,59 +206,52 @@ cleanup, route that pass through `ai-deslop` first rather than broadening
161
206
 
162
207
  This phase exists to catch the garbage that often slips in beside otherwise-correct work.
163
208
 
164
- ## Phase 6 — Outside-model approval gate
209
+ ## Phase 6 — Outside-model approval gate (**`--merge-ready` only**)
210
+
211
+ **Skip this entire phase** for default `/verify` and `/verify --full`. Local
212
+ `done` claims do not require outside voice.
165
213
 
166
- Before claiming merge-ready, obtain outside-voice model approvals unless the
167
- user explicitly asked for a different approval count or reviewer mix.
214
+ Before claiming **merge-ready**, obtain outside-voice approvals only under this policy:
168
215
 
169
- Default policy:
216
+ Default merge-ready policy:
170
217
 
171
- - Require **one extra model approval** by default. At most **one OpenCode Go reviewer** counts toward the requirement unless the user explicitly asks for multiple OpenCode models.
172
- - If the user asks for more, fewer, zero, or specific reviewers, follow that
173
- explicit instruction and report the chosen requirement.
174
- - These approvals are model outside-voice approvals, not a substitute for
175
- required human GitHub reviews or branch-protection approvals.
218
+ - Require **exactly one** extra model approval unless the user sets a different N.
219
+ - At most **one OpenCode Go reviewer** counts toward the requirement unless the user
220
+ explicitly asks for multiple OpenCode models.
221
+ - Run reviewers **sequentially** (try next only if current unavailable). Never fan out
222
+ parallel multi-host review swarms.
223
+ - If the user asks for more, fewer, zero, or specific reviewers, follow that instruction
224
+ and report the chosen requirement.
225
+ - These approvals are model outside-voice approvals, not a substitute for human GitHub
226
+ reviews or branch-protection approvals.
176
227
 
177
- Reviewer preference:
228
+ Reviewer preference (pick **one** path):
178
229
 
179
- - When running from Codex, prefer **Claude or Grok** (fall back to one OpenCode Go reviewer if both are unavailable).
180
- - When running from Claude, prefer **Codex or Grok** (fall back to one OpenCode Go reviewer if both are unavailable).
181
- - When Codex/Claude/Grok outside voice is unavailable, use **one OpenCode Go
182
- reviewer** if OpenCode is logged in.
183
- - Prefer the repo's outside-voice skills instead of hand-rolled commands:
184
- `$agent-kit:claude`, `$agent-kit:codex`, `$agent-kit:grok`, and one OpenCode Go reviewer
185
- skills such as `$agent-kit:opencode-go`, `$agent-kit:qwen`,
186
- `$agent-kit:deepseek`, `$agent-kit:glm`, `$agent-kit:kimi`,
187
- `$agent-kit:minimax`, or `$agent-kit:mimo`.
230
+ - From Codex Claude or Grok (else one OpenCode Go).
231
+ - From Claude Codex or Grok (else one OpenCode Go).
232
+ - From Grok Claude or Codex (else one OpenCode Go).
233
+ - Prefer skills: `claude`, `codex`, `grok`, or one of `opencode-go` / `qwen` /
234
+ `deepseek` / `glm` / `kimi` / `minimax` / `mimo`.
188
235
 
189
236
  Approval evidence requirements:
190
237
 
191
- - For blueprint lifecycle approval workflows, run `wp review gate <blueprint-slug> --target HEAD --json`
192
- first so exact-SHA reusable evidence and approval frontmatter are handled
193
- transactionally. Use `wp review log` / `wp review read` for focused ledger
194
- inspection or manual evidence recording.
195
- - Each outside reviewer must return a clear `APPROVED`/`BLOCKED` (or equivalent)
196
- verdict with enough evidence to identify what it reviewed.
197
- - Record outside approval evidence as PR comments when a PR exists.
198
- - Each PR comment must include the approving model/tool name, provider/family
199
- when known, verdict, reviewed commit or branch, and any blockers or caveats.
200
- - If there is no PR yet, record the same evidence in the final Verify report and
201
- add the PR comments once the PR exists before calling the PR merge-ready.
202
- - If an outside reviewer is unavailable (not installed, not logged in, missing
203
- model, timeout after the reviewer skill's allowed retry path), do not silently
204
- count it. Try the next preferred reviewer. If the required count still cannot
205
- be met, report the exact approval gap and say the work is **not merge-ready**.
238
+ - Blueprint lifecycle: `wp review gate <blueprint-slug> --target HEAD --json` first.
239
+ Use `wp review log` / `wp review read` for inspection.
240
+ - Each reviewer must return clear `APPROVED`/`BLOCKED` with enough evidence.
241
+ - Record as PR comments when a PR exists (model/tool, verdict, reviewed commit).
242
+ - Unavailable reviewer try next preferred; if still short, report gap and
243
+ **not merge-ready** (never invent approvals).
206
244
 
207
245
  ## Phase 7 — Final completion statement
208
246
 
209
247
  Report:
210
248
 
211
- - what was verified
212
- - which commands/logs prove it
213
- - which docs/help/instruction surfaces were refreshed when command or operator guidance changed
214
- - which outside models approved it, with PR comment links when a PR exists
249
+ - mode used (`local` / `full` / `merge-ready`)
250
+ - what was verified and which `wp_*` commands/logs prove it
251
+ - which docs/help/instruction surfaces were refreshed when guidance changed
252
+ - outside models only if merge-ready (with PR comment links when applicable)
215
253
  - what remains intentionally out of scope
216
254
 
217
- When catalog assets, generated instruction templates, or checked-in generated instruction copies changed, include the repo's public-package-safety or package-surface leak checks in the verification evidence.
255
+ When catalog assets or generated instruction surfaces changed, include public-package-safety or package-surface leak checks.
218
256
 
219
257
  If any required check is missing, the correct result is **not done yet**, not a softer claim.
@@ -26,5 +26,13 @@ export interface BlueprintLifecycleAuditOptions {
26
26
  readonly baseRef?: string;
27
27
  /** Restrict expensive/error-producing checks to blueprints touched in git. */
28
28
  readonly changedOnly?: boolean;
29
+ /**
30
+ * When set (from `wp audit --affected` / pre-commit staged files), restrict
31
+ * changed-only scope to blueprints that appear in this path set.
32
+ *
33
+ * Without this filter, porcelain includes untracked drafts and can fail an
34
+ * unrelated skill/docs commit that never staged any blueprint.
35
+ */
36
+ readonly affectedFiles?: readonly string[];
29
37
  }
30
38
  export declare function auditBlueprintLifecycleSql(cwd?: string, options?: BlueprintLifecycleAuditOptions): Promise<RepoAuditResult>;