Releases: Foxfire1st/agents-remember
Release list
MCP 3.0.0rc6 — projection tick scaling
Performance release: removes the observer dashboard daemon's per-tick O(contracts × tree × readers) filesystem storm.
Highlights
- Walk-free
load_contract— leaf-id normalization moved to write time plus an explicit idempotentheal-leaf-idsmigration sweep; a contract load no longer walks the whole tasks tree. - One shared contract snapshot per projection tick — the three per-tick readers share a single enumeration, backed by a stat-identity parse cache across ticks.
- Change-driven projection with idle heartbeat — the projector wakes on debounced coordination-input changes or a 15s heartbeat instead of unconditionally every second; the watch set never descends into worktree/container runtime, and any watch failure degrades loudly to fixed-interval ticking.
Impact
- Observer tick read cost ~750 ms → ~9 ms.
- Idle re-projections ~20 / 20s → ~3 / 20s; change latency ~1.2 s.
- Steady daemon CPU ~160% → ~7–22%.
Full mcp suite 2126 passed; repository quality wrapper green; verified against a live tree with provider containers running.
Agents Remember MCP 3.0.0rc4
Agents Remember 3.0.0rc4 ships the completed Hotfix 1 and Hotfix 2 orchestration stack.
Highlights:
- Durable expectation rows, acknowledgement semantics, supervisor sweeps, bounded redelivery, escalation, and reclamation.
- Settings-owned spawn dispatch with harness-log acceptance and duplicate-paste prevention.
- Leaf-role seat bindings, pair-aware attach and retirement, and landed chat archives.
- Sprint-local global chat hierarchy, robust task-document reading, and an adjustable persisted Chats sidebar.
- Strict quality-gate repairs and the final consumed-inbox resurrection race correction.
The final race fix makes consumed inbox state monotonic: a concurrent in-flight delivery may append stale physical evidence, but cannot return the row to pending or redelivery state.
Validation:
- GitHub dashboard rail passed.
- Python 3.11, 3.12, and 3.13 quality wrappers passed.
- 2,019 tests collected with no failures.
- Strict CRAP threshold passed.
- PyPI trusted publishing completed successfully.
- Fresh uvx resolution of agents-remember-mcp==3.0.0rc4 passed.
agents-remember-mcp 3.0.0rc3 — agent orchestration v1
agents-remember-mcp 3.0.0rc3 — agent orchestration v1
The 260703_agent-orchestration series (PR #100): the v1 multi-agent orchestration system, built and adversarially reviewed through the very loops it defines.
Orchestration
- Three-party loop doctrine: owner → builder → adversarial reviewer at leaf/master/portfolio level; complexity tiers; hard 3-round cap with a convergence rule; criteria catalogs with a promotion ratchet (two criteria reached standing during this series' own reviews); the spawn-first STRATEGIST as mandatory sprint planner with an eight-phase, tool-verified method.
- Two-layer agentic settings (
system/settings.json, global + repo-local): leaf-key deep merge, fail-loud on unknown keys and on JSONnullfamily wipes, gateDelegation boot authority, per-level role knobs (rolesPerLevel). - Spawn knob application + open harness registry: per-harness effort/model delivery (argv flags + session-vehicle commands, e.g. Claude's
/efforttiers), free-form escape hatch (launchArgs/sessionCommands/promptKeywords), unknown harnesses teachable via settings instead of crashing. New manual:docs/reference/harnesses.md. - worktree_start reconciliation recovery: an unmapped code base commit can now be reconciled into the memory ledger the same way closeout syncs record it; recovery blocks advertise only consumable choices.
Mission control (dashboard)
- Flat long-session memory: stable-form SSE deltas, ETag/304 on
/api/state, identity-preserving change-gated store, local age advance — a 1.6 GB OOM tab is now flat ~150 MB. - Notes reader v2: coordination notes (design records, reports, verdicts) on the file-viewer chrome — rail of the master's notes, DualPane content, deep links from task docs; truncation banner on oversize notes.
- Visual command hierarchy: orchestration/master/leaf rank insignia (chevron tiers) and hierarchy-grouped chats.
- Tasks-tab truth rules: rows render only for physically existing worktrees, one row per enclosure; vestigial wait-loop-era
askaffordances removed.
Fixes & hardening (pre-release ten-lens review, all with failing-first regressions)
task_doc remove_subtaskno longer reports a false error after a destructive success (response contract fixed).- UTF-8 codepoint-boundary truncation in notes/files serving (no more "empty binary" misreads of large text).
effortSessionCommandtemplate validation at settings load (loud refusals instead of dispatch-time KeyError).- Inbox delivery echo-confirmation seam pinned by regression (delivered vs unconfirmed).
Verification
Every leaf landed through a full loop (builder report → adversarial opus review → owner folds → delta-verify) with onboarding body gates at closeout. Final: mcp pytest 1628 passed / 3 skipped; dashboard 435 passed; ruff, pyright, build, sync checks clean.
Install: uv tool install 'agents-remember-mcp==3.0.0rc3' · one-shot: uvx --from 'agents-remember-mcp==3.0.0rc3' agents-remember dashboard
Dashboard CLI ergonomics: flag-free, daemonized, supervised (rc2)
Agents Remember 3.0.0rc2 (pre-release)
Running the mission-control dashboard is now effortless. This release candidate carries the dashboard-CLI-ergonomics series: agents-remember dashboard finds its trusted settings on its own, survives the terminal that started it, and can be supervised by the MCP server itself — plus install docs that make the unpinned uv tool install the first-class citizen. The architecture is unchanged from 3.0.0rc1; the rc caveat continues to cover the still-settling cockpit surface ahead of 3.0.0 final.
Highlights
- Config auto-discovery:
--configis optional across the dashboard CLI — the nearest.claude/mcp/agents-remember-settings.jsonabove the working directory wins, falling back to the--configrecorded in an.mcp.jsonagents-rememberregistration. A semantic usability probe keeps the repository's tracked placeholder template from ever shadowing real settings, socd ~/Projects && agents-remember dashboardjust works — even from inside a source checkout. - Daemon mode:
agents-remember dashboard --daemondetaches a supervised dashboard that outlives the terminal (--status/--stopmanage it). State is an atomicdaemon.jsonplus a per-spawn-rotated log under<coordinationRoot>/logs/dashboard/; liveness is identity-checked (/proccmdline marker) so pid reuse never resurrects a foreign process; stop is TERM → bounded wait → KILL. - MCP auto-start: the new fail-loud
"dashboard": {"autoStart": true, "port": 8765}settings key makes everyagents-remember-mcpboot ensure the daemon — adopt a healthy one, spawn a missing one, restart on version mismatch so an upgrade reaches the cockpit on the next session. Race-safe across concurrent boots (one flock; losers skip) and it never blocks or breaks the stdio handshake. - Install docs:
uv tool install agents-remember-mcp+agents-remember dashboardis the documented first-class path (the README's new "Run The Dashboard" section and the PyPI page's Install And Run); version pinning moves to the debugging/repro path, with one honest pre-release note for the rc period.
Upgrade notes
- Pre-releases are skipped by
@latest/default resolution: install the CLI withuv tool install --prerelease allow agents-remember-mcp, and pin the MCP server registration explicitly —uvx agents-remember-mcp==3.0.0rc2 --config <settings.json>. - Dashboard from anywhere under your workspace:
agents-remember dashboard(no flags), or one-shot without installing:uvx --from 'agents-remember-mcp==3.0.0rc2' agents-remember dashboard. - Opt into supervision by adding
"dashboard": {"autoStart": true}to your trusted MCP settings JSON; the next harness/MCP start brings the cockpit up and keeps it current.
Mission Control: the 3.0 cockpit ships from the MCP (rc1)
Agents Remember 3.0.0rc1 (pre-release)
The 3.0 arc, shipped: the working session is now an observable, steerable entity, and the mission-control browser dashboard is served directly from the MCP package — agents-remember dashboard starts the cockpit against your trusted settings. This release candidate spans everything since 2.9.3: the browser-dashboard substrate (#95), the post-landing task-system cleanup (#96), and the operations-integration series (#98). The rc tag means the cockpit surface is still settling toward the final 3.0.0 contract; the architecture beneath it is stable.
Highlights
- Mission-control cockpit (#2, #43): the Operations task tree with live lifecycle/phase/gate state, task-document reader, event river, engine room (provider health), hosted terminal chats — a near-read-only projection with durable gate responses, served by the MCP package and launchable via CLI.
- Observable session lifecycle: append-only
ar-observer-event/v1logs with trust provenance, ambient lifecycle signals (lifecycle_*tools), a pure projection reducer, durable approval gates, and NOTIFY-AND-CONTINUE turn ends. - Inspect–diff–converse integration (#98): File Viewer (Headless Tree + CodeMirror dual-pane), Change-Set Viewer (merge diffs with series / committed / working leaf views and master accumulation), and leaf-keyed sidebar chats — task highlights route straight into the adjacent leaf chat as a draft, never auto-submitted.
task_reopen: reopening a completed leaf reuses its exact leaf id — contract and doc reset to planning,worktree_startrecreates fresh off the current tips and restamps the doc's lifecycle. No more suffixed reopen forks;worktree_abandonends its anchored lifecycle and abandoned enclosures project terminal state.- Task documents are master/leaf-only (#96):
task_doccreate/replacerefusekind="light"and default kind context-awarely;remove_subtaskcompletes the CRUD; docs authored under a leaf contract are stamped with their lifecycle and enclosure refs. - Provider stability: every managed provider container is memory-capped (watchers 512m, falkordb/ollama 2g, runner 1g, postgres 512m) with self-recycling OOM behavior; the enriched
.cgcignore(defaults + repo.gitignore+ per-repo exclusions) now reaches the live CGC watch context; the committed dashboard bundle is excluded from watch/index work; a maintained CGC patch pops fired debounce timers (runner imagear2). - Hosted terminal hardening: wheel scrolling via tmux mouse mode (alternate-screen aware), boot-safe context paste with echo-confirmed retries, typing auto-exits copy-mode, and hosted chats can be reassigned between leaves with live catalog sync across open dashboards.
- Repo-wide quality gate: the pre-push hook (ruff + Pyright + full pytest + CRAP threshold) passes over the whole tree and gates every push.
Breaking and rc caveats
- Per the Stability promise this is the major bump that retires
kind="light"task-document authoring (existing light documents still load). - The cockpit's HTTP/SSE surface and dashboard internals may still change before 3.0.0 final.
Upgrade notes
- Pre-releases are skipped by
@latestresolvers: pin explicitly —uvx agents-remember-mcp==3.0.0rc1 --config <settings.json>for the MCP server. - Dashboard from the CLI:
uvx --from agents-remember-mcp==3.0.0rc1 agents-remember dashboard --config <settings.json>.
Resolve worktree context by name
Agents Remember 2.9.3
A small but recurring resolver fix: the coordination context now resolves a worktree's contract.md from its worktree_name alone, so tooling addressed by worktree name gets the full contract context instead of empty paths.
Highlights
resolve_context/resolve_coordination_contextnow populatecontract_path,code_worktree, andmemory_worktreefromworktree_namealone — matching whatworktree_status(task_name=…)already returned (#90).
Resolver
resolve_contractgained aworktree_namefallback with strict precedencecontract_path>task_name>worktree_name; an unmatched name returns empty rather than raising.- New
find_worktree_contracthelper enumeratestasks/<repo>/*/contract.mdand matches each contract's recordedcoordination.worktree_group, becauseworktree_namecannot be reversed totask_name(slugifypreserves both-and_). The lossless join is on the worktree-group folder name. find_worktree_contractis re-exported from thecoordination_context_resolverfacade alongsidefind_task_contract.
Tests
- Happy-path regression guard (fields non-null), graceful-empty unknown name,
task_name-over-worktree_nameprecedence, and afind_worktree_contractunit test.
Full changelog: mcp-v2.9.2...mcp-v2.9.3
Hermetic benchmark provider setup
Agents Remember 2.9.2
Running the benchmark suite no longer reaches into your live workspace or worktree providers. Benchmarks now build their own isolated index from their pinned fixture, so a benchmark run can't trigger a re-index storm across your real provider stacks.
Highlights
- Hermetic benchmark provider setup.
prepare_configured_providersno longer wires a seed source — a benchmark indexes its own fixture cold instead of seeding from (and starting) the live workspace provider backends. - Seed guard (defense-in-depth). The GrepAI and CodeGraphContext seed resolvers now refuse a
benchmark-scoped target, so a benchmark can never clone/seed from another stack even if a source is mis-wired. - Benchmarked agent uses its own MCP server.
benchmark_mcp_config_overridespoints the benchmarked Codex at the benchmark's own MCP configuration rather than inheriting the host workspace's.
Why it matters
Previously, starting the benchmark suite seeded its providers from the live workspace coordination root. Because every worktree shares the workspace's GrepAI workspace identity, that disturbance cascaded a full re-embed across main and every worktree at once — saturating CPU and making the machine unusable. Benchmarks are now isolated like a regular worktree.
Other
providers/status.pycompacts the CodeGraphContext watcherlastRefreshsummary.- Regression tests for the seed guard and hermetic prepare.
Changes: #89
Committed-Range Closeout & the Two-Turn Gate Protocol
Agents Remember 2.9.1
Closeout now verifies everything a task transports — not just what sits dirty in the working tree — closing the phantom-drift hole that merge-consolidation and pre-committed flows hit (#83). The lifecycle also gains the two-turn gate protocol so gate reports are never swallowed by approval prompts.
Highlights
- The closeout worklist covers the unverified committed range: paths changed between the last verified commit and the work branch HEAD, scoped by the recorded base so synced-in parallel work and previous closeouts never re-gate.
- Two-tier responsibility: already-onboarded artifacts (sidecars, route overviews, entity fingerprints) gate on every transported change regardless of author; committed-range paths without onboarding are reported as the non-blocking
unonboardedlist instead of forcing whole-repository onboarding. - Memory-side honesty: body gates baseline against the last verified memory commit instead of memory HEAD, so sidecar work committed before closeout classifies correctly (and early-committed new sidecars stop false-flagging as stale).
- Bounded tool payloads: lists that scale with transported history are exposed as count + capped sample (
PATH_SAMPLE_LIMIT= 30). - Two-turn gate protocol in the
l-01-session-job-lifecycleandc-12-closeoutskills: every gate is a report turn (full relay ending with a prose approval question) followed by an action turn — no question widget, mutating tool call, or permission prompt may ride the report turn.
Onboarding And Memory
worktree_closeout_preview/applystamp verification metadata to the existing HEAD when the tree is clean, so pre-committed work needs no artificial dirty state.- Preview and apply payloads surface
unonboarded(count + sample) for the commit-approval relay;changed_code_paths, the metadata-refresh view, the sidecar body gate, andrefreshed_onboardingadopt the bounded count + sample shape (blockingmissing/unsupportedlists stay full). - Gate error messages cap their path joins, so large consolidations cannot flood tool responses.
Upgrade Notes
- Closeout gate behavior widens: tasks carrying committed-but-unverified changes (merges, multi-slice series, cherry-picks) will now see those paths gated and stamped. Previously they passed silently — that was the bug.
- Consumers reading
changed_code_pathsor the body-gate lists from closeout payloads should expect{count, sample}objects instead of bare lists.
Worktree-Only Closeouts & Carryover Coverage
Agents Remember 2.9.0
Closeout is now worktree-only, branch-memory carryover covers every artifact kind, and the README's Status section now states where the project is and where it is going — with release history living here, in GitHub Releases.
⚠️ Breaking change — deliberate Stability exception
- The
direct_closeout_previewanddirect_closeout_applyMCP tools are removed (GitHub #62). Worktree-only closeout was the original design intent of the session lifecycle: every change to a managed repo — chat builds included — runs through a code + memory worktree, keeping external memory consistent and auditable. The direct path was a leftover from an incomplete cleanup. Migration:worktree_start→ work →worktree_closeout_preview/worktree_closeout_apply. - Under the Stability promise, tool removals belong to a major bump. This ships in a minor release as a recorded, deliberate exception: 3.0 is reserved for the dashboard/observability architecture named in the README's new Status section.
Highlights
- Worktree-only closeout doctrine (#62): tools, skills (
l-01-session-job-lifecycle,c-12-closeout), docs, and tests aligned; the MCP tool surface goes 37 → 36. - Carryover artifact coverage:
memory_carryover_plan/memory_carryover_applynow also carry the repo entity catalog and memory-only doc updates between memory branches. - Repository rename sweep: stale
agents-remember-mdreferences swept across docs and onboarding after the GitHub rename toagents-remember.
Docs And Public Surface
- The README Status section is rewritten from the per-release narrative chain (a de-facto changelog) into a two-paragraph current state + direction statement; per-release history now lives in GitHub Releases — this page is the canonical changelog.
system/git-workflow.md/system/tools.md(memory layer): the version-bump location count corrected to three (pyproject,SERVER_VERSION, README Status).
Lifecycle-Long Stale-Base Prevention & Mid-Task Worktree Sync
Agents Remember 2.8.0
Base-currency becomes a lifecycle-long guarantee (GitHub #54): every stage of a task — session start, worktree start, and mid-task — can now see when its view of the official line went stale, and pull the official line in safely instead of silently building on old code and memory.
Highlights
- Stale-base preflight:
worktree_startrefuses to base a new worktree on a source branch that is behind or diverged from its remote — withstale_base_choice="fast-forward"(the tool fast-forwards and proceeds) or"proceed-stale"recoveries. A stale base doesn't just produce wrong code: it silently defeated the provider seed fast-path into a multi-minute reindex. - New
worktree_synctool: pull a moved official line into a live worktree atomically — the new code tip must be ledger-mapped at the official memory tip, the code work branch merges (conflicts abort cleanly), parked memory fast-forwards, and the contract's recorded base pair advances with a durablesync_log. Sync early — before memories are written — and end-of-series integration staysff-onlywith no carryover reconciliation. - Memory main keeps up:
memory_carryover_applynow fast-forwards memorymainto the official checkout tip (memory_main_advance), so cycles run on non-main source branches no longer leave memorymainbehind indefinitely.
Freshness Checkpoints
context_packetgains an opt-ininclude_freshnesssection: upstream ahead/behind for the code and memory checkouts plusledgerMapsCodeHead, forming the lifecycle-start trust checkpoint (the l-01 skill opts in).worktree_statuscarries a fetch-freefreshnessblock (recorded base pair vs local source tips) with asyncHintrecommendingworktree_sync— network-free, so the background provider-setup polling loop stays fast.- A missing external-memory source branch is auto-created at the official memory tip using the code source branch name as template — one less manual step before
worktree_start.
Onboarding And Memory
- Runtime skills (l-01, c-09, c-11) teach the three checkpoints and the sync-early-before-memories doctrine.
- The
providers.contextfacade import-order fix (landed with 2.7.0) is now pinned by fresh-interpreter regression tests on Python 3.11. - Change-notification ping transport for the freshness payload is tracked as follow-up #60.