Skip to content

v0.2.0 — Mecanismo D + A safety net

Choose a tag to compare

@stevTresCloud stevTresCloud released this 28 May 22:06

Mecanismo D + A safety net — second v0.2 milestone. Closes ticket #1 of the v0.2 backlog.

What's new

  • Mecanismo D (Structured exit) — agents emit a JSON block at end of turn with decisions_made_without_consultation + uncertainties. The orchestrator auto-promotes status to needs_review when those are non-empty. Zero runtime cost — only changes the prompt.
  • Mecanismo A (Critic Haiku post-fan-in) — after wait_for_agents, one Haiku per terminal agent reviews the working-tree diff and flags concerns. Toolset allow-listed to Read/Bash/Grep/Glob (no Write/Edit). Real findings (severity high/med) promote to needs_review; synthetic flags from parser/timeout fallbacks stay visible for diagnostics but do not promote.
  • New setting claudeOrchestrator.verification: 'none' | 'structured' | 'critic' | 'both' | 'human-review'. Default 'structured' (D-only). Enable 'both' for migrations and assertion contract changes (adds ~$0.002–$0.05 per agent in Haiku critic cost).
  • VerificationBadge UI in the RECENT card: verifying… (italic), ✓ Haiku OK (green), ⚠ Flagged (orange).
  • 5th terminal status needs_review extends AgentStatus. Centralized via TERMINAL_STATUSES SSoT + isTerminalStatus() predicate.

Fixes during smoke

  • git diff <headBefore>..HEAD returned empty because agents mutate working tree without committing — switched to git diff <headBefore> (working tree vs commit).
  • Synthetic low-severity flags from infra failures (critic_timeout, critic_no_output, etc.) caused false-positive promotions — severity filter restricts promotion to high/med only.
  • emitStatusChange invariant gap: needs_review was missing from the "once terminal, never back to running" guard — migrated to isTerminalStatus().

Stats

  • +24 tests in exit-schema.test.ts (parser + prompt content + tool allow-list)
  • +24 tests in bridge.test.ts (verification flows + isTerminalStatus + readGitHead + captureCriticDiff async)
  • 414/414 passing (was 358 at v0.2.0-pre.1)
  • ~700 LOC in bridge.ts touched / +450 LOC new in exit-schema.ts

Validated

Full smoke E2E with adversarial flip prompts:

  1. Mecanismo D caught an honest agent declaring decisions_made_without_consultation for an assertTrue → assertFalse flip.
  2. Mecanismo A caught the same flip via critic Haiku review of the diff (4 findings: 1 high + 2 med + 1 low).
  3. Benign helper task (_make_admin_user()) terminated done with critic_findings: [] — calibration of the critic prompt prevented over-eager false positives on additive changes.

Full CHANGELOG: CHANGELOG.md

Install

Download claude-orchestrator-0.2.0.vsix below and:

```bash
code --install-extension claude-orchestrator-0.2.0.vsix --force
```

Or via VS Code palette: Extensions: Install from VSIX...

After install, reload the window and verify /mcp shows claude-orchestrator: Connected.