Skip to content

v0.3.2

Choose a tag to compare

@rizukirr rizukirr released this 02 May 10:32
· 14 commits to main since this release

This release ships two pipeline-skill features plus cross-runtime install consolidation. v0.3.1 was an internal manifest bump and never tagged; this release covers everything since v0.3.0.

Highlights

  • plan-write premortem step — every plan now includes a four-category adversarial sweep (hidden assumptions, irreversible steps, spec-misalignment, verify-clause weakness) before user review.
  • NEEDS_INPUT halt-and-resume — dispatched subagents can pause on genuine ambiguity (spec interpretation OR missing context) instead of guessing or failing. Bounded by a hard budget cap of 2 halts/task and a question-quality contract enforced by report-filter.
  • Install-doc layout consolidated — pi install guide moved into .pi-plugin/INSTALL.md; redundant docs/README.gemini.md folded into INSTALL.gemini.md. Each runtime now has exactly one install doc co-located with its plugin manifest.

Features

plan-write premortem step (v0.3.1 internally)

Adds a new `## Premortem` section to every plan, sibling to `## Self-review` and run after it. The author performs a fixed four-category adversarial sweep:

  1. Hidden assumptions — does the plan trust something it shouldn't (an external API, a runtime invariant, a data shape)?
  2. Irreversible / risky steps — what's expensive to undo (migrations, deletions, manifest edits, lockfile changes)?
  3. Spec-misalignment — where could the user say "that's not what I asked for" (requirements with two reasonable interpretations)?
  4. Verify-clause weakness — where does success and failure look the same ("test passes" on an empty test, "endpoint returns 200" on a stub)?

Each category produces bulleted ` — ` lines. Risks the author cannot mitigate inline are tagged `BLOCKING RISK:` and surfaced to the user at the existing review gate. The premortem itself never halts — it produces the section and proceeds to user review.

The `## Premortem` section persists in the plan file, available to downstream skills (`exec-dispatch`, `verify-gate`, `review-pack`) as additional context. Downstream gating on the section is deferred to a future change.

Files touched: `skills/plan-write/SKILL.md` (+79 lines, additive), 5 manifests bumped to 0.3.1.

`NEEDS_INPUT` halt-and-resume (v0.3.2)

Adds a third structured return path to `exec-dispatch` subagents. Today a dispatched subagent has two return paths: a successful task report or a `report-filter` REJECT (re-format only, never re-run). When a subagent hits genuine mid-task ambiguity, it must guess (silent drift) or fail (full rollback + re-dispatch from scratch) — both expensive.

`NEEDS_INPUT` is the cheap third path:

  • Trigger boundary: spec-ambiguity OR missing-context only. Environment, tooling, test, and dependency failures remain task failures.
  • Return shape: discriminated union on a top-level `status` field (`complete | needs_input`). Variant B carries `blocking_step`, `ambiguity_type`, `question`, `tried`, `options`, `recommendation`, and `rolled_back`.
  • Question-quality contract: `report-filter` rejects vague returns (`tried: "n/a"`, single-option `options`, missing `?` in question, `recommendation` not referencing an option label).
  • Budget cap: at most TWO halts per task across re-dispatches. A third halt escalates as a task failure with a verbatim user-facing message — the plan or brief is structurally broken.
  • Resume mechanism: fresh subagent, augmented brief. The user's answer is folded into the next dispatch's CONTEXT block; partial work is mandatorily rolled back before the halt return.
  • User surface: verbatim wrapper template that signals "this is a NEEDS_INPUT halt, distinct from a normal exec-dispatch question or a task failure".

Files touched: `skills/brief-compiler/SKILL.md` (+29), `skills/report-filter/SKILL.md` (+22), `skills/exec-dispatch/SKILL.md` (+84), 5 manifests bumped to 0.3.2.

Cross-skill consistency: the discriminated-union schema, four CONSTRAINTS bullets, REJECT messages, wrapper template field set, and budget-cap value are byte-identically aligned across the three skills — enforced by a manual cross-skill audit checklist run at review-pack time. Open question: `vibekit-doctor` C14 automation deferred to a future change.


Documentation

  • Move `docs/INSTALL.pi.md` → `.pi-plugin/INSTALL.md`. Each runtime's install doc now lives in its own plugin directory (`.opencode/INSTALL.md`, `.codex-plugin/INSTALL.md`, `.pi-plugin/INSTALL.md`). Gemini's `INSTALL.gemini.md` remains at repo root because Gemini loads `gemini-extension.json` from root, not a subdir. README.md updated to reflect the new path. Resolves the "install-doc location pattern split four ways" nit from the prior pi-runtime-adapter review.
  • Drop redundant `docs/README.gemini.md`. Folded its unique content (`gemini extensions link .` for local dev) into `INSTALL.gemini.md`. Single source of truth per runtime.

Breaking changes

None. Both features are additive:

  • Plans written before v0.3.1 lack a `## Premortem` section; `exec-dispatch` does not require one.
  • Subagents returning the existing schema (without a `status` field) are accepted as `status: "complete"` by `report-filter` for one minor version (backwards-compat fallback to be dropped at the next major).

Upgrade

Reinstall via your runtime's plugin command. Versions across all five runtime adapters bumped 0.3.0 → 0.3.2:

```
.claude-plugin/plugin.json v0.3.2
.codex-plugin/plugin.json v0.3.2
.opencode/plugin.json v0.3.2
.pi-plugin/plugin.json v0.3.2
gemini-extension.json v0.3.2
```

Full commit log

```
$(git log --oneline v0.3.0..v0.3.2)
```