Skip to content

Releases: DevOtts/plan-it

plan-it v3.0.1

Choose a tag to compare

@DevOtts DevOtts released this 09 Jul 18:53

Packaging patch — no pipeline or enforcement changes. Aligns plan-it with the shared DevOtts plugin marketplace (which also hosts `fable-it`).

What changed

  • M1 — marketplace namespace. The marketplace is renamed `plan-it` → `devotts`, so the install command is now:
    ```
    /plugin marketplace add DevOtts/plan-it
    /plugin install plan-it@devotts
    ```
    (was `plan-it@plan-it`). The GitHub `add` path is unchanged; the plugin itself is still named `plan-it` — only the marketplace namespace moved.

    ⚠️ Breaking if you already added the marketplace under the old `plan-it` name — re-run the `add` step (or `/plugin marketplace remove plan-it` first).

  • M2 — version parity. Bumped `3.0.0` → `3.0.1` across all six version mirrors so plan-it tracks the same release line as the other DevOtts plugins. Release gates re-pinned to `3.0.1`.

The mirror-integrity and additive-only guarantees from v3.0.0 are unchanged. See CHANGELOG.md for the full 3.0.0 field-hardened-core notes.

v3.0.0 — the field-hardened core

Choose a tag to compare

@DevOtts DevOtts released this 09 Jul 13:36

The public debut of the v3 line. Where v2 made the planning pipeline deterministic — an explicit statechart, persisted run state, executable gate guards — v3 makes the delivery package hard to fake: every mechanism below ships as a machine-checked invariant backed by a binding Test Contract case, not documentation. All v3 verbs and statechart states are strictly additive over v2 (verified by gate-check machine-diff against the v2 baseline), so the deterministic core is untouched.

Three layers land together in this debut.

Enforcement floor — the invariants v3 was mandated to add

  • FD-1 — test-convention discovery → CLAUDE.md registration (new gate-check testconv verb).
  • FD-2 — pushed pre-freeze Test Contract review, surfaced at the batched decision gate before the CONTRACT can freeze.
  • W1–W6 — six write-time invariants: contract hygiene, environment preflight (ENV-FACTS probe manifest), model-tier enforcement (no hardcoded model IDs), a closed 4-term status vocabulary, computed-never-typed tallies, and kickoff pinning + packaging parity.
  • Mirror integrity — 8 root↔plugin pairs asserted byte-identical, wired into the release checklist.

Enforcement reach — closed against a real external project

Running v3 against a real external project layout (not plan-it's own dogfood) surfaced two ways the freeze guard could be silently bypassed. Both are now closed, fail-closed, with the protected v2 core still byte-identical:

  • E1 — freeze checks key off a discoverable run root (.plan-it/state.json), not a --dir flag or the dogfood path, so a project that freezes its CONTRACT positionally no longer skips them.
  • E2 — the inline-code stripper no longer false-passes an id in a line-wrapped code span.

Adversarial depth (D4) — the crown-jewel lever

The single dimension v3 was built to win is Test-Contract failure-mode depth. A new adversary verb, wired as a hard gate (adversaryGate, between verify and handoff), makes depth an exit code, not prose. It demands: a modeled failure state (D-A1), a recovery/compensation transition (D-A2), every failure state asserted as a case outcome (D-B1), every governance rule test-hooked (D-B2), and the five cascade classes each covered-or-waived (D-B3). A genuinely linear/CRUD contract declares no state machine and the gate is N/A — no over-reach; silent absence fails closed.

Validated against v2. In a blind head-to-head — a v3-authored package vs a v2-authored package on one identical fuzzy brief, same model both arms — D4 was judged by two independent reviewers with the labels swapped, plus an adversarial refutation checker. Result: v3 wins the crown, D4 = 5 vs 3, held under both reviewers, breaking the prior tie on the exact dimension this line targets.

Verification

100% binding-case pass is the Definition of SHIPPED. At release: run-contract v2 51/51 + v3 25/25 fail-closed; fail-closed-sweep 25/25 enforcement rows mechanism-ready (0 gaps); mirror-check 8/8 byte-identical; machine-diff additive-only against the v2 baseline; version-triple-match + changelog-shape green.

Full details in CHANGELOG.md.