@webpresso/plugin-codex 0.0.15 → 0.0.17
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/.codex-plugin/plugin.json +1 -1
- package/.mcp.json +1 -1
- package/bin/wp +40 -14
- package/package.json +1 -1
- package/plugin-skill-ownership.json +21 -18
- package/skills/antigravity/SKILL.md +52 -0
- package/skills/autopilot/SKILL.md +16 -16
- package/skills/claude/SKILL.md +11 -6
- package/skills/codex/SKILL.md +11 -6
- package/skills/deep-interview/SKILL.md +13 -13
- package/skills/delivery-program/SKILL.md +4 -4
- package/skills/fix/SKILL.md +31 -18
- package/skills/handoff/SKILL.md +42 -11
- package/skills/hooks-doctor/SKILL.md +11 -9
- package/skills/investigate/SKILL.md +20 -9
- package/skills/opencode-go/SKILL.md +11 -10
- package/skills/plan-refine/SKILL.md +2 -1
- package/skills/ralplan/SKILL.md +5 -1
- package/skills/team/SKILL.md +62 -18
- package/skills/tech-debt/SKILL.md +1 -1
- package/skills/tooling-friction/SKILL.md +32 -12
- package/skills/ultragoal/SKILL.md +53 -58
- package/skills/verify/SKILL.md +45 -42
|
@@ -21,13 +21,13 @@ argument-hint: "<new|status|handoff|run|cancel> [brief]"
|
|
|
21
21
|
- "spawn many in parallel", multi-blueprint ready-set execution
|
|
22
22
|
- Reject unbound "complete everything while I sleep" without stop condition / budgets
|
|
23
23
|
|
|
24
|
-
Use `wp ultragoal` / MCP `
|
|
24
|
+
Use `wp ultragoal` / MCP `ultragoal_*` as the durable controller for work spanning
|
|
25
25
|
one or more blueprints. Prefer this spine over host-local mega-sessions or ad-hoc
|
|
26
26
|
multi-agent swarms.
|
|
27
27
|
|
|
28
28
|
## Creating an ultragoal does NOT set a host stop-condition
|
|
29
29
|
|
|
30
|
-
`
|
|
30
|
+
`ultragoal_new` records a durable brief, budgets, and phase. It does **not**
|
|
31
31
|
install the session Stop hook that keeps a host working until a condition holds
|
|
32
32
|
— that hook belongs to the host's own goal surface (Claude Code's `/goal`), which
|
|
33
33
|
this skill cannot reach. The two are independent: an ultragoal can sit in `plan`
|
|
@@ -151,23 +151,23 @@ OS sandbox. Run Ultragoal only with providers, configuration, and task content y
|
|
|
151
151
|
|
|
152
152
|
## Tooling map (use these; do not reimplement with Bash)
|
|
153
153
|
|
|
154
|
-
| Phase | Prefer MCP / CLI
|
|
155
|
-
| ---------------------- |
|
|
156
|
-
| Create / resume | `
|
|
157
|
-
| Isolation | `
|
|
158
|
-
| Blueprint read | `
|
|
159
|
-
| Blueprint write | `
|
|
160
|
-
| Task done | `
|
|
161
|
-
| Parallel execute | `/goal` (autopilot) or ready-queue + host subagents
|
|
162
|
-
| Context-light delegate | `
|
|
163
|
-
| Continuity | `
|
|
164
|
-
| Large command / file | `
|
|
165
|
-
| QA | `
|
|
166
|
-
| PR / land | `
|
|
167
|
-
| Delivery programs | `
|
|
168
|
-
| Fleet / workers | `
|
|
169
|
-
| Token gain | `
|
|
170
|
-
| Advance loop | `
|
|
154
|
+
| Phase | Prefer MCP / CLI | Purpose |
|
|
155
|
+
| ---------------------- | -------------------------------------------------------------------------- | --------------------------------------------------- |
|
|
156
|
+
| Create / resume | `ultragoal_new`, `ultragoal_status` | Durable controller state |
|
|
157
|
+
| Isolation | `worktree` | Owner / lane worktrees; never primary as controller |
|
|
158
|
+
| Blueprint read | `blueprint_list`, `blueprint_get`, `blueprint_context` | Ready-set and deps |
|
|
159
|
+
| Blueprint write | `blueprint_put`, `blueprint_transition` | Spec edits (MCP-only for blueprints) |
|
|
160
|
+
| Task done | `blueprint_task_verify` only | Evidence-gated completion |
|
|
161
|
+
| Parallel execute | `/goal` (autopilot) or ready-queue + host subagents | Max parallel when deps allow |
|
|
162
|
+
| Context-light delegate | `session_context` | Manifest for subagents (no history paste) |
|
|
163
|
+
| Continuity | `session_capture`, `session_search`, `session_restore`, `session_snapshot` | Decisions / resume |
|
|
164
|
+
| Large command / file | `session_execute`, `session_batch_execute`, `session_execute_file` | Bounded output + index |
|
|
165
|
+
| QA | `qa` (or `lint` + `typecheck` + `test`) | Affected quality gates |
|
|
166
|
+
| PR / land | `pr_upsert`, `pr_status`, `pr_wait`, `pr_merge` | Open early; exact-head merge only |
|
|
167
|
+
| Delivery programs | `delivery_status` | Derive one dispatch/integration action |
|
|
168
|
+
| Fleet / workers | `fleet_status`, `worker_tail` | Multi-session visibility |
|
|
169
|
+
| Token gain | `gain` | Optional efficiency check after heavy execute |
|
|
170
|
+
| Advance loop | `ultragoal_run`, `ultragoal_handoff`, `ultragoal_cancel` | Controller steps only |
|
|
171
171
|
|
|
172
172
|
Fallback to `wp …` CLI only when the matching MCP tool is unavailable. Prefer `wp` >
|
|
173
173
|
`vp` > raw package managers. Never raise timeouts to hide hangs.
|
|
@@ -175,25 +175,25 @@ Fallback to `wp …` CLI only when the matching MCP tool is unavailable. Prefer
|
|
|
175
175
|
## Protocol
|
|
176
176
|
|
|
177
177
|
1. Create or resume the ultragoal in a **managed blueprint owner worktree**
|
|
178
|
-
(`
|
|
178
|
+
(`worktree` / `blueprint_put`). Never use `main` or the primary checkout
|
|
179
179
|
as controller.
|
|
180
180
|
2. Print the **ready-set**: tasks whose dependencies are satisfied (from blueprint tools).
|
|
181
181
|
3. Launch up to `concurrency` independent ready tasks in parallel (worktree-isolated).
|
|
182
182
|
Serialize only when file ownership overlaps or deps require it.
|
|
183
|
-
4. Execute only the current phase handoff; call `
|
|
184
|
-
5. Mark tasks done **only** via `
|
|
183
|
+
4. Execute only the current phase handoff; call `ultragoal_run` again after evidence.
|
|
184
|
+
5. Mark tasks done **only** via `blueprint_task_verify` with passing evidence.
|
|
185
185
|
6. **Opportunistic `/fix`:** at most `fix_budget` pre-existing issues per phase, each with
|
|
186
186
|
named invariant + failing proof. Excess → handoff backlog (do not expand epic).
|
|
187
|
-
7. **Validate / land:** local proof with `
|
|
187
|
+
7. **Validate / land:** local proof with `qa` / targeted tools; outside review only when
|
|
188
188
|
merge-ready and within `review_budget` — **exactly one sequential** outside voice unless
|
|
189
189
|
the user sets N (the default value lives in `workflow-skills-routing.md`).
|
|
190
190
|
Controller validation evidence is **machine-qa (prior QA phase) + N outside voices**
|
|
191
191
|
(default N=1), not two outside model reviewers at budget 1.
|
|
192
|
-
`
|
|
193
|
-
approval
|
|
192
|
+
`review_gate` has one mode: purpose plan for exact-version draft plan
|
|
193
|
+
approval (then `blueprint_promote`), purpose delivery for implementation/phase outside
|
|
194
194
|
voice. Each new provider verdict is a formal round of the slug's budget and
|
|
195
195
|
an approval is authority immediately. A CLI delivery gate is explicit MCP-unavailable
|
|
196
|
-
compatibility only, not this MCP contract. Use `
|
|
196
|
+
compatibility only, not this MCP contract. Use `pr_*` for PR babysit — no
|
|
197
197
|
multi-sleep poll loops; no parallel multi-reviewer stampede.
|
|
198
198
|
8. Stop on `complete`, `cancelled`, blocked guard exhaustion, or `WP_ULTRAGOAL_DISABLE=1`.
|
|
199
199
|
|
|
@@ -206,83 +206,78 @@ primary checkout.
|
|
|
206
206
|
- Hard fail on a task → mark blocked with reason; **cascade-skip** dependents that cannot
|
|
207
207
|
proceed; continue independent ready work.
|
|
208
208
|
- Lifecycle mutation failure → stop (do not continue on stale plan state).
|
|
209
|
-
- On block: call `
|
|
210
|
-
evidence refs (`
|
|
209
|
+
- On block: call `ultragoal_handoff` and emit a **≤40-line handoff**: goal, done, blockers,
|
|
210
|
+
evidence refs (`session_*` ids if any), next 3 commands. Do not paste full transcripts.
|
|
211
211
|
|
|
212
212
|
## Outside-voice review (required for autopilot)
|
|
213
213
|
|
|
214
|
-
Autopilot and agent-driven ultragoal loops **must** request an
|
|
214
|
+
Autopilot and agent-driven ultragoal loops **must** request an outside-voice review after each **goal/phase milestone**. Use **`review_gate`** purpose plan for exact-version draft plan approval (then promote with `blueprint_promote`) and one single-shot **`review_gate`** purpose delivery call for implementation/phase outside voice. The gate has one mode: each newly executed provider review that reaches a verdict is a formal round of the slug's budget, an approval is authority immediately, and an identical-subject call replays the recorded verdict without a new round. CLI delivery gates are explicit MCP-unavailable compatibility only, not this MCP contract.
|
|
215
215
|
|
|
216
|
-
Count each milestone review against `review_budget` for merge-ready claims: **exactly one sequential** reviewer path unless the user sets N; the default value is owned by `workflow-skills-routing.md`.
|
|
216
|
+
Count each milestone review against `review_budget` for merge-ready claims: **exactly one sequential** reviewer path unless the user sets N; the default value is owned by `workflow-skills-routing.md`. Do not fan out multi-host review swarms.
|
|
217
217
|
|
|
218
218
|
### Milestones that require a review
|
|
219
219
|
|
|
220
|
-
Run `
|
|
221
|
-
single-shot `
|
|
220
|
+
Run `review_gate` purpose plan for the plan approval milestone below and one
|
|
221
|
+
single-shot `review_gate` purpose delivery call for implementation/phase
|
|
222
222
|
milestones. Each new provider verdict is one formal round of the slug's budget.
|
|
223
223
|
|
|
224
224
|
| Milestone | When |
|
|
225
225
|
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
|
|
226
|
-
| Plan gate | Before `draft` → `planned`, using the exact version returned by `
|
|
226
|
+
| Plan gate | Before `draft` → `planned`, using the exact version returned by `blueprint_put`; then `blueprint_promote` the approved version |
|
|
227
227
|
| Phase advance | After ultragoal advances `plan` → `execute`, `execute` → `qa`, `qa` → `validate`, `validate` → `land`, or lands `complete` |
|
|
228
228
|
| Task batch handoff | After a meaningful execute batch when the phase remains `execute` (at least once per blueprint before claiming execute-complete) |
|
|
229
229
|
|
|
230
|
-
Do **not** invent ledger approvals. If
|
|
230
|
+
Do **not** invent ledger approvals. If the review provider is unavailable or hits a provider-wide usage limit, capture the failure evidence and end outside review for the window; do not hop reviewer families, substitute another host, or substitute a forged approval.
|
|
231
231
|
|
|
232
|
-
###
|
|
232
|
+
### Reviewer selection (the gate chooses, not the caller)
|
|
233
233
|
|
|
234
|
-
|
|
234
|
+
Pass `caller_model` with your own model id and omit `provider`, `model`, and
|
|
235
|
+
`effort`. The gate selects the reviewer route itself — a cross-family reviewer
|
|
236
|
+
chosen for capability, current provider limits, and measured daily cost — and
|
|
237
|
+
reports the choice in `policy_selection`. Never resolve models from a live
|
|
238
|
+
catalog at invocation time, never probe a provider CLI for its model list, and
|
|
239
|
+
never read a credential store to discover models; provider catalog discovery
|
|
240
|
+
belongs to the snapshot drift workflow. A human operator may still name an
|
|
241
|
+
explicit `provider`/`model` as an override; agents must not.
|
|
235
242
|
|
|
236
|
-
|
|
237
|
-
opencode models opencode-go
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
**Selection order and the purpose→family mapping live in one place: the committed
|
|
241
|
-
reviewer policy (`packages/workflow-skills/src/opencode-reviewer-policy.ts`),
|
|
242
|
-
rendered into the `opencode-go` skill and drift-gated against it.** Follow that
|
|
243
|
-
skill; do not restate the ordering here. A second copy of a preference list is a
|
|
244
|
-
second thing to update, and the copy that goes stale is the one an agent reads.
|
|
245
|
-
|
|
246
|
-
Treat a provider-wide usage limit as terminal for every OpenCode Go model in the current review window; do not hop OpenCode families to evade a usage block. There is no substitute host: the window ends with the captured failure evidence.
|
|
243
|
+
Treat a provider-wide usage limit as terminal for the current review window; do not hop reviewer families to evade a usage block. There is no substitute host: the window ends with the captured failure evidence.
|
|
247
244
|
|
|
248
245
|
### Plan gate invocation shape
|
|
249
246
|
|
|
250
247
|
```text
|
|
251
|
-
|
|
248
|
+
review_gate({
|
|
252
249
|
"project_id": "<project-id>",
|
|
253
250
|
"slug": "<blueprint-slug>",
|
|
254
251
|
"expected_version": "bpv1:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
|
|
255
252
|
"repository_access": "read-only",
|
|
256
253
|
"auto_promote": true,
|
|
257
|
-
"
|
|
258
|
-
"model": "<selected-model>",
|
|
259
|
-
"effort": "medium"
|
|
254
|
+
"caller_model": "<your own model id>"
|
|
260
255
|
})
|
|
261
256
|
```
|
|
262
257
|
|
|
263
258
|
The plan gate has no `purpose` or `target` field. Pass the exact `bpv1:` token
|
|
264
|
-
returned by `
|
|
259
|
+
returned by `blueprint_put`, never a commit hash or `HEAD`. An explicitly
|
|
265
260
|
requested CLI delivery gate is an MCP-unavailable compatibility fallback only.
|
|
266
261
|
If the MCP host returns before a terminal result, poll the same invocation with
|
|
267
|
-
`
|
|
262
|
+
`review_gate_wait`; treat in-progress, not-found, contention, waiter timeout,
|
|
268
263
|
waiter abort, and cancellation as non-verdict observation states. `not_found`
|
|
269
264
|
means no active or terminal gate exists for that subject; refresh state and
|
|
270
265
|
start the gate again instead of spinning a wait loop.
|
|
271
266
|
|
|
272
267
|
### Honesty rules (non-negotiable)
|
|
273
268
|
|
|
274
|
-
- Never self-approve or hand-edit `reviews.md` / `review-events.jsonl` / frontmatter approvals to fake
|
|
275
|
-
- Never mark blueprint tasks done except through `
|
|
269
|
+
- Never self-approve or hand-edit `reviews.md` / `review-events.jsonl` / frontmatter approvals to fake outside-review authority.
|
|
270
|
+
- Never mark blueprint tasks done except through `blueprint_task_verify` with real evidence.
|
|
276
271
|
- Never run ultragoal mutations on `main` or a primary checkout; use the managed blueprint owner worktree.
|
|
277
272
|
- Keep every loop bounded and never increase timeouts.
|
|
278
273
|
- When the controller returns `waiting` (`blueprint-promotion`, `approval-gate`, `blueprint-tasks`, …), fix the named gap; do not spin `wp ultragoal run` without progress.
|
|
279
274
|
|
|
280
275
|
## Tooling-aligned evidence (QA / land)
|
|
281
276
|
|
|
282
|
-
- **QA phase** prefers **GitHub required checks** for the worktree PR (`
|
|
283
|
-
`
|
|
277
|
+
- **QA phase** prefers **GitHub required checks** for the worktree PR (`pr_status` /
|
|
278
|
+
`pr_wait` or `gh pr checks --required`) when PR is `OPEN`/`MERGED`, checks green, and
|
|
284
279
|
PR head matches clean worktree HEAD.
|
|
285
|
-
- If no PR-bound green CI is available, fall back to local **`
|
|
280
|
+
- If no PR-bound green CI is available, fall back to local **`qa`**.
|
|
286
281
|
- Open a PR early so CI can satisfy QA. Do **not** raise timeouts.
|
|
287
282
|
- **Land** still requires a **MERGED** PR with green required checks bound to the projected
|
|
288
283
|
source snapshot. Use `/verify --merge-ready` (merge-ready `review_budget`, per
|
package/skills/verify/SKILL.md
CHANGED
|
@@ -37,22 +37,24 @@ integrated, and free of stale garbage?**
|
|
|
37
37
|
|
|
38
38
|
Default `/verify` must **not** spawn outside reviewers. That stampede is a known
|
|
39
39
|
token/time failure mode. Merge-ready runs **one** sequential outside voice via
|
|
40
|
-
|
|
40
|
+
one `review_gate` delivery gate (or a host review skill), then stops. Pass
|
|
41
|
+
`caller_model` with your own model id and omit `provider`/`model`/`effort`: the
|
|
42
|
+
gate selects the cross-family reviewer and reports it in `policy_selection`.
|
|
41
43
|
|
|
42
44
|
## Tooling map
|
|
43
45
|
|
|
44
|
-
| Gate | Prefer
|
|
45
|
-
| ------------------------- |
|
|
46
|
-
| Lint / types / tests / QA | `
|
|
47
|
-
| Format | `
|
|
48
|
-
| Audits | `
|
|
49
|
-
| Blueprint | blueprint MCP tools + `
|
|
50
|
-
| PR / CI wait | `
|
|
51
|
-
| Release | `
|
|
52
|
-
| Large output | `
|
|
53
|
-
| Continuity | `
|
|
54
|
-
| E2E / act | `
|
|
55
|
-
| Outside authority | `
|
|
46
|
+
| Gate | Prefer |
|
|
47
|
+
| ------------------------- | ------------------------------------------------------------------------------------- |
|
|
48
|
+
| Lint / types / tests / QA | `lint`, `typecheck`, `test`, `qa` |
|
|
49
|
+
| Format | `format` |
|
|
50
|
+
| Audits | `audit`, `audits` |
|
|
51
|
+
| Blueprint | blueprint MCP tools + `audit` |
|
|
52
|
+
| PR / CI wait | `pr_status`, `pr_wait` (not multi-sleep loops) |
|
|
53
|
+
| Release | `release_progress` for live Release phases; `release_readiness` for package gates |
|
|
54
|
+
| Large output | `session_execute` / `batch_execute` / `execute_file` |
|
|
55
|
+
| Continuity | `session_capture` for verify summary; avoid paste-back walls |
|
|
56
|
+
| E2E / act | `e2e`, `ci_act` when the change requires them |
|
|
57
|
+
| Outside authority | `review_gate` (purpose plan or delivery); each new provider verdict is a formal round |
|
|
56
58
|
|
|
57
59
|
## Iron law — evidence before claims
|
|
58
60
|
|
|
@@ -81,7 +83,7 @@ Not sufficient: "should pass", "looks correct", lint-only evidence for runtime c
|
|
|
81
83
|
|
|
82
84
|
Follow the repo's current routing and command surface:
|
|
83
85
|
|
|
84
|
-
- use MCP
|
|
86
|
+
- use wp MCP tools / repo-owned quality wrappers first
|
|
85
87
|
- use bounded session-memory tooling for large output
|
|
86
88
|
- reuse fresh logs instead of re-running broad commands just to inspect output
|
|
87
89
|
|
|
@@ -102,7 +104,7 @@ workflow:
|
|
|
102
104
|
2. Run the repo audit when available:
|
|
103
105
|
|
|
104
106
|
```text
|
|
105
|
-
|
|
107
|
+
audit({"kind":"test-smells"})
|
|
106
108
|
```
|
|
107
109
|
|
|
108
110
|
Use the global `wp audit test-smells` command only when MCP is unavailable.
|
|
@@ -137,16 +139,16 @@ Hard stop on any failure.
|
|
|
137
139
|
|
|
138
140
|
Run the narrowest checks that prove the touched behavior:
|
|
139
141
|
|
|
140
|
-
- `
|
|
141
|
-
- `
|
|
142
|
-
- `
|
|
143
|
-
- `
|
|
142
|
+
- `lint` / targeted lint
|
|
143
|
+
- `typecheck` / targeted typecheck
|
|
144
|
+
- `test` / targeted tests
|
|
145
|
+
- `qa`, `e2e`, build / package checks only when the change requires them
|
|
144
146
|
|
|
145
147
|
**Before push or PR open/update**, run the pre-push owner end-to-end:
|
|
146
148
|
|
|
147
149
|
```text
|
|
148
|
-
start =
|
|
149
|
-
|
|
150
|
+
start = ci_preflight({})
|
|
151
|
+
ci_preflight_wait({ runId: start.details.operation.runId })
|
|
150
152
|
```
|
|
151
153
|
|
|
152
154
|
The start result is not a gate verdict. Poll again when wait returns
|
|
@@ -167,12 +169,12 @@ push-ready if preflight failed. Do **not** bypass hooks to ship red work.
|
|
|
167
169
|
|
|
168
170
|
Rules:
|
|
169
171
|
|
|
170
|
-
- Prefer MCP
|
|
172
|
+
- Prefer wp MCP tools over raw underlying tools.
|
|
171
173
|
- Reuse fresh logs / session-memory indexed output if the runner auto-saves them.
|
|
172
174
|
- Never claim broader correctness than the commands actually proved.
|
|
173
|
-
- If the repo documents a "full QA" bookend, reserve `
|
|
175
|
+
- If the repo documents a "full QA" bookend, reserve `qa` / `--full` for the final broad pass rather than every iteration.
|
|
174
176
|
- If CI is already red: read the failed job log, reproduce with the matching
|
|
175
|
-
local `
|
|
177
|
+
local `ci_preflight` + `ci_preflight_wait` flow (or the `wp ci-preflight` CLI fallback), fix, then push **one**
|
|
176
178
|
corrective commit — do not burn another full matrix “to check.”
|
|
177
179
|
|
|
178
180
|
## Phase 3 — Cross-surface impact scan
|
|
@@ -209,7 +211,7 @@ Check that:
|
|
|
209
211
|
- UX or operator-facing flows include graceful-degradation coverage when applicable
|
|
210
212
|
|
|
211
213
|
Run the folded TPH gate for every verification target. At minimum, execute
|
|
212
|
-
`
|
|
214
|
+
`audit` with the `test-smells` kind when available (use global `wp audit
|
|
213
215
|
test-smells` only as the CLI fallback) and inspect changed tests against the
|
|
214
216
|
`testing-philosophy` checklist. Add E2E or integration evidence when the change
|
|
215
217
|
touches user/operator-facing workflows, batch/list behavior, graceful
|
|
@@ -253,7 +255,7 @@ Before claiming **merge-ready** / land:
|
|
|
253
255
|
|
|
254
256
|
### 1. Classify with immutable refs
|
|
255
257
|
|
|
256
|
-
Run `
|
|
258
|
+
Run `audit` with `kind: "risk-review-coverage"` using:
|
|
257
259
|
|
|
258
260
|
- immutable PR **base** SHA
|
|
259
261
|
- immutable **authority** (head) SHA
|
|
@@ -267,13 +269,13 @@ CI job in `.github/workflows/pr-policy.yml`.
|
|
|
267
269
|
|
|
268
270
|
When classification is **sensitive**:
|
|
269
271
|
|
|
270
|
-
- Require delivery review via `risk-review-coverage` / `
|
|
272
|
+
- Require delivery review via `risk-review-coverage` / `review_gate`
|
|
271
273
|
(purpose delivery) / qualifying lane approvals for the current
|
|
272
274
|
review subject until `policySatisfied` (**approval**). A formal **reject** is a terminal automated-review
|
|
273
275
|
outcome but does **not** satisfy land policy: Product status stays
|
|
274
276
|
`incomplete`, Process status stays `sensitive-blocked` until approval.
|
|
275
277
|
Tech-debt is **not** a substitute for delivery approval.
|
|
276
|
-
- Launch **exactly one at a time** `
|
|
278
|
+
- Launch **exactly one at a time** `review_gate` delivery attempt with
|
|
277
279
|
`--base-ref <base-sha>` and `--authority-ref <head-sha>`. Do not substitute
|
|
278
280
|
`HEAD` for the authority SHA, and do not relaunch while the same subject has
|
|
279
281
|
an in-progress gate.
|
|
@@ -312,8 +314,8 @@ When classification is **standard**:
|
|
|
312
314
|
Must be start-of-line. Process label: `standard-skip`.
|
|
313
315
|
|
|
314
316
|
- Otherwise obtain **exactly one sequential** outside voice: one
|
|
315
|
-
`
|
|
316
|
-
- At most **one
|
|
317
|
+
`review_gate` delivery gate (or host skill). Process label: `outside-approved`.
|
|
318
|
+
- At most **one outside reviewer** counts unless the user asks for more.
|
|
317
319
|
- Invoke the selected reviewer **once**. Do not probe, retry, or rotate
|
|
318
320
|
providers automatically, and **never** fan out parallel multi-host review
|
|
319
321
|
swarms.
|
|
@@ -322,12 +324,13 @@ When classification is **standard**:
|
|
|
322
324
|
- These approvals are model outside-voice approvals, not a substitute for human
|
|
323
325
|
GitHub reviews or branch-protection approvals.
|
|
324
326
|
|
|
325
|
-
Reviewer preference (
|
|
326
|
-
|
|
327
|
-
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
327
|
+
Reviewer preference: the gate owns it. State `caller_model` (your own model
|
|
328
|
+
id) and omit `provider`/`model`/`effort`; `review_gate` selects a
|
|
329
|
+
cross-family reviewer by capability, current provider limits, and measured
|
|
330
|
+
daily cost, and discloses the choice in `policy_selection`. Do not name a
|
|
331
|
+
reviewer host or model, do not probe provider catalogs, and do not rotate
|
|
332
|
+
providers yourself. A human operator may still name an explicit
|
|
333
|
+
`provider`/`model` override; agents must not.
|
|
331
334
|
|
|
332
335
|
### 4. Dual product/process labels on every land claim
|
|
333
336
|
|
|
@@ -340,14 +343,14 @@ Never invent a land-now skip. See `land-policy` for the full table.
|
|
|
340
343
|
|
|
341
344
|
### Approval evidence requirements
|
|
342
345
|
|
|
343
|
-
- Blueprint plan approval: use `
|
|
346
|
+
- Blueprint plan approval: use `review_gate` with the current `bpv1` version.
|
|
344
347
|
It records the review and promotes an approved draft atomically by default.
|
|
345
348
|
If the gate is still running or the host wait expires, poll the same exact
|
|
346
|
-
invocation with `
|
|
349
|
+
invocation with `review_gate_wait` until a terminal review outcome is
|
|
347
350
|
observed; wait timeout/abort/in-progress/not-found are not reviewer verdicts.
|
|
348
351
|
`not_found` means there is no active or terminal gate for that subject; refresh
|
|
349
352
|
state and start the gate again instead of continuing to wait.
|
|
350
|
-
- Implementation / delivery approval: use `
|
|
353
|
+
- Implementation / delivery approval: use `review_gate` purpose delivery
|
|
351
354
|
on the immutable subject, exactly once with the selected provider, for
|
|
352
355
|
sensitive and standard PRs alike. The gate has one mode: each newly executed
|
|
353
356
|
provider review that reaches a verdict is one formal round of the slug's
|
|
@@ -358,7 +361,7 @@ Never invent a land-now skip. See `land-policy` for the full table.
|
|
|
358
361
|
spends none). Do not run a separate
|
|
359
362
|
provider probe.
|
|
360
363
|
- Two gates on the same subject cannot run concurrently — every
|
|
361
|
-
`
|
|
364
|
+
`review_gate` call claims the subject's active marker. If a call reports
|
|
362
365
|
marker contention, serialize the two calls rather than treating contention
|
|
363
366
|
as an error.
|
|
364
367
|
- Each gate reviewer must return exactly one schema-valid JSON review object;
|
|
@@ -377,7 +380,7 @@ Never invent a land-now skip. See `land-policy` for the full table.
|
|
|
377
380
|
Report:
|
|
378
381
|
|
|
379
382
|
- mode used (`local` / `full` / `merge-ready`)
|
|
380
|
-
- what was verified and which
|
|
383
|
+
- what was verified and which wp MCP tools commands/logs prove it
|
|
381
384
|
- which docs/help/instruction surfaces were refreshed when guidance changed
|
|
382
385
|
- outside models only if merge-ready (with PR comment links when applicable)
|
|
383
386
|
- what remains intentionally out of scope
|
|
@@ -388,7 +391,7 @@ If any required check is missing, the correct result is **not done yet**, not a
|
|
|
388
391
|
|
|
389
392
|
**Tooling friction (optional):** if this session burned medium+ tokens on MCP/CLI/hooks/CI
|
|
390
393
|
gates (not product code), run `/tooling-friction` once and resolve its capture
|
|
391
|
-
destination with `
|
|
394
|
+
destination with `tooling_friction_path({"file":"<file>"})` — copy the absolute
|
|
392
395
|
path from the tool summary (human CLI: `wp tooling-friction path --file <file>`).
|
|
393
396
|
Do not invent fleet folder slugs or worktree-keyed desktop-state paths. Skip when
|
|
394
397
|
the path was smooth. If the surface cannot be resolved or written, report the skip
|