The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the True Memory Fragments listing page.
Code changed, but your AI coding agent still remembers the old call chain? TMF is source-bound code memory that flags stale claims and points back to current source.
Try demo · MCP setup · Evidence

30-second paced replay of real deterministic demo output, with labeled source excerpts—not an agent end-to-end test. Reread is requested, not executed.
Developer preview: enforcement depends on the host, configuration, and intercepted actions—not automatic blocking of all writes. Fresh does not mean correct; general token savings and production readiness are not established.
TMF’s core stale-context protection mechanism has been validated in the covered scenarios. Evaluation across more languages, repositories, and long-running production workflows is ongoing.
TMF is for:
TMF is not:
Fresh means the source binding still matches. Correctness still comes from source and validation.
The repository includes a Java qualification suite: 46/46 qualifiers and 731/731 checks. The historical unreleased audit baseline was 478/478 tests; it is not the current test total. See the version-pinned test verification for historical rc3 and master results, explicit skips, and the intermittent master failure recorded at that time. The rc6 release notes describe Java reflex and receiver-resolution fixes and distinguish source validation from publication evidence. These are source-analysis and regression-test results, not a claim of production readiness or a general Agent outcome. Middleware mechanics are validated, and stale-context safety has positive evidence in the GUAVA M10 pre-read experiment. Broader productivity, speed, token savings, and general bug-prevention claims remain unproven. See the authoritative evidence status before making broader claims.
That is the whole loop: TMF keeps claims bound to source, refuses to reuse stale context, and provides source anchors for rereading; guidance may include extra related or heuristic matches.
The GIF above replays output from scripts/demo_stale_gate.py at commit de0236a57939. It shows deterministic stale-claim omission and source fallback, not an agent obeying the reread signal or completing a task. The 30-second timing is presentation pacing, not a runtime benchmark.
From a source checkout (Python 3.10+ and Git required):
Already cloned? Run only the final command from the repository root. This demo imports the checkout's source; it is not a standalone PyPI wheel verification, and installing the package alone does not download the demo script.
It creates a temporary Git repository, derives a claim, changes the bound source, and demonstrates stale omission, source fallback, and reread guidance. It needs no model, network, Java parser, or pre-existing .tmf/ store.
Expected markers:
The demo stops at the reread requirement; it does not perform the subsequent reread or refresh.
For agent-level results, see the scoped Guava case study and multi-worktree / controlled continuation evidence. For implementation details, see the architecture.
TMF keeps a conservative code-memory graph. Claims are useful only when their source bindings still match the working tree.
This is intentionally conservative. Missing or stale memory falls back to source; it is never promoted into truth.
writes, publishes_to)ASYNC_RELATIONS: publishes_to, subscribes_to, publishes_type, listens_type)stop_reason valuesretrieve checks existing claims without mutating or re-deriving the store; refresh_path and warm perform explicit derivation/refresh operations.Release candidate: 0.1.0rc6. Includes Java reflex coverage, conservative typed/inherited receiver resolution, and resolution-dependency freshness. See the rc6 release notes.
For explicit multi-worktree binding and MCP configuration, use the pinned installation and MCP guide.
Install this preview (Python 3.10+):
See the rc6 release notes for version scope and validation boundaries.
Java parsing support is optional:
Development checkout:
Runtime dependencies are intentionally small. Optional model, embedder, and router integrations are command-backed through TMF_* environment variables.
Engine installed does not mean reflex armed. MCP registration, a warmed
index, and agent usage rules do not register Claude Code's PreToolUse hook.
After installing rc6 or an updated source checkout, run:
Absent or ineffective registration returns nonzero with
reflex NOT armed — operating as opt-in memory. This checks configuration,
not runtime firing. See reflex setup and diagnostics.
Doctor was introduced in rc5; rc6 also detects recognized Java-blind legacy hooks.
Existing reflex deployments must update the whole integration directory, not
just the engine wheel. Install the [java] extra in the hook interpreter,
then run a normal tmf warm --repo /absolute/path/to/task-repo to refresh older
Java derivations. Static doctor success is not proof of host dispatch.
Start with the 30-second stale-gate demo above. Share installation or reproduction feedback in Discussion #1.
For Linux x86_64 / CPython 3.12 source checkouts, the repository includes an offline verifier for Java step0 review:
Expected success marker:
TMF includes a reflex hook integration that gives AI coding agents a biological-style reflex: when an agent is about to act on code understanding while that code has changed, the supported hook can request a stop and source reread. Enforcement depends on host interception, configuration and coverage.
This is not a code memory cache — it's a reflex arc that intercepts agent tool calls before execution.
fn_hash freshness (source-bound change detection; no fixed latency guarantee)before_tool_call hook / Claude Code PreToolUse harness (supported intercepted actions only)Four git hooks automatically generate function-level invalidation manifests after code changes:
.git/hooks/post-commit — after local commits.git/hooks/post-merge — after git pull.git/hooks/post-checkout — after branch switches.git/hooks/post-rewrite — after rebase/amendThese hooks call integrations/reflex/scripts/git_calibrate.py, which compares baseline_rev → HEAD Python function signature changes and outputs structured invalidation manifests.
The tmf-reflex OpenClaw plugin intercepts agent tool calls:
requireApproval with exact changed function namesintegrations/reflex/scripts/local_warm.py to re-warm that one fileOn new session start, the plugin reads unconsumed invalidation manifests and injects changed / deleted symbols as "pre-alert" context, preventing agents from relying on stale memory.
freshness / derive)Reflex integration code lives in integrations/reflex/. See that directory's README.md and DESIGN.md for:
openclaw-plugin/)git-hooks/)examples/)tests/)Search terms this project is intended to match include AI coding agent memory, stale context prevention, source-aware code memory, code graph for LLM agents, Claude Code memory, and cross-session code understanding. These describe the user problem; they are not claims that every integration is already production-ready.
The repository description and external launch materials should use the same vocabulary, link to a reproducible demo, and distinguish validated mechanics from still-open productivity claims.
MIT
python3 scripts/demo_stale_gate.py (recording: recordings/stale-gate.cast)