@webpresso/plugin-claude 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.
@@ -11,8 +11,8 @@ until independently verified.
11
11
 
12
12
  ## MCP-only contract
13
13
 
14
- - Call `wp_review_gate` exactly once for the real plan version or delivery diff.
15
- - Observe the same durable operation with `wp_review_gate_wait` when needed.
14
+ - Call `review_gate` exactly once for the real plan version or delivery diff.
15
+ - Observe the same durable operation with `review_gate_wait` when needed.
16
16
  - Never invoke a provider command, the legacy review CLI, or a removed review-run surface.
17
17
  - If the review MCP is unavailable, stop and report it unavailable. There is no CLI fallback.
18
18
 
@@ -25,7 +25,7 @@ until independently verified.
25
25
  "purpose": "delivery",
26
26
  "base_ref": "<full-base-sha>",
27
27
  "authority_ref": "<full-head-sha>",
28
- "provider": "claude",
28
+ "caller_model": "<your own model id, exactly as your host reports it>",
29
29
  "repository_access": "none",
30
30
  }
31
31
  ```
@@ -36,10 +36,15 @@ verdict with no new review and no new round. A partial approval, withheld becaus
36
36
  is incomplete (not every prior finding was briefed, or a briefed prior claim was marked
37
37
  still-open without a matching finding), grants no authority and spends no round.
38
38
 
39
- ## Model policy
39
+ ## Reviewer selection
40
40
 
41
- When the user names an exact model, pass it in the MCP `model` field. Otherwise omit
42
- that field and let the MCP owner select the configured provider default.
41
+ Pass `caller_model` with your OWN model id, exactly as your host reports it, and omit
42
+ `provider`, `model`, and `effort`: the gate selects the reviewer route itself — a cross-family
43
+ reviewer chosen for capability, current provider limits, and measured daily cost — and reports
44
+ the choice in `policy_selection`. Never name a reviewer model, probe a provider CLI for its
45
+ catalog, or read a credential store to discover models at invocation time; provider catalog
46
+ discovery belongs to the snapshot drift workflow. An operator may still pass an explicit
47
+ `provider`/`model` as a human override; agents must not.
43
48
 
44
49
  ## Review quality
45
50
 
@@ -11,8 +11,8 @@ until independently verified.
11
11
 
12
12
  ## MCP-only contract
13
13
 
14
- - Call `wp_review_gate` exactly once for the real plan version or delivery diff.
15
- - Observe the same durable operation with `wp_review_gate_wait` when needed.
14
+ - Call `review_gate` exactly once for the real plan version or delivery diff.
15
+ - Observe the same durable operation with `review_gate_wait` when needed.
16
16
  - Never invoke a provider command, the legacy review CLI, or a removed review-run surface.
17
17
  - If the review MCP is unavailable, stop and report it unavailable. There is no CLI fallback.
18
18
 
@@ -25,7 +25,7 @@ until independently verified.
25
25
  "purpose": "delivery",
26
26
  "base_ref": "<full-base-sha>",
27
27
  "authority_ref": "<full-head-sha>",
28
- "provider": "codex",
28
+ "caller_model": "<your own model id, exactly as your host reports it>",
29
29
  "repository_access": "none",
30
30
  }
31
31
  ```
@@ -36,10 +36,15 @@ verdict with no new review and no new round. A partial approval, withheld becaus
36
36
  is incomplete (not every prior finding was briefed, or a briefed prior claim was marked
37
37
  still-open without a matching finding), grants no authority and spends no round.
38
38
 
39
- ## Model policy
39
+ ## Reviewer selection
40
40
 
41
- When the user names an exact model, pass it in the MCP `model` field. Otherwise omit
42
- that field and let the MCP owner select the configured provider default.
41
+ Pass `caller_model` with your OWN model id, exactly as your host reports it, and omit
42
+ `provider`, `model`, and `effort`: the gate selects the reviewer route itself — a cross-family
43
+ reviewer chosen for capability, current provider limits, and measured daily cost — and reports
44
+ the choice in `policy_selection`. Never name a reviewer model, probe a provider CLI for its
45
+ catalog, or read a credential store to discover models at invocation time; provider catalog
46
+ discovery belongs to the snapshot drift workflow. An operator may still pass an explicit
47
+ `provider`/`model` as a human override; agents must not.
43
48
 
44
49
  ## Review quality
45
50
 
@@ -59,7 +59,7 @@ Max rounds is a hard cap, not a target. Do not continue only to reach a round co
59
59
  - Treat every answer as a claim to pressure-test: the next question should usually demand evidence or an example, expose a hidden assumption, force a tradeoff or boundary, or reframe root cause vs symptom.
60
60
  - Do not rotate to a new dimension just for coverage when the current answer is still vague. Stay on the thread until it is one layer deeper, one assumption clearer, or one boundary tighter.
61
61
  - Before crystallizing, complete at least one explicit pressure pass that revisits an earlier answer with a deeper, assumption- or tradeoff-focused follow-up.
62
- - Gather codebase facts via local search tools, `wp_session_*` retrieval, and read-only repo inspection before asking the user about internals.
62
+ - Gather codebase facts via local search tools, `session_*` retrieval, and read-only repo inspection before asking the user about internals.
63
63
  - Always run a preflight context intake before the first question.
64
64
  - For brownfield work, preflight must ground in docs before user-facing questions: inspect applicable `AGENTS.md`/`CLAUDE.md`, README/getting-started docs, relevant `docs/` contracts/plans/ADRs, existing blueprints under `blueprints/`, and any project glossary such as `UBIQUITOUS_LANGUAGE.md` when present.
65
65
  - Treat repo language as evidence, not authority: if the user uses a fuzzy, overloaded, or conflicting term, surface the specific doc/code wording and ask which meaning should govern.
@@ -82,17 +82,17 @@ Max rounds is a hard cap, not a target. Do not continue only to reach a round co
82
82
  ## Phase 0: Preflight Context Intake
83
83
 
84
84
  1. Parse `{{ARGUMENTS}}` and derive a short kebab-case task slug.
85
- 2. Attempt to load the latest relevant context for the slug from session memory via the `wp_session_search`/`wp_session_retrieve` MCP tools.
85
+ 2. Attempt to load the latest relevant context for the slug from session memory via the `session_search`/`session_retrieve` MCP tools.
86
86
  3. If the provided initial context (or loaded snapshot) is too large for safe prompt use, the first round must ask for a concise prompt-safe summary before scoring ambiguity or any downstream handoff. This gate is blocking: preserve goals, constraints, success criteria, non-goals, decision boundaries, and references to the full source documents.
87
87
  4. If no snapshot exists, create a minimum snapshot with: task statement, desired outcome, stated solution, probable intent hypothesis, known facts/evidence, constraints, unknowns/open questions, decision-boundary unknowns, likely codebase touchpoints, repo docs/rules inspected, terminology/doc-code conflicts found.
88
88
  5. For brownfield tasks, inspect the applicable documentation/rule surface before the first user-facing round. Prefer exact, nearby sources: governing `AGENTS.md`/`CLAUDE.md`, README/getting-started docs, relevant `docs/` contracts/plans/ADRs, existing blueprints, and project glossary/context files when present.
89
- 6. Capture the snapshot into session memory via `wp_session_capture` (tagged with the slug) and reference it in the interview state.
89
+ 6. Capture the snapshot into session memory via `session_capture` (tagged with the slug) and reference it in the interview state.
90
90
 
91
91
  ## Phase 1: Initialize
92
92
 
93
93
  1. Parse `{{ARGUMENTS}}` and the depth profile (`--quick|--standard|--deep`).
94
94
  2. Detect project context: use local search tools and read-only repo inspection to classify **brownfield** (existing codebase target) vs **greenfield**; for brownfield, collect relevant context before questioning.
95
- 3. Persist a lightweight resumable interview state to session memory via `wp_session_capture` (interview id, profile, type, initial idea, rounds, current ambiguity, threshold, max rounds, challenge modes used, current stage/focus, context snapshot reference), so a later session can resume via `wp_session_search`/`wp_session_restore`.
95
+ 3. Persist a lightweight resumable interview state to session memory via `session_capture` (interview id, profile, type, initial idea, rounds, current ambiguity, threshold, max rounds, challenge modes used, current stage/focus, context snapshot reference), so a later session can resume via `session_search`/`session_restore`.
96
96
  4. Announce kickoff with the profile, threshold, and current ambiguity.
97
97
 
98
98
  ## Phase 2: Socratic Interview Loop
@@ -178,7 +178,7 @@ Show the weighted breakdown table, readiness-gate status (`Non-goals`, `Decision
178
178
 
179
179
  ### 2e) Persist state
180
180
 
181
- Append the round result and updated scores to the slug-tagged interview state in session memory (`wp_session_capture`).
181
+ Append the round result and updated scores to the slug-tagged interview state in session memory (`session_capture`).
182
182
 
183
183
  ### 2f) Round controls
184
184
 
@@ -203,9 +203,9 @@ Track used modes in state to prevent repetition.
203
203
 
204
204
  When the threshold is met (or the user exits with warning / hard cap):
205
205
 
206
- 1. Create or update the versioned draft that owns this task with `wp_blueprint_put`, yielding `blueprints/draft/{slug}/`. In this repo, deep interviews exist to produce better blueprints before implementation; carry the returned `bpv1:` version through every replacement.
206
+ 1. Create or update the versioned draft that owns this task with `blueprint_put`, yielding `blueprints/draft/{slug}/`. In this repo, deep interviews exist to produce better blueprints before implementation; carry the returned `bpv1:` version through every replacement.
207
207
  2. Write the interview transcript summary to `blueprints/draft/{slug}/interview.md`.
208
- 3. Fold the execution-ready spec into `blueprints/draft/{slug}/_overview.md` (intent, scope, non-goals, decision boundaries, constraints, acceptance criteria), and capture a copy of the final spec + scores into session memory via `wp_session_capture`.
208
+ 3. Fold the execution-ready spec into `blueprints/draft/{slug}/_overview.md` (intent, scope, non-goals, decision boundaries, constraints, acceptance criteria), and capture a copy of the final spec + scores into session memory via `session_capture`.
209
209
 
210
210
  The spec should include: metadata (profile, rounds, final ambiguity, threshold, context type); context snapshot reference; prompt-safe initial-context summary when oversized context was provided, plus references to the full sources; the clarity breakdown table; Intent (why); Desired Outcome; In-Scope; Out-of-Scope / Non-goals; Decision Boundaries (what the agent may decide without confirmation); Constraints; testable acceptance criteria (prefer repo verification surfaces — `wp test`, `wp typecheck`, `wp audit` — over manual checks); assumptions exposed and their resolutions; pressure-pass findings (which answer was revisited and what changed); brownfield evidence-vs-inference notes; the Docs/Terminology Ledger; scenario/edge-case findings that shaped scope or acceptance; and the full or condensed transcript.
211
211
 
@@ -219,7 +219,7 @@ Present execution options after artifact generation using explicit handoff contr
219
219
  - **`autopilot`** — when the spec is already strong enough for direct planning plus execution. Consumer uses the spec as the clarified execution brief with the non-goals and acceptance criteria as binding context.
220
220
  - **`ultragoal`** — when the clarified work should become durable, sequentially tracked goal-mode work.
221
221
  - **`team`** — when the task is large, multi-lane, or blocker-sensitive enough to justify coordinated parallel execution.
222
- - **Blueprint lifecycle** — refine with `wp_blueprint_put`, review the exact version with `wp_review_gate`, and inspect the auto-promoted result with `wp_blueprint_get` when work should enter planned execution directly.
222
+ - **Blueprint lifecycle** — refine with `blueprint_put`, review the exact version with `review_gate`, then promote the approved version explicitly with `blueprint_promote` when work should enter planned execution directly (MCP `review_gate` never auto-promotes).
223
223
  - **Refine further** — re-enter the loop to resolve the highest-leverage remaining uncertainty when residual ambiguity is still too high or an early-exit/above-threshold warning indicates too much risk to proceed cleanly.
224
224
 
225
225
  For research-shaped requests (a research question, evaluator-backed analysis, or reference gathering), hand off to `autoresearch` after the interview converges on a validator-ready mission; keep the explicit `refine further` vs `launch` boundary and do not launch until the user confirms.
@@ -232,11 +232,11 @@ For research-shaped requests (a research question, evaluator-backed analysis, or
232
232
 
233
233
  <Tool_Usage>
234
234
 
235
- - Use local search tools, `wp_session_*` retrieval, and read-only repo inspection for codebase fact gathering.
235
+ - Use local search tools, `session_*` retrieval, and read-only repo inspection for codebase fact gathering.
236
236
  - Use the host's native structured-question tool (e.g. `AskUserQuestion`) for each round when available; otherwise ask one concise plain-text question and wait.
237
- - Keep context snapshots and resumable interview state in session memory via the `wp_session_*` MCP tools, tagged with the task slug.
237
+ - Keep context snapshots and resumable interview state in session memory via the `session_*` MCP tools, tagged with the task slug.
238
238
  - Read applicable repo docs/rules/context during preflight; write durable docs/glossary/ADR updates only when the user explicitly opts in and the content is public-safe.
239
- - Land transcript artifacts in the active task's blueprint folder; create/update `_overview.md` only through `wp_blueprint_put`.
239
+ - Land transcript artifacts in the active task's blueprint folder; create/update `_overview.md` only through `blueprint_put`.
240
240
  - Use `best-practice-research` when unresolved ambiguity depends on current external/upstream guidance.
241
241
  </Tool_Usage>
242
242
 
@@ -250,7 +250,7 @@ For research-shaped requests (a research question, evaluator-backed analysis, or
250
250
 
251
251
  <Final_Checklist>
252
252
 
253
- - [ ] Preflight context snapshot captured to session memory (`wp_session_capture`, slug-tagged)
253
+ - [ ] Preflight context snapshot captured to session memory (`session_capture`, slug-tagged)
254
254
  - [ ] Oversized initial context, if present, has a prompt-safe summary before scoring or handoff
255
255
  - [ ] Ambiguity score shown each round
256
256
  - [ ] Intent-first stage priority used before implementation detail
@@ -260,7 +260,7 @@ For research-shaped requests (a research question, evaluator-backed analysis, or
260
260
  - [ ] Challenge modes triggered at thresholds (when applicable)
261
261
  - [ ] `Non-goals` and `Decision Boundaries` explicit before handoff
262
262
  - [ ] Transcript written to `blueprints/draft/{slug}/interview.md`
263
- - [ ] Spec folded into `blueprints/draft/{slug}/_overview.md` through `wp_blueprint_put`
263
+ - [ ] Spec folded into `blueprints/draft/{slug}/_overview.md` through `blueprint_put`
264
264
  - [ ] Brownfield questions use evidence-backed confirmation and doc grounding when applicable
265
265
  - [ ] Fuzzy/conflicting terminology challenged against repo language when applicable
266
266
  - [ ] Handoff options provided (`ralplan`, `autopilot`, `ultragoal`, `team`, blueprint lifecycle)
@@ -28,14 +28,14 @@ Child membership comes only from `parent_roadmap`; do not maintain a second list
28
28
 
29
29
  ## Loop
30
30
 
31
- 1. Call `wp_delivery_status({ slug })`.
31
+ 1. Call `delivery_status({ slug })`.
32
32
  2. Treat its `version`, blockers, and exact returned action as the current derived
33
33
  truth. Do not reconstruct state from transcripts.
34
- 3. Dispatch only returned `wp_worktree` actions. Child work starts from the
34
+ 3. Dispatch only returned `worktree` actions. Child work starts from the
35
35
  delivery branch and child PRs target that branch.
36
36
  4. Integrate at most one child at a time. Recheck status immediately before
37
- calling `wp_pr_merge` with the exact returned head SHA.
38
- 5. An `enqueued` merge is not integrated. Call `wp_delivery_status` again and
37
+ calling `pr_merge` with the exact returned head SHA.
38
+ 5. An `enqueued` merge is not integrated. Call `delivery_status` again and
39
39
  wait for the merged postcondition.
40
40
  6. After every child PR is merged, verify the delivery branch and land its final
41
41
  PR to `delivery_base` through the same exact-SHA merge tool.
@@ -31,26 +31,26 @@ the blast radius is broader than a local fix.
31
31
 
32
32
  ## Tooling map
33
33
 
34
- | Need | Prefer |
35
- | ---------------------- | --------------------------------------------------------------------------- |
36
- | Reproduce / large logs | `wp_session_execute`, `wp_session_batch_execute`, `wp_session_execute_file` |
37
- | Recall prior evidence | `wp_session_search`, `wp_session_restore`, `wp_session_retrieve` |
38
- | Capture decisions | `wp_session_capture` (do not paste full reports back as user text) |
39
- | Scoped proof | `wp_test`, `wp_lint`, `wp_typecheck`, or `wp_qa` |
40
- | Audits | `wp_audit` / `wp_audits` |
41
- | Worktree isolation | `wp_blueprint_put` / `wp_worktree` — never thrash primary checkout |
42
- | PR follow-up | `wp_pr_status`, `wp_pr_upsert` when landing the fix |
34
+ | Need | Prefer |
35
+ | ---------------------- | ------------------------------------------------------------------ |
36
+ | Reproduce / large logs | `session_execute`, `session_batch_execute`, `session_execute_file` |
37
+ | Recall prior evidence | `session_search`, `session_restore`, `session_retrieve` |
38
+ | Capture decisions | `session_capture` (do not paste full reports back as user text) |
39
+ | Scoped proof | `test`, `lint`, `typecheck`, or `qa` |
40
+ | Audits | `audit` / `audits` |
41
+ | Worktree isolation | `blueprint_put` / `worktree` — never thrash primary checkout |
42
+ | PR follow-up | `pr_status`, `pr_upsert` when landing the fix |
43
43
 
44
44
  ## Non-negotiable invariants
45
45
 
46
46
  1. **Root cause, not symptom.** Trace the failure to the invariant that actually broke. Do not patch callers when the owner is fixable.
47
47
  2. **Loud failures, no silent fallbacks.** No default shims, sentinel returns, or catch-and-continue behavior that hides missing config, bad state, or broken boundaries.
48
- 3. **Use the repo's real execution surface.** Prefer MCP `wp_*` tools and repo wrappers over host Bash for search/test/lint. Use bounded session-memory paths for large output.
48
+ 3. **Use the repo's real execution surface.** Prefer wp MCP tools and repo wrappers over host Bash for search/test/lint. Use bounded session-memory paths for large output.
49
49
  4. **Regression proof is mandatory.** Add or strengthen a test or other reliable proof that would fail against the old behavior.
50
50
  5. **Raising timeouts is not a fix.** If a timeout fires, investigate the bottleneck. Only raise a bound when the repo already documents that workload and you can cite measurement.
51
51
  6. **Zero suppressions, zero papering over.** No lint disables, ts-ignore, compat aliases, or "temporary" branches to sneak the fix through.
52
52
  7. **Minimal correct diff.** Update every consumer of a changed contract in the same change, but do not bundle unrelated cleanup.
53
- 8. **Primary checkout is sacred.** If HEAD is detached, primary is dirty with unrelated work, or you are not on a managed worktree for non-trivial edits → **stop** and move to `wp_worktree` / blueprint owner. Never leave the primary checkout broken.
53
+ 8. **Primary checkout is sacred.** If HEAD is detached, primary is dirty with unrelated work, or you are not on a managed worktree for non-trivial edits → **stop** and move to `worktree` / blueprint owner. Never leave the primary checkout broken.
54
54
 
55
55
  ## Opportunistic fix budget (when called from ultragoal / autopilot)
56
56
 
@@ -61,7 +61,7 @@ the blast radius is broader than a local fix.
61
61
  - **Tooling / harness findings** ("fix inefficiency you come across", MCP vs shell,
62
62
  hook thrash) honor the same budget. Excess → record via the `tech-debt` skill
63
63
  (or backlog handoff); do not expand the current epic unbounded.
64
- - Prefer MCP `wp_*` and session-memory tools over the `wp` CLI / raw shell for
64
+ - Prefer wp MCP tools and session-memory tools over the `wp` CLI / raw shell for
65
65
  quality and discovery paths (see tooling map).
66
66
 
67
67
  ## Protocol
@@ -98,6 +98,19 @@ there, the investigation work is part of `fix`.
98
98
  - Read enough surrounding code to say the broken invariant in one sentence.
99
99
  - If the issue is nondeterministic, gather evidence until you can describe the slow/flaky/failing case without guessing.
100
100
 
101
+ **Prove the mechanism before naming it.** A cause that merely explains the
102
+ symptom is a hypothesis, not a finding. Run the failing thing with the candidate
103
+ values and read what it actually did; trace the claim to the code that executes,
104
+ not the code whose name matches the theory. If you cannot reproduce it, label it
105
+ unverified and keep investigating — do not write it into a plan, commit, or
106
+ report as the cause.
107
+
108
+ **When a cause is disproved, go back to the command, not to the next story.**
109
+ Substituting another plausible explanation without new observation is how one
110
+ dead route gets three confident, wrong diagnoses. If your second and third
111
+ explanations are still unobserved, you have not reproduced the failure yet.
112
+ Related: `catalog/agent/rules/evidence-discipline.md` § 6.
113
+
101
114
  If the "issue" is actually several unrelated failures, stop and ask which one to fix first.
102
115
 
103
116
  ### Step 2 — Decide where the fix belongs
@@ -130,10 +143,10 @@ Do not keep production code written before the test as "reference". If you wrote
130
143
 
131
144
  Run the narrowest checks that prove the repaired behavior on the real repo surface:
132
145
 
133
- - `wp_test` / targeted tests for the repaired path
134
- - `wp_lint` / `wp_typecheck` for changed surfaces
135
- - `wp_qa` only when the blast radius needs the bookend
136
- - Before push: start `wp_ci_preflight`, then poll `wp_ci_preflight_wait` with
146
+ - `test` / targeted tests for the repaired path
147
+ - `lint` / `typecheck` for changed surfaces
148
+ - `qa` only when the blast radius needs the bookend
149
+ - Before push: start `ci_preflight`, then poll `ci_preflight_wait` with
137
150
  its run ID until terminal success (use global `wp ci-preflight` only when MCP
138
151
  is unavailable). Run it after the final commit and do not edit or commit again
139
152
  before pushing: terminal success records the exact-state receipt checked by pre-push.
@@ -141,7 +154,7 @@ Run the narrowest checks that prove the repaired behavior on the real repo surfa
141
154
 
142
155
  Rules:
143
156
 
144
- - Prefer MCP `wp_*` over raw host Bash.
157
+ - Prefer wp MCP tools over raw host Bash.
145
158
  - Reuse fresh logs / session-memory indexed output; do not re-run long commands just to re-read.
146
159
  - Read the exit code and summary before making a claim.
147
160
  - Never `git push --no-verify` to land an unproven fix.
@@ -158,7 +171,7 @@ cleanup pass, use `ai-deslop` before the final verify handoff.
158
171
 
159
172
  ### Tool recovery and delivery intent
160
173
 
161
- - Discover the managed owner's current identity with `wp_blueprint_projects`
174
+ - Discover the managed owner's current identity with `blueprint_projects`
162
175
  using its absolute `cwd`; pass the returned project ID and matching checkout
163
176
  to session tools. A blueprint ID is not a project ID.
164
177
  - If quality tooling refuses stale or cross-checkout execution, follow its
@@ -26,24 +26,24 @@ session. Do **not** paste full transcripts.
26
26
 
27
27
  ## Tooling map
28
28
 
29
- | Need | Prefer |
30
- | ---------------------- | ----------------------------------------------------------------------------------- |
31
- | Capture decisions | `wp_session_capture` |
32
- | Context-light manifest | `wp_session_context` (required for subagents) |
33
- | Prior evidence | `wp_session_search` / `wp_session_retrieve` / `wp_session_restore` |
34
- | Other-host chat | `wp_conversation_search` / `wp_conversation_get` / `wp_conversation_read` (bounded) |
35
- | Ultragoal block | `wp_ultragoal_handoff` (≤40 lines) when a controller is active |
29
+ | Need | Prefer |
30
+ | ---------------------- | -------------------------------------------------------------------------- |
31
+ | Capture decisions | `session_capture` |
32
+ | Context-light manifest | `session_context` (required for subagents) |
33
+ | Prior evidence | `session_search` / `session_retrieve` / `session_restore` |
34
+ | Other-host chat | `conversation_search` / `conversation_get` / `conversation_read` (bounded) |
35
+ | Ultragoal block | `ultragoal_handoff` (≤40 lines) when a controller is active |
36
36
 
37
37
  ## Protocol
38
38
 
39
39
  1. **State the objective** in one sentence (what the next agent must finish).
40
- 2. **Capture** short pointers via `wp_session_capture`: done, blockers, decisions,
40
+ 2. **Capture** short pointers via `session_capture`: done, blockers, decisions,
41
41
  evidence refs (log paths, test commands, PR numbers) — not full reports.
42
- 3. **Build** a bounded manifest with `wp_session_context` (objective, constraints,
42
+ 3. **Build** a bounded manifest with `session_context` (objective, constraints,
43
43
  evidenceRefs, remainingSteps, validation, exclusions). Never copy parent history.
44
44
  4. **Optional cross-host:** resolve the conversation with conversation MCP tools;
45
45
  read only a **bounded tail** (`maxMessages` / `maxBytes`). Prefer resume
46
- commands from `wp_conversation_get` over paste.
46
+ commands from `conversation_get` over paste.
47
47
  5. **Emit ≤40 lines** covering:
48
48
  - goal / non-goals
49
49
  - done + evidence refs
@@ -63,6 +63,37 @@ session. Do **not** paste full transcripts.
63
63
  ## Done looks like
64
64
 
65
65
  - [ ] ≤40-line handoff with evidence refs
66
- - [ ] `wp_session_context` (or capture ids) for the next agent
66
+ - [ ] `session_context` (or capture ids) for the next agent
67
67
  - [ ] Next skill named
68
68
  - [ ] No transcript wall
69
+
70
+ ## Capped or paused host messaging
71
+
72
+ When the host messaging channel is capped or paused, the ≤40-line manifest IS
73
+ the delivery: the handoff built above carries objective, done, blockers, and
74
+ next steps even if no send lands — emit it once and treat it as sent. Include
75
+ the send-budget state (attempt count, last canary result) in the manifest
76
+ whenever the cap has been in play this session — the count's durable homes
77
+ are the outbox header and the `session_capture` record; re-read both on
78
+ resume. The leader's outbox anchor is durable in two homes: the
79
+ outbox file's own header and a `session_capture` record (`session_capture`
80
+ is registered in `src/mcp/tools/_names.ts`, implemented in
81
+ `src/mcp/tools/session-capture.ts`). When the coordinator incarnation changes,
82
+ re-anchor: write both homes plus the next handoff manifest — a recorded anchor
83
+ goes stale when the identity passes to a new session (observed 2026-10-31: a
84
+ memory-recorded live outbox path no longer existed). On the reader side, a
85
+ stale or dead anchor is not a wall: fall back to the next durable arbitration
86
+ source (`fleet_status` / blueprint task lists) and queues the staleness as
87
+ a blocker in the outbox or manifest; a control send is spent only when the
88
+ channel is open and a reserve slot remains, to surface the staleness. Before executing a resumed
89
+ or queued order, check durable state (the outbox, `fleet_status`,
90
+ blueprint task lists) for a newer arbitration — queued sends deliver late
91
+ and out of order. The manifest carries this check as a required line.
92
+ Queued orders in the manifest are one line each; if the queue would break
93
+ the ≤40-line cap, the manifest carries the count and the outbox path and
94
+ the orders stay in the outbox. Never route around a cap or
95
+ pause: no relays, no peer delegation, no new sessions, no schedulers, no
96
+ filesystem push-delivery to peers, no configuration changes, and no alternate
97
+ transport, tool, or uncapped/legacy send interface. The durable outbox is pull-read
98
+ state, not a route-around. Keep manifests context-light — do not paste full
99
+ transcripts.
@@ -7,7 +7,7 @@ scope: repo
7
7
  applies_to: [agents]
8
8
  related: []
9
9
  created: "2026-05-07"
10
- last_reviewed: "2026-05-07"
10
+ last_reviewed: "2026-11-01"
11
11
  name: hooks-doctor
12
12
  description: "Hook/plugin doctor for install health. Use for hook blocked, pretooluse, plugin broken."
13
13
  argument-hint: "[--skip-mcp]"
@@ -55,13 +55,13 @@ Each check prints `[x]` (pass) or `[ ]` (fail) with a detail line:
55
55
 
56
56
  ## Failure Remediation
57
57
 
58
- | Check | Likely Cause | Fix |
59
- | ------------------------------------------------ | -------------------------------------------------------------- | ----------------------------------------------------------------- |
60
- | `pretool-guard` / `post-tool` / etc. — not found | `wp run build` not run after install | `wp run build` |
61
- | `pretool-guard` / etc. — not executable | `chmod +x` not persisted | Re-run `wp run prepare` or `wp run build` which runs `chmod-bins` |
62
- | `plugin.json integrity` — missing | Claude adapter manifest absent from `@webpresso/plugin-claude` | Re-run `wp setup --host claude` or reinstall the Claude plugin |
63
- | `MCP server liveness` — timeout | MCP server cold-start too slow | Wait and retry, or run `wp hooks doctor --skip-mcp` |
64
- | Any check — not found at `dist/esm/...` | Build artifacts missing | Run `wp run build` in the webpresso repo |
58
+ | Check | Likely Cause | Fix |
59
+ | ------------------------------------------------ | ----------------------------------------------------------------- | ----------------------------------------------------------------- |
60
+ | `pretool-guard` / `post-tool` / etc. — not found | `wp run build` not run after install | `wp run build` |
61
+ | `pretool-guard` / etc. — not executable | `chmod +x` not persisted | Re-run `wp run prepare` or `wp run build` which runs `chmod-bins` |
62
+ | `plugin.json integrity` — missing | Claude or Antigravity adapter manifest absent from plugin package | Re-run `wp setup --host <host>` or reinstall the host plugin |
63
+ | `MCP server liveness` — timeout | MCP server cold-start too slow | Wait and retry, or run `wp hooks doctor --skip-mcp` |
64
+ | Any check — not found at `dist/esm/...` | Build artifacts missing | Run `wp run build` in the webpresso repo |
65
65
 
66
66
  ### Updating the webpresso MCP server (monorepo authors)
67
67
 
@@ -95,10 +95,12 @@ started. Check the installed host version before using version-scoped controls.
95
95
  commands](https://dev.opencode.ai/v2/docs/cli/commands/); host documentation
96
96
  verified 2026-10-17). These `dev.opencode.ai` paths sit on a preview domain
97
97
  and can move; confirm the v2 path still resolves before following it.
98
+ - **Antigravity:** Preferences / Settings → Plugins → reload or toggle `wp` plugin,
99
+ or restart the Antigravity session. Verify with `wp hooks doctor` or `wp hooks status`.
98
100
 
99
101
  After reconnecting, prove the loaded source rather than the connection:
100
102
 
101
- 1. Call `wp_tool_surface` with `detail: "diagnostic"`.
103
+ 1. Call `tool_surface` with `detail: "diagnostic"`.
102
104
  2. Compare `details.diagnostic.live.sourceCommit` against the commit you expect
103
105
  the checkout to be serving.
104
106
  3. Read `details.diagnostic.identity.status`, which is exactly one of `current`,
@@ -19,19 +19,19 @@ flaky behavior, or confusing symptom before editing code.
19
19
 
20
20
  ## Tooling map
21
21
 
22
- | Need | Prefer |
23
- | ---------------------- | ---------------------------------------------------------------- |
24
- | Reproduce / large logs | `wp_session_execute`, `wp_session_batch_execute` |
25
- | Large files | `wp_session_execute_file` |
26
- | Prior continuity | `wp_session_search`, `wp_session_restore`, `wp_session_retrieve` |
27
- | Capture findings | `wp_session_capture` (short pointer, not full paste-back) |
28
- | Proof runs | `wp_test`, `wp_qa`, `wp_lint`, `wp_typecheck` |
29
- | Code search/read | host Grep/Read first; avoid shell-as-IDE |
22
+ | Need | Prefer |
23
+ | ---------------------- | ------------------------------------------------------- |
24
+ | Reproduce / large logs | `session_execute`, `session_batch_execute` |
25
+ | Large files | `session_execute_file` |
26
+ | Prior continuity | `session_search`, `session_restore`, `session_retrieve` |
27
+ | Capture findings | `session_capture` (short pointer, not full paste-back) |
28
+ | Proof runs | `test`, `qa`, `lint`, `typecheck` |
29
+ | Code search/read | host Grep/Read first; avoid shell-as-IDE |
30
30
 
31
31
  ## Workflow
32
32
 
33
33
  1. Reproduce or capture the failure.
34
- - Run the exact failing command or trace the exact user path (prefer `wp_session_execute`).
34
+ - Run the exact failing command or trace the exact user path (prefer `session_execute`).
35
35
  - Keep the evidence that matters: error text, failing assertion, exit code,
36
36
  log path, or boundary mismatch.
37
37
  2. Read the whole boundary.
@@ -42,9 +42,20 @@ flaky behavior, or confusing symptom before editing code.
42
42
  - Name the broken invariant in one sentence.
43
43
  - Name the owner that should enforce it.
44
44
  - Separate facts from guesses.
45
+ - **Every cause must carry the observation that proved it**: the command you
46
+ ran, its output, and the code path that produced it. A cause you have not
47
+ executed against the failing case is a guess and must be labelled as one.
45
48
  4. Disconfirm cheap alternatives.
46
49
  - Test the obvious competing explanations before settling on one cause.
47
50
  - Add temporary diagnostics only when needed, and remove them after one pass.
51
+ - **When a cause is disproved, return to the reproduction rather than
52
+ replacing it with the next plausible story.** Two or three confident
53
+ explanations in a row, none observed, means the failure has not been
54
+ reproduced yet — go back to step 1.
55
+ - A test fixture, capability object, or recorded tool output that asserts
56
+ behaviour is the weakest link: confirm at least one path against the real
57
+ binary, module, or service it stands in for.
58
+ - Related: `catalog/agent/rules/evidence-discipline.md` § 6.
48
59
  5. Produce failing proof.
49
60
  - Prefer a targeted failing test.
50
61
  - If test-first is impossible at this boundary, use the nearest deterministic
@@ -11,8 +11,8 @@ until independently verified.
11
11
 
12
12
  ## MCP-only contract
13
13
 
14
- - Call `wp_review_gate` exactly once for the real plan version or delivery diff.
15
- - Observe the same durable operation with `wp_review_gate_wait` when needed.
14
+ - Call `review_gate` exactly once for the real plan version or delivery diff.
15
+ - Observe the same durable operation with `review_gate_wait` when needed.
16
16
  - Never invoke a provider command, the legacy review CLI, or a removed review-run surface.
17
17
  - If the review MCP is unavailable, stop and report it unavailable. There is no CLI fallback.
18
18
 
@@ -25,8 +25,7 @@ until independently verified.
25
25
  "purpose": "delivery",
26
26
  "base_ref": "<full-base-sha>",
27
27
  "authority_ref": "<full-head-sha>",
28
- "provider": "opencode",
29
- "model": "opencode-go/deepseek-v4.1-flash",
28
+ "caller_model": "<your own model id, exactly as your host reports it>",
30
29
  "repository_access": "none",
31
30
  }
32
31
  ```
@@ -37,13 +36,15 @@ verdict with no new review and no new round. A partial approval, withheld becaus
37
36
  is incomplete (not every prior finding was briefed, or a briefed prior claim was marked
38
37
  still-open without a matching finding), grants no authority and spends no round.
39
38
 
40
- ## Model policy
39
+ ## Reviewer selection
41
40
 
42
- Default exact model: `opencode-go/deepseek-v4.1-flash`.
43
- Committed exact options: `opencode-go/deepseek-v4.1-flash`, `opencode-go/glm-5.3-flash`, `opencode-go/deepseek-v4-pro`, `opencode-go/kimi-k2.7-code`, `opencode-go/muse-spark-1.3-contributor`, `opencode-go/mimo-v2.6-pro`, `opencode-go/step-5-preview`, `opencode-go/qwen3.8-max`, `opencode-go/mimo-v2.6-flash`, `opencode-go/qwen3.8-flash`, `opencode-go/minimax-m3.1-flash-free`, `opencode-go/qwen3.7-plus`, `opencode-go/muse-spark-1.2-contributor`, `opencode-go/mimo-v2.5`, `opencode-go/minimax-m3`, `opencode-go/mimo-v2.5-pro`, `opencode-go/longcat-2.5-preview-free`, `opencode-go/longcat-2.0`, `opencode-go/gpt-6-luna`, `opencode-go/kimi-k3`, `opencode-go/hy4-preview`, `opencode-go/hy3`, `opencode-go/grok-4.7`, `opencode-go/gpt-5.6-luna`, `opencode-go/claude-haiku-5-5`, `opencode-go/glm-5.3`, `opencode-go/glm-5.2`, `opencode-go/gemini-4-argon-contributor`, `opencode-go/beam-free`.
44
- Use a named exact option when requested; otherwise use the default. Provider catalog discovery
45
- belongs to the snapshot drift workflow, never to a skill invocation; reading the box-local
46
- credential store at gate time is a local file read, not catalog discovery.
41
+ Pass `caller_model` with your OWN model id, exactly as your host reports it, and omit
42
+ `provider`, `model`, and `effort`: the gate selects the reviewer route itself — a cross-family
43
+ reviewer chosen for capability, current provider limits, and measured daily cost — and reports
44
+ the choice in `policy_selection`. Never name a reviewer model, probe a provider CLI for its
45
+ catalog, or read a credential store to discover models at invocation time; provider catalog
46
+ discovery belongs to the snapshot drift workflow. An operator may still pass an explicit
47
+ `provider`/`model` as a human override; agents must not.
47
48
 
48
49
  ## Review quality
49
50
 
@@ -75,9 +75,10 @@ Run **1–3 (and relevant review lenses) in parallel** whenever tools allow. Do
75
75
  - Score alternatives on elegance, durability, and efficiency; keep only the winner and write the rejection rationale for heavier options.
76
76
 
77
77
  4. **Plan-review lenses (skip when the caller already ran them).** Folded `/autoplan`: run relevant CEO/founder, design, engineering, and DevEx lenses **in parallel when independent**; consolidate keep/change/drop, unresolved taste calls, tests, go/no-go.
78
+ - **Review cost — know it before you dispatch.** An `approve`, `approve-with-nits`, or `reject` verdict from a `review_gate` run spends ONE formal review round (per slug and purpose). A no-verdict attempt spends none; editing the plan spends and resets nothing already spent. `src/review/budgets.ts` owns the numeric allowance — never restate it in prose — and `wp review budget <slug>` reports remaining capacity live.
78
79
  - **Skip condition.** If the caller states `plan-* reviews complete for this pass`, do **not** re-run the lenses. `ralplan` runs them before handing off, so re-running them here is duplicated spend, not a second opinion.
79
80
  - **Re-entry.** If refinement itself **materially changes scope**, re-run only the affected lens — never the full set — then continue applying.
80
- - **Re-review rounds.** `catalog/agent/rules/review-methodology-sota.md` Principle 5 sets the delta-anchored adjudication contract subsequent `wp_review_gate` rounds follow.
81
+ - **Re-review rounds.** `catalog/agent/rules/review-methodology-sota.md` Principle 5 sets the delta-anchored adjudication contract subsequent `review_gate` rounds follow.
81
82
 
82
83
  5. **Blueprint enforcement (max parallel).**
83
84
  - Split for independent execution; declare `Depends`; file-conflict CP = 0 per wave; TDD/proof steps; preserve acceptance criteria.
@@ -42,6 +42,10 @@ Use when the user invokes `$ralplan`, asks for RALPLAN, or wants consensus plann
42
42
  1. **Blueprint is the plan.** Freeform notes are not durable consensus. Create or bind a blueprint before reviews.
43
43
  2. **Align with other lanes before planning.** This repo is worked by many concurrent agent sessions. Before the code dive, establish which surfaces another live lane already owns and record them as explicit non-goals. See [Lane alignment](#lane-alignment-not-optional). The user should not have to re-assert this.
44
44
  3. **Ground before drafting.** Code dive (+ bounded external research when needed) happens **before** the blueprint draft is treated as serious.
45
+ - **A stated cause is a claim that must be observed.** When a plan explains
46
+ why something fails, it carries the command that produced that answer.
47
+ An unobserved cause is a guess laundered into consensus, and review will
48
+ spend rounds disproving it instead of improving the plan.
45
49
  4. **Reviews before refine.** Run risk-matched `plan-*` skills on the blueprint, apply findings, **then** `/plan-refine`.
46
50
  5. **No implementation.** Do not edit product source, commit implementation, or start `ultragoal`/`team`/`autopilot` unless the user explicitly switches out of planning.
47
51
  6. **No review stampede.** Do not fan out multi-host outside-voice swarms. Prefer in-host skill loads; at most one outside voice only if the user asks or the change is auth / data-loss / public-API sensitive.
@@ -126,7 +130,7 @@ Rules:
126
130
  - Apply findings **into the blueprint** after each review (or once after the set if independent).
127
131
  - Independent reviews may run in parallel **only when** they do not depend on each other's edits; if eng findings reshape scope, re-run only the affected optional reviews.
128
132
  - Optional high-risk challenge: one sequential outside-voice pass (`codex` / `claude` / `opencode-go`) **after** eng review if the user asks or the change is auth / data-loss / public-API sensitive. Never parallel multi-host review.
129
- - Any formal `wp_review_gate` re-review round follows `catalog/agent/rules/review-methodology-sota.md` Principle 5's delta-anchored adjudication contract, not a fresh rediscovery pass.
133
+ - Any formal `review_gate` re-review round follows `catalog/agent/rules/review-methodology-sota.md` Principle 5's delta-anchored adjudication contract, not a fresh rediscovery pass.
130
134
 
131
135
  ### 5. `/plan-refine` last (always)
132
136