Randomized trial evaluates encoding efficacy in coding agents, suggesting improvements for memory tagging systems.
MemForge v0.12.0: portable, agent-neutral persistent memory format for coding agents. This deposit anchors the v0.12.0 ship state (reference-CLI package 0.12.0; spec snapshot spec/VERSION 0.8.0, unchanged from v0.11.0). The bundle ships the spec snapshot plus the full reference-CLI artifacts (CHANGELOG, README, license, examples/). What v0.12.0 ships Two new audit checks for defect classes that had accumulated silently, both from auditing an 842-memory two-root corpus. Both share a shape: a real defect that every existing check passed over, so it grew unopposed until something looked for it directly. No format change and no folder migration. memory-audit now reports a memory carrying no topic tag. The tags field is load-bearing twice: recall folds it into the trigger set alongside name and description, and memory-index-gen derives the MEMORY.md topic section from it. An untagged memory is therefore both harder for recall to surface and lands in a flat no-topic dump. Nothing detected it, because the frontmatter backfill infers a topic only from a named subfolder or from a filename matching its inline known-topics set, so a top-level file with an unrecognized name gets nothing, silently. 59 files had accumulated that way, putting 46 of 87 pointers in one root into the no-topic section. memory-audit now reports top-level frontmatter that disagrees with a nested metadata block, naming each diverging field and both values. Some agent harnesses write their own canonical shape, nesting the prior frontmatter under a metadata key and synthesizing fresh top-level fields. Nothing is lost, but every MemForge tool reads only the top level, so the nested copy becomes invisible truth and the two drift apart. Measured: 460 of 842 files carried the nested block, and 74 of those had at least one identity or lifecycle field disagreeing, while strict mode exited 0 on all of it. Why these report rather than fail Both are health warnings, not integrity violations. The files are well-formed and parse. An untagged memory is still reachable, just harder to find; a divergent one still loads. More to the point, a corpus that adopted a harness shape can carry many divergences through no fault of its own, and a check that fails strict mode on that becomes a flag operators switch off. A disabled check protects nothing. Neither check repairs what it finds: choosing a topic is a semantic call and a wrong topic is worse than none, and reconciling a divergence means deciding which level is authoritative, which is the operator's call rather than a default. Both report and stop. Calibration Fire rates were measured against the real corpus before shipping rather than assumed. Missing-topic fires on 15 of 842 files (1.8%); divergence on 74 of 842 (8.8%). The prior release disabled a warning precisely because it fired on 101 of 101 files, and the same standard was applied here. Review process This release shipped to the package index before its review ran, and the review was carried out afterward against the shipped diff. Recording that plainly, because a review note that does not say when it ran implies a gate that held. The tests and continuous integration did run before the tag. The retroactive review, an architect voice and an adversarial critic from different model families plus an independent judge pass, returned no blocking and no major findings, so no patch release was warranted; three minor findings ride along in the next scheduled release. One reviewer finding was refuted with evidence: the case sensitivity of the topic prefix is correct, because every consumer matches the same lowercase literal, and relaxing it would convert a true positive into a false negative. Testing 17 new tests across two new test modules, each verified to fail on the unfixed code. Full suite: 627 passed, 37 skipped. Bundle contents SPEC.md (spec_version 0.8.0) VERSION taxonomy.yaml known-limitations.md (living-doc snapshot at v0.12.0) CHANGELOG.md (full history through v0.12.0) README.md LICENSE (Apache-2.0) examples/ drop-in scripts (git hooks, watcher scripts, recall synonyms, WebSocket scaffold) Bundle SHA-256 (v0.12.0-bundle.zip): a15de8ccff4533b3e4ceeb8d81e622cc484dd11b356f56c4981d34e8658b5a4c PyPI artifact SHA-256: wheel 6b49eed06e377e2bca4f0e4143849646ffa26a277b739ff7d784b635607c88ba; sdist 92f7e183419b581d16e4f286706596883821d67e6ab9ffe70982a180175bae3d Defensive-publication context This is one of three timestamped anchors for the MemForge spec text and reference tooling (Channel 1: Software Heritage SWHID; Channel 2: this Zenodo deposit; Channel 3: GitHub release tags). The concept DOI 10.5281/zenodo.20113963 always resolves to the latest archived version. This version mints a fresh Zenodo version under that concept record. Software Heritage identifiers for this release: release: swh:1:rel:58938f273287e80e7151b2f76475202e79fd8320 revision: swh:1:rev:5635ee46a621e1e8c977a5628bce2873dd32f88a snapshot: swh:1:snp:71b599a917d6389d3d1a8db469851fb2ffb56ec4 Install pip install ildan-memforge Source code plus spec history https://github.com/ildan-ai/memforge https://github.com/ildan-ai/memforge/releases/tag/v0.12.0 License: Apache-2.0
No takes yet. Share an insight, caveat, or question.
Mike Hiltz (2026) studied this question.
Synapse has enriched 5 closely related papers on similar clinical questions. Consider them for comparative context: