---
type: audit
status: complete
created: 2026-06-10
tags: [v0.12.0, strategy, dx, competitive, harness, audit]
---

# v0.12.0 Leverage Audit — comprehensive sweep (2026-06-10)

> **Method:** 3 parallel sweeps (mechanism census of execution path, DX/public-API audit, June-2026 competitive landscape research with citations) cross-referenced against the 2026-06-02 architecture health audit, the 2026-06-04/05 falsified-lever tally, and the heavy-strategy parity findings. Load-bearing claims spot-verified firsthand (builder method count, memory default, RA_RECITE absence on main, RunController existence).

## One-line verdict

**The framework is structurally healthy (A−) and empirically honest; its leverage problem is identity, not architecture.** The two capabilities competitors demonstrably lack — local-model agent reliability and local-first deterministic replay/diagnosis — are already built but buried, while one 2026 table-stakes feature (durable execution / crash-resume + HITL pause-resume as a documented story) is missing and gates every evaluation. The harness's real overcomplication is at the *surface* (77 builder methods, Effect leakage, 7-strategy marketing the data doesn't support), not in the kernel.

---

## 1. Which systems overcomplicate vs improve (mechanism census verdicts)

Census of ~20 mechanisms on the `agent.run()` path. Per-iteration kernel cost is lean (loop detector, guards, assembly stages, healing all <5ms, 0 LLM calls). A simple 1-tool task = 2–3 LLM calls end-to-end.

### Improving the harness (keep, cheap, evidenced)
| Mechanism | Why it earns its place |
|---|---|
| Single arbitrator + loop detector | 0 LLM calls, catches real failure modes, single-owner termination |
| `project()` 5-stage assembly | sole live context path, load-bearing, tier-adaptive |
| Healing pipeline (4-stage) | 86.7% malformed-call recovery on local models; zero cost when native FC active; **a differentiator, not overhead** |
| Calibration (priors→posterior) | resolves once at bootstrap, ~0 marginal cost; foundation of the local-model story |
| Tier-adaptive context profiles | same agent code runs 4B local → frontier; invisible to users (under-marketed) |
| Compose hooks/killswitches | zero overhead when unregistered; maps onto the cost-governance white space |

### Overcomplicating or unjustified (act in v0.12.0)
| Mechanism | Problem | Action |
|---|---|---|
| **Heavy strategies (reflexion/ToT/plan-execute)** | Own benchmarks: NO quality lift vs reactive even on home-turf; 3–15× cost local (2026-06-05 probe). ToT 3-23× on trivial tasks (#110). | Demote in docs/marketing; route adaptive away from them by default on local tier; do NOT delete code (frontier cost is acceptable, niche value possible). `direct`+`reactive` merge already in debt table — fold into this. |
| **Debrief synthesis** | ~825 tok + 1 LLM call per non-trivial run on local; 52% hit max_tokens (#143). Largest single per-run overhead. | Make tier-aware (skip or template-only on local) or opt-in below a complexity threshold. |
| **Memory default-on** | Surprises stateless/CI users; SQLite side effects in home dir; `withLeanHarness()` doesn't disable it (`builder.ts:213`, comments admit GH #122 debt). | Decide: default-off with one-line opt-in, or a `stateless()` profile. Escalated below. |
| **77 builder methods** | ~5 observability-adjacent methods (`withObservability/withTracing/withCortex/withLogging/withTelemetry`), 3 hook routes (`withHook/withHarness/compose`), 3 overlapping reasoning configs (`withReasoning/withProfile/withContextProfile`) with undocumented precedence. | Consolidation wave: grouped facades + documented precedence; deprecate aliases. |
| **Effect leakage in hooks** | Lifecycle hooks require `Effect.succeed(ctx)`; error paths surface `Data.TaggedError` unions Mastra-class users won't parse. Mastra won TS mindshare by hiding AI SDK; RA must hide Effect the same way. | Effect-free hook signatures (auto-wrap), plain-Error mapping at the promise boundary. |
| **Env-var flag sprawl** | `RA_LAZY_TOOLS`, `RA_RECALL_GATE` gate behavior outside the builder; recall has two paths (episodic bridge + recall gate). | Promote to builder config or fold into `enableMemory`; one control surface. |
| Meta-tool prompt overhead | 9 meta-tools always registered, ~500–800 tok in prompt | Audit per-tier: local tier likely shouldn't carry all 9. |

### Known-falsified levers (do NOT resurface)
cache-churn, extractObservationFacts-44%, local-step-economy, cogito-17-step-stall, rationale-breaks-weak-models, escalation-lift controller, plan-execute input-bloat + synthesis-skip. (2026-06-04/05 sprints.)

---

## 2. Competitive position (June 2026, researched with citations — see agent report)

**White space RA already occupies but doesn't market:**
1. **Local-model agent reliability** — every framework's Ollama story is "point at :11434"; Mastra's local docs are a known hole; community consensus "use 32B+ or suffer." RA has per-model calibration, capability-signal routing, healing, tier-adaptive context, cross-tier bench 5/5. **Largest defensible gap.**
2. **Local-first deterministic replay + diagnosis** — the LangSmith-funnel backlash is the loudest ecosystem complaint of 2026 ("debugging without LangSmith got worse"); OpenAI tracing has the same shape; most "replay" is synthetic. RA's `@reactive-agents/replay` + `rax-diagnose` are the real thing — and not even in the README.
3. **Cost governance** — CrewAI's $414 runaway run; Claude SDK has no enforced limits. RA killswitches + honest token accounting. Copyable feature, but the *honesty receipts* (publishing our own overhead findings) are not.

**Table-stakes gap (blocks evaluation regardless of differentiators):**
- **Durable execution**: LangGraph checkpoints, Pydantic-AI+Temporal, OpenAI SDK, Vercel Workflow DevKit — "no longer optional." RA has the primitives (RunController pause/resume/stop, auto-checkpoint, snapshot/replay, SQLite sessions) but **no documented, tested "kill the process mid-run → resume → finish" story**, and HITL bridge (IX1) is unfinished.

**Not differentiators (stop implying they are):** memory (most crowded space of 2026), strategy count (own data shows parity), entropy-RI (unproven lift publicly — keep building evidence before marketing).

---

## 3. Ranked v0.12.0 levers

| # | Lever | Effort | Why this rank |
|---|---|---|---|
| **0** | **Model-default fix ships before 2026-06-15** (published 0.11.1 defaults to `claude-sonnet-4-20250514`, retires 06-15 → 404s). Branch `worktree-provider-models` ready. | XS | Hard external deadline; everything else is moot if the published package 404s. |
| **1** | **Durable execution story**: crash-resume e2e (checkpoint→persist→`resume(runId)`), HITL pause/resume via existing RunController + `requireApprovalFor`, documented + integration-tested + demoed. | M | Table stakes; gates all evaluations; ~70% of primitives exist. |
| **2** | **DX simplification wave**: Effect-free hooks; builder consolidation (observability 5→1, hooks 3→1 canonical, reasoning-config precedence doc); memory-default decision; plain-Error boundary; README repositioned around levers 3a/3b. | M | Mastra won on exactly this axis; RA's surface is the adoption blocker. |
| **3a** | **"Works on local models" public receipts**: reproducible bench page — same suite, qwen/llama 7–14B via Ollama, RA vs Mastra vs LangGraph.js vs raw AI SDK, first-attempt success + tokens. | M | The one claim that is true, demanded, and hard to copy. Bench infra exists. |
| **3b** | **"Local flight recorder" productization**: replay + rax-diagnose into README/quickstart/examples; "record once, debug forever," explicitly positioned vs the LangSmith funnel; honest diff vs LangGraph time-travel (we replay full provider interaction offline). | S | Real thing already built; pure surfacing work. |
| **4** | **Harness cost honesty**: tier-aware debrief (skip/template on local), meta-tool prompt audit per tier, publish own overhead numbers. | S | Trust yield + directly fixes the largest measured overhead. |
| **5** | **Strategy surface honesty**: adaptive routes to reactive by default on local; heavy strategies documented as "frontier, niche"; merge `direct` into reactive (debt-table item). | S–M | Aligns marketing with own evidence before someone else benchmarks us. |
| **6** | **Capability axis (Pillar 8)**: recitation + experience-reuse (PR #181 branch has seed work) behind ablation gates. | L | The genuine vision gap (audit grade D) — but it's a research bet, not a launch feature; sequence after 1–3. |

**Explicitly deprioritized:** further structural refactors (kernel is A−; metric-gaming risk), I4 resolver merge (sequenced after bench can measure regressions, per 06-02 audit), memory v2 (trips §9 anti-scaffold), think.ts decomp (safe but not leverage).

---

## 4. Escalations (user decisions)

1. **Release shape:** fast 0.11.2 (model defaults only, beats June-15) then 0.12.0 with levers 1–3, **or** single 0.12.0 before June-15 (risky — 5 days). Recommend: 0.11.2 now, 0.12.0 properly.
2. **Memory default:** flip to off (breaking-ish, honest) vs keep on + `stateless()` profile (compat, surface grows).
3. **Track order:** 1→2→3 recommended (table-stakes, then surface, then receipts), but 2 and 3b can parallelize.
