Development record
memory-unification
specclosedspc-2609211905174684
Summary
The design record for itd-36 as delivered: /abcd:memory with ingest,
ask and lint over the per-project store at .abcd/memory/, shipped in
v0.1.0 (internal/core/memory, commands/memory.md). Written on
2026-09-21 to close a record that shipped without one.
Scope, as delivered
memory ingest <path-or-url> [--keep-original]: reads a source, distils it into typed pages withsource.class, citation and licence, discards the original by default and stores it undersources/by hash with the flag; the URL fetch masks its origin in every failure message.memory ask <question>: answers from the store with citations by class, citation and source hash; term-safe over an empty question.memory lint: MQ001 (per-page quotation span), MQ002 (cumulative coverage per source, refusing further quotation), MQ003, MS001 (advisory: single-class synthesis), MS002 (cross-class synthesis without a weighting note blocks), ML001 (undeclared licence blocks;unknownis explicit).- The bare render: store presence, last ingest, contradictions and per-source headroom.
- Legacy pages: pre-existing flat-named pages are not renamed; the
index is generated over them and they read as
session_memory.
Out of scope, captured as issues on 2026-09-21
- The dredge synthesiser's output landing as
dredge_synthesispages (itd-25 is a draft). - One registry entry shared with the code-vendoring path (itd-26 is a draft).
- The lifeboat's restrictive-licence gate refusing to surface a kept original.
How the criteria are satisfied
Criteria 1, 2, 4 to 9 and 13 by scope 1 to 5 above as shipped; criteria 3, 10, 11 and 12 are the out-of-scope items, each an issue in the ledger (iss-2609211905340006, iss-2609211905346507, iss-2609211905347458).
Frontmatter
| id | spc-2609211905174684 |
|---|---|
| type | spec |
| lifecycle | closed |
.abcd/development/specs/closed/spc-2609211905174684-memory-unification.md
open on GitHub ↗ · commit history ↗
References1
- itd-36Knowledge That Compounds, Not Knowledge That Re-Derivesimplements
mentions6
- iss-2609211905340006Dredge synthesis output lands in the memory store as its own source class. itd-36 (closed as delivered on 2026-09-21) asked that the dredge synthesiser (itd-25, still a draft) write its synthesised entries to .abcd/memory/<type>_<domain>_<slug>.md with source.class dredge_synthesis and the per-run provenance the lint reads; dredge does not exist yet, so the memory store has no such class and the lint has no rule for it. Wanted, when itd-25 is planned: the class in the closed enum, the writer in the dredge path, and MS001/MS002 reading it as a cross-class input.
- iss-2609211905346507One registry entry for a source ingested as documentation and vendored as code. itd-36 (closed as delivered on 2026-09-21) asked that the same source content ingested by memory ingest and by the code-vendoring path (itd-26, loot, still a draft) share one provenance registry entry with an ingest count of two; the vendoring path does not exist, so the registry has one writer and no count. Wanted, when itd-26 is planned: the registry keyed by source hash across both paths, the count, and one licence declaration read by both.
- iss-2609211905347458The lifeboat restrictive-licence gate does not read a kept memory original. itd-36 (closed as delivered on 2026-09-21) asked that disembark refuse to surface .abcd/memory/sources/<sha256>.<ext> (an original kept with --keep-original) unless the launch allowlist names it, and refuse a gated payload carrying a GPL-3.0 citation when the project publishes as MIT; the memory pages carry source.licence today, and disembark packs the record families by path without reading that field. Wanted: the disembark gate reads source.licence on memory pages and the kept originals, refuses a restrictive licence against the project licence, and names the allowlist that admits one.
- iss-2609300025372991Two shipped intents' Implementing specs sections misstate where their predecessor-store spec ids stand: itd-36 says its frontmatter spec_id records spc-38 as the primary delivering spec, while the frontmatter records spc-2609211905174684 and live spc-38 and spc-39 are itd-136's record explorer and itd-137's relationship chart; itd-4 says its spc-20 to spc-23 do not exist in the native spec store, while the live store holds all four as other specs (banlist, fresh install, stale-binary warning, tier placement). Found while qualifying predecessor-store citations for iss-2609290448510918.
- itd-25Patterns Surface Themselves
- itd-26Raid the Open Ocean, Bring the Cargo Home with Papers