v5.1.0 — V5-2 parallel-run + token-efficiency: recall budget and heat-based floor curation
MINOR. Two threads land together. The V5-2 kernel-thinning parallel-run continues extracting Obsidian/Drive machinery from the storage-agnostic engine into crickets plugins: the GDrive conflict sweep moved to the obsidian-vault plugin (task 2), and backend-selection now discovers and fails loud on a misconfigured obsidian-vault backend (task 3). The #46 token-efficiency batch (Hardening I) lands two of its three floor-shrink targets: a configurable per-recall token budget (Part A task 3) that keeps recall injection ≤ N tokens highest-salience-first, and a heat-based always-load curation system (Part G) that demotes sustained-cold entries and promotes sustained-hot ones — principled floor shrinkage instead of silent alphabetic truncation. Gates: 18/18, CI green across Linux/Mac/Windows.
Added
- Per-recall token budget —
recall_token_budget(#46 Part A task 3).recall.pynow enforces a configurable token budget (DEFAULT_TOKEN_BUDGET = 20_000, ~10% of a 200k Claude context) on bothsession_start()andprompt_submit(). Salience-ordered truncation retains highest-scoring entries; a visible> [!NOTE] recall truncated: N entries omitted …marker fires on any truncation — never silent. Configurable via--token-budgetCLI →RECALL_TOKEN_BUDGETenv → default;0 = unlimited. Public API frozen (DC-7) (b91894a). - Heat-based always-load curation —
heat_policy.py(#46 Part G). Per-entry recall hits logged to<vault>/.heat.json;run_policy()demotes zero-hit entries after ≥ 10 sessions and promotes ≥ 3-hit entries across ≥ 2 sessions.heat_pin: truefrontmatter field marks never-demote;MIN_ALWAYS_LOAD = 5safety floor. Every demotion/promotion emits a visible stderr marker. Newheat-pin <slug>subcommand (92ad252). - ADR 0014 — Tier-2 gate: don't fork the loop (#46 Part E) (
fe6ec37).
Changed
- GDrive conflict sweep → crickets
obsidian-vaultplugin (V5-2 task 2).detect_conflict_files,_infer_conflict_base_path,default_lost_and_found_root, and theconflict-merger-session-starthook removed from kernel;_conflict_familystays kernel-side. Guard test asserts the three symbols stay absent fromharness_memory. Paired with cricketsobsidian-vault0.1.0 (dffb5f4). - Backend-selection discovers
obsidian-vaultplugin (V5-2 task 3). Probes for the crickets plugin before construction; fails loud if absent.--doctorpreview shows plugin-installed state; loader hardened against import failures (dbcf739,a20eeb6).
Internal
- Recall prefix-stability + floor-dedup guards (
test_recall_prefix_stability.py) — 6 cases including clock-skew shim (b18e729). - M3 Tier-types V6-reservation note + ML2 plan-name parity vectors (
d4fca3a). - CLAUDE.md @AGENTS.md import for token-efficiency floor-trim (
d13b71c).
Cross-references
- crickets
obsidian-vault0.1.0 — paired V5-2 task 2 release. - agentm v5.0.1 — prior release.
- ADR 0014 — Tier-2 SDK fork gate.