Skip to content

Releases: stgmt/omp-plan-kit

OMP Plan Kit v1.7.1

Choose a tag to compare

@github-actions github-actions released this 06 Sep 16:23

OMP Plan Kit v1.7.1

OMP Plan Kit v1.7.1 fixes the Plan Mode deadlock where a turn-budget block (PLAN_VALIDATOR_TURN_BLOCKED) could never be recovered inside the same planning session.

Key changes

  • A successfully answered ask question now resets the turn budget: proposal count cleared, turn latch released, per-slug repair cycles dropped. A cancelled ask or any other tool result leaves the budget untouched.
  • All turn-budget and repair-stop messages now prescribe the Plan Mode legal recovery (call ask, or use native Refine) instead of telling the agent to wait in prose, which the Plan Mode runtime forbids.
  • No validation semantics changed: limits (MAX_TURN_PROPOSALS = 4, MAX_FAILED_VALIDATIONS = 3, MAX_SAME_HASH_REPEATS = 2, MAX_NO_PROGRESS_ATTEMPTS = 2) and the sticky latch are unchanged.

Verification

  • npm run build passes and produces deterministic dist/extension.js bytes.
  • npm run check passes.
  • Plan validator, mutation, convergence (now 8 tests incl. ask-reset), programmer, public hook, hook-mutation, and real-loader handoff scenarios pass.
  • The release archive contains exactly package/LICENSE, package/README.md, package/package.json, and package/dist/extension.js.
  • This release is distributed through GitHub Releases and the OMP marketplace path; it is not published to npm.

Install

omp plugin install github:stgmt/omp-plan-kit#v1.7.1

OMP Plan Kit v1.7.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 04:09

OMP Plan Kit v1.7.0

OMP Plan Kit v1.7.0 removes the plugin-owned plan-specific LLM advisor and keeps plan handoff deterministic before native OMP review and watchdog logic.

Key changes

  • Removed the plugin-owned advisor model lookup, configuration, cache, repair calls, limits, and advisor-only end-to-end suites.
  • Kept the public omp-plan-kit:enter-plan-mode event on OMP's shared event bus.
  • Kept the exact exported PLAN_CORE_TEMPLATE injection and session-scoped requirement for activated Plan Mode sessions.
  • Kept fail-closed deterministic validation for missing, malformed, incomplete, or stale plan artifacts.
  • Kept the legacy Markdown validation path for sessions that never receive the public Plan Mode event.
  • Valid proposals continue to native OMP review and watchdog logic without a second plugin-owned model call.

Verification

  • npm run build passes and produces deterministic dist/extension.js bytes.
  • npm run check passes.
  • Plan validator, mutation, convergence, programmer, public hook, hook-mutation, and real-loader handoff scenarios pass.
  • The release archive contains exactly package/LICENSE, package/README.md, package/package.json, and package/dist/extension.js.
  • This release is distributed through GitHub Releases and the OMP marketplace path; it is not published to npm.

Install

omp plugin install github:stgmt/omp-plan-kit#v1.7.0

OMP Plan Kit v1.6.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 00:38

OMP Plan Kit v1.6.0

OMP Plan Kit v1.6.0 makes the machine-readable plan core mandatory for proposals from sessions that entered OMP Plan Mode, while preserving the existing Markdown path for direct and legacy callers.

Key Changes

1. Mandatory plan core at Plan Mode entry

  • The public omp-plan-kit:enter-plan-mode event now injects the exact exported PLAN_CORE_TEMPLATE into the hidden plan-mode instructions.
  • The same activation records a session-scoped requirement before xd://propose can proceed.
  • The template keeps the stable JSON keys sections, context, approach, action, target, verification, command, and expects; values may use any language.

2. Fail-closed handoff

  • An activated session without a line-1 JSON core is blocked with PLAN_CORE_REQUIRED.
  • Malformed, unterminated, or incomplete required cores are blocked with PLAN_CORE_INVALID and field-level diagnostics.
  • These failures occur before the bounded advisor and before native OMP review.

3. Compatibility and lifecycle

  • Sessions that never observe the public Plan Mode event retain the existing Markdown validation contract.
  • Requirement state is isolated by session, replaced by newer activations, and cleared on session_shutdown.
  • External event subscribers, activation deduplication, late-listener rejection, and both OMP plugin load orders remain covered.

Verification

  • npm run build and npm run check pass.
  • Validator and mutation suites pass with every declared mutant killed.
  • Real-loader hook and hook-mutation suites pass; all requirement/template mutants are killed with non-zero broker calls.
  • Real in-process handoff passes strict missing/malformed/incomplete/valid-core scenarios, native review dispatch, legacy Markdown compatibility, advisor ordering, cache behavior, and convergence behavior.
  • Rebuilt dist/extension.js is deterministic and included in the release package.

Install

omp plugin install github:stgmt/omp-plan-kit#v1.6.0

OMP Plan Kit v1.5.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 19:32

OMP Plan Kit v1.5.0

OMP Plan Kit v1.5.0 removes the last language-coupled surface of plan validation: plans may now carry an optional machine-readable JSON core, and when it is present the validator checks the data instead of parsing prose.

Key Changes

1. Machine-readable plan core (opt-in, JSON front-matter)

  • A plan may start with a --- { ... } --- JSON block describing sections.context, sections.approach (steps with exact targets), and sections.verification (proofs with command and observable expects).
  • With a valid core, the validator validates the DATA and skips Markdown entirely: a plan whose headings and body are entirely in Russian (or any language) passes with zero issues.
  • Keys are format literals (like YAML keys) and are not translated; values are free language. Unknown extra keys are ignored.

2. Fail-closed core handling

  • The block must start at line 1 and close within the first 100 lines.
  • Invalid JSON inside the block produces PLAN_CORE_INVALID with the exact violated field named in the repair packet — it is never silently parsed as Markdown.
  • A leading --- without a closing fence falls back to the Markdown path.

3. Design basis

  • Closes the critique that marker-token whitelists (v1.3.1) and even positional rules (v1.4.0) left heading literals language-coupled: with the core, validation becomes schema checking — the same validation-by-construction technique used by GitHub Spec Kit templates and Copilot Workspace's structured plan objects.
  • Competitor and literature research with sources: audit-reports/research-competitor-plan-validation-2026-09-05.md (LLM-Modulo external-verifier principle; Gherkin language registry evaluated and not needed; LLM extraction rejected as nondeterministic).

Compatibility

  • Strictly opt-in: plans without front-matter validate exactly as in v1.4.0. Works with OMP >= 17.3.7; no new runtime dependencies (the core is plain JSON).

Verification

  • Full battery green: npm run check, validator e2e (incl. core-path cases), convergence controller, programmer mutations, advisor contract, real in-process handoff, BDD mutation suite (12/12 mutants killed, including M-drop-core-path, M-core-lenient-context, M-core-skip-expects, clean-environment run).
  • Build is deterministic: committed dist/extension.js equals a fresh bun run build.

Install

omp plugin install github:stgmt/omp-plan-kit#v1.5.0

OMP Plan Kit v1.4.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 18:57

OMP Plan Kit v1.4.0

OMP Plan Kit v1.4.0 makes plan verification language-neutral. The expected-result check after a fenced command block no longer depends on a marker word in any specific language — it is positional: the line immediately following the block (blank lines skipped) states the observable result, in whatever language the author writes.

Why

The previous design required a marker token after every fenced command block: Expected: (v1.2.0), then Ожидаемо: (v1.3.0, the wrong Russian form), then Ожидается: (v1.3.1). Each release extended a whitelist one word at a time, and every world language not on the list reproduced the same production failure seen on 2026-09-05: a correct plan rejected three times until the repair budget ran out. A whitelist cannot close this bug class — this release removes the mechanism.

Key Changes

1. Positional verification proof (VERIFICATION_NOT_ACTIONABLE form 2)

  • A non-empty fenced command block must be followed (blank lines skipped) by a non-empty result line in ANY language: Erwartet: alle Tests grün, 预期:全部通过, всё зелёное — all pass without any marker.
  • Legacy markers Expected: / Ожидается: / Ожидаемо: still work — they are ordinary result lines now, not required keywords.
  • A Markdown heading right after the block is structure, not a result, and does not qualify. A fenced block with nothing after it still fails. An empty fenced block (no command) still fails.

2. Repair hint states the real contract

  • The VERIFICATION_NOT_ACTIONABLE hint now says: a fenced command block followed immediately by a line stating the observable result (any language; markers accepted but not required).

3. Plan-format language contract, written down

  • Section headings (## Context, ## Approach, ## Verification) are format keys, like YAML keys: they stay exact English literals and are not translated. Plan body text is free language. The validator never judges body prose language.

4. Proof: scenario × mutation coverage

  • The BDD mutation suite now kills three new defect classes: restoring the marker-token requirement, accepting a heading as a result, and dropping the non-empty-block guard. Scenarios cover German and Chinese result lines, blank-line tolerance, missing result lines, and headings after blocks.

Compatibility

  • Strictly widening: every plan accepted by v1.3.1 remains accepted. Plans whose result lines were previously rejected for language reasons now pass. No breaking changes; works with OMP >= 17.3.7.

Verification

  • Full battery green: npm run check, validator e2e, convergence controller, programmer mutations, advisor contract, real in-process handoff, and the BDD mutation suite (9/9 mutants killed, clean-environment run).
  • Build is deterministic: committed dist/extension.js equals a fresh bun run build.

Install

omp plugin install github:stgmt/omp-plan-kit#v1.4.0

OMP Plan Kit v1.3.1

Choose a tag to compare

@github-actions github-actions released this 05 Sep 17:48

OMP Plan Kit v1.3.1

OMP Plan Kit v1.3.1 is a bugfix release for plan validation and turn-budget accounting, driven by a production failure on 2026-09-05: a correct Russian-language plan was rejected three times (each attempt made progress) until the repair budget was exhausted, and the plan had to be approved manually.

Key Changes

1. Natural Russian verification token accepted (Ожидается:)

  • Form 2 of VERIFICATION_NOT_ACTIONABLE (fenced code block followed by an expected-result line) now accepts Ожидается: <result> alongside Expected: <result> and the v1.3.0-documented Ожидаемо: <result>.
  • Expected: and Ожидаемо: remain accepted for backward compatibility; bullet-list (- ) and numbered (1)) continuations before the token stay supported.

2. Repair hints state the exact contract

  • SECTION_MISSING hint now says the heading line must be exactly ## <Section> — the English literal; translated, bilingual, or decorated headings are not matched. Previously the hint read as "add a section about Context", which led the author model to try ## Context / Контекст.
  • VERIFICATION_NOT_ACTIONABLE hint now names every accepted token: Expected: / Ожидается: / Ожидаемо:.

3. Turn budget counts only preflight-passed proposals

  • MAX_TURN_PROPOSALS (4 per turn) in the convergence controller now counts only xd://propose calls that pass the deterministic preflight. Malformed payloads (full Markdown, empty, whitespace, path traversal — 0 disk reads) and missing exact artifacts (one fs.stat) are rejected uncounted.
  • Before this fix, four malformed calls burned the whole per-turn budget and latched PLAN_VALIDATOR_TURN_BLOCKED, so a valid plan in the same turn could not be submitted at all. The shipped tests/e2e-programmer.mjs failed on origin/main for exactly this reason.
  • Sticky-latch semantics are unchanged: the 5th counted proposal trips the budget, further calls get a constant-time latch response, and a new user prompt or native Refine resets the turn.

4. New BDD scenario × mutation test suite

  • tests/e2e-validator-mutations.mjs: 10 Given/When/Then scenarios run against the real build (baseline) and against 11 source mutants (token alternation, bullet prefix, repair hints, heading exactness, immediate-Expected rule, budget ordering, budget bounds, sticky latch). Every mutant must be killed by at least one scenario or the suite fails. Registered as e2e:mutations and wired into check and e2e:all.
  • Extended coverage in tests/e2e-plan-validator.mjs (Russian tokens plain and bulleted, exact-literal hint assertions, bilingual-heading rejection, token-list hint assertion) and tests/e2e-programmer.mjs (end-to-end budget ordering: uncounted rejections, four counted attempts, 5th trip, sticky latch — schema omp-plan-kit-programmer-e2e@3).
  • The mutation harness loads bundles through OMP's loadLegacyPiModule (same as every other suite), so it works in clean environments without ambient module paths.

Verification

  • Reproduction matrix of the production failure passes clean: Ожидается: / Expected: / Ожидаемо: all accepted; bilingual and translated headings correctly rejected with the exact-literal hint.
  • Full battery green: npm run check, validator e2e (23 tests), convergence controller (7 tests), programmer mutations, advisor contract, real in-process handoff, BDD mutation suite (11/11 mutants killed).
  • Build is deterministic: committed dist/extension.js equals a fresh bun run build.

Compatibility

  • No plan-format breaking changes: all previously accepted plans remain accepted; the Russian acceptance set is strictly wider.
  • Works with OMP >= 17.3.7; no new runtime dependencies.

Install

omp plugin install github:stgmt/omp-plan-kit#v1.3.1

OMP Plan Kit v1.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 21:51
4649874

OMP Plan Kit v1.3.0

OMP Plan Kit v1.3.0 introduces deterministic actionable plan contracts for Oh My Pi (OMP) plan mode, ensuring every plan step identifies an exact target and verification contains observable, actionable proof before invoking the AI plan advisor.

Key Changes

1. Approach Step Target Verification (APPROACH_TARGET_MISSING)

  • Every step in ## Approach must include an exact target using inline code outside code fences:
    • Path indicators: / or \ (e.g. src/file.ts, GET /api/orders, .\build\run.exe);
    • Anchor / symbol delimiters: # (e.g. src/plan-validator.ts#validatePlanStructure);
    • Namespace delimiters: :: (e.g. crate::module::func);
    • Function calls: name() (e.g. validatePlanStructure());
    • Identifier chains: name.member (e.g. PlanIssue.code, package.json);
    • Interface paths: Name > Child (e.g. Settings > Billing).
  • Step breakdown: H3 headings if present; otherwise top-level numbered list items (1. / 1)); otherwise the entire section is evaluated as one step.
  • Pinpoints exact line numbers of missing targets and suggests concrete actionable examples.

2. Actionable Verification Proof (VERIFICATION_NOT_ACTIONABLE)

  • The ## Verification section must contain at least one verifiable proof in either of two supported forms:
    1. Inline action followed by an observable result: <command or exact surface> → <observable expected result> (also accepts => or ->);
    2. A non-empty fenced code block followed immediately by a non-empty Expected: <observable result> or Ожидаемо: <observable result> line.
  • CLI allowlists are deliberately avoided: actions can be shell commands, API routes, browser UI screens (Settings > Billing), TUI states, or manual verification steps.

3. All-Errors Repair Packet & Dependency Suppression

  • New checks integrate into the single-pass validator: both missing targets and non-actionable verification are reported together with structural errors in a single repair packet.
  • Dependent errors are suppressed: if Approach or Verification is missing, empty, or duplicated, secondary target and actionability errors are omitted.
  • Issue signatures remain stable across cosmetic line-number and whitespace shifts.

4. Non-Goals & Architecture Integrity

  • No custom non-native sections added: plans strictly follow the five canonical OMP sections (Context, Approach, Critical files & anchors, Verification, Assumptions & contingencies).
  • No synthetic identifier schemes (FR/AC/T) enforced.
  • No filesystem existence checks performed during plan validation (targets may be created during implementation).
  • No LLM free-text meaning analysis in validator: deterministic token checks guard the boundary; semantic critique is handled by the bounded AI advisor.

Installation

Install as a user-scoped OMP plugin:

omp plugin install github:stgmt/omp-plan-kit#v1.3.0

Verify installation:

omp plugin list --json

Rollback

To rollback to v1.2.0:

omp plugin uninstall omp-plan-kit
omp plugin install github:stgmt/omp-plan-kit#v1.2.0

OMP Plan Kit v1.2.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 20:30

OMP Plan Kit v1.2.0

OMP Plan Kit v1.2.0 introduces deterministic batch structural plan validation and bounded repair convergence for Oh My Pi (OMP) plan mode.

Key Changes

1. Batch Structural Plan Validator (src/plan-validator.ts)

  • Enforces canonical Markdown ## sections outside code fences:
    • Required in order: ## Context, ## Approach, ## Verification
    • Optional constrained placement: ## Critical files & anchors (strictly between Approach and Verification), ## Assumptions & contingencies (strictly after Verification)
  • Returns all independent structural errors in a single actionable repair packet, rather than failing fast on the first error.
  • Suppresses dependent errors when sections are missing.
  • Provides stable issue signatures based on sorted code:section pairs, ignoring line-number shifts from cosmetic edits.

2. Bounded Repair Convergence Controller (src/extension.ts)

  • Prevents infinite repair loops with hard, deterministic limits:
    • MAX_FAILED_VALIDATIONS = 3: maximum 3 failed validation attempts per slug;
    • MAX_SAME_HASH_REPEATS = 2: maximum 2 repeated proposals of an unchanged invalid plan;
    • MAX_NO_PROGRESS_ATTEMPTS = 2: maximum 2 consecutive proposals without reducing the issue count;
    • MAX_TURN_PROPOSALS = 4: maximum 4 proposals per user turn across all slugs before turn-blocking ([PLAN_VALIDATOR_TURN_BLOCKED]).
  • Implements a sticky turn latch: preserves rich [PLAN_VALIDATOR_STOPPED] diagnostics in the transcript without invoking ctx.abort() (which would overwrite error messages with a generic abort failure), while ensuring subsequent attempts fail fast in $O(1)$ time without re-running the validator or advisor.
  • Fresh budget on new prompt or native Refine plan: before_agent_start resets turn and cycle blocks.

3. Pipeline Order & Advisor Savings

  • Strict execution order: Preflight (0 tokens) → Plan Validator (0 tokens) → Advisor LLM Review (bounded) → OMP Native Review Overlay.
  • Structurally invalid plans never invoke the LLM advisor, saving 100% of advisor tokens on malformed plans.

4. Batch Tool-Call Semantics Note

  • Documents OMP's batch tool-call execution model: all tool_call hooks execute before any tool writes files to disk.
  • Models must emit write local://<slug>-plan.md and write xd://propose <slug> in separate sequential turns.

Installation

Install as a user-scoped OMP plugin:

omp plugin install github:stgmt/omp-plan-kit#v1.2.0

Verify installation:

omp plugin list --json

Rollback

To rollback to v1.1.0:

omp plugin uninstall omp-plan-kit
omp plugin install github:stgmt/omp-plan-kit#v1.1.0

OMP Plan Kit v1.1.0 — advisor exit-gate

Choose a tag to compare

@stgmt stgmt released this 02 Sep 22:50

OMP Plan Kit v1.1.0 — advisor exit-gate

Advisor is now an economical exit-gate that runs only at plan handoff.

What changed

Economy

  • Intermediate planning steps (todo updates, reads, scratch edits) spend 0 advisor tokens.
  • Malformed payloads (bad slug, path traversal, missing plan file) are blocked as PLAN_HANDOFF_* with 0 tokens.
  • The plan advisor runs strictly on write xd://propose <slug> against the completed plan artifact.

Gate

  • REJECT verdict -> hard block [PLAN_ADVISOR_BLOCK] Советник отклонил план: <reason> before the OMP human-review overlay opens; the agent stays in plan mode with corrective feedback.
  • APPROVE verdict -> handoff passes through to OMP core dispatch unchanged.
  • In-session SHA-256 cache: re-proposing an unchanged plan spends 0 additional tokens.

Technical

  • Reworked src/extension.ts around reviewProposedPlan() with a bounded prompt (redacted user objective + redacted plan excerpt) and native complete() (maxTokens: 160, disableReasoning: true, per-session call cap 3, timeout 15s). Removed the todo-as-trigger path and negative-scope regex heuristics.
  • Cleaned src/extension.ts (removed tiny wrapper functions and the local isRecord guard).
  • Moved E2E suites from scripts/ to tests/: e2e-programmer.mjs, e2e-advisor-contract.mjs, e2e-real-plan-handoff.mjs, e2e-advisor-live.mjs. scripts/ now contains only install/uninstall helpers.
  • Added project rule .omp/rules/tests.md (test discipline) and audit report audit-reports/plan-advisor-exit-gate-2026-09-03.md.
  • Updated package.json, CHANGELOG.md, README.md, llms.txt.

Verification

All four suites pass; live suite executed on openai-codex/gpt-5.6-sol:

  • tests/e2e-programmer.mjs — 8 mutation cases, 3 profiles, stale-plan control.
  • tests/e2e-advisor-contract.mjs — zero waste on syntax errors/todo, REJECT/APPROVE paths, bounded request shape, cache hits.
  • tests/e2e-real-plan-handoff.mjs — real OMP dispatchResolutionDevice/resolveApprovedPlan proof: a rejected defective plan never reaches core, an approved clean plan opens the human review overlay.
  • tests/e2e-advisor-live.mjs — live model rejected defective out-of-scope plan, approved a concrete in-scope plan with verification.

Install: omp plugin install github:stgmt/omp-plan-kit#v1.1.0
Profiles: node scripts/install-all-profiles.mjs

Evidence: audit-reports/plan-advisor-exit-gate-2026-09-03.md

v1.0.1 — aligned final v1.0 release

Choose a tag to compare

@stgmt stgmt released this 31 Aug 13:12

OMP Plan Kit v1.0.1

This patch release aligns the package, public install instructions, release tag, and review evidence on one main commit.

Included

  • deterministic xd://propose stale-plan guard;
  • exact session-local plan artifact validation;
  • bounded native OMP advisor with disabled reasoning and a 160-token cap;
  • OMP Plan Kit roadmap from handoff safety to plan-pomogator workflow and OMP Spec Kit synchronization;
  • public README, AI-readable llms.txt, security/contribution docs, and release evidence.

Manual verification

  • OMP plugin manifest accepted by the official plugin manager.
  • User installation verified in the default OMP profile.
  • Manual mutation and edge E2E passed against the installed package and OMP's real loader/resolver.
  • Native OMP advisor E2E passed with openai-codex/gpt-5.6-sol, disabled reasoning, and 160 output tokens.
  • Rollback/reinstall and final default-profile verification passed.

Install

omp plugin install github:stgmt/omp-plan-kit#v1.0.1

Release binding

Tag commit: 6804de3df7be5f859018b02f2d6f63ea0f999f88.
Attached artifact: omp-plan-kit-1.0.1.tgz.
SHA-256: 0d050d916ef0370aca6a0c6dc11d3a26ca797835373c348ef5aaf8e3251667c2.