Problem
ADR 0014's rule — every surface that re-presents stored memory must neutralise the leaves and frame the whole — is enforced per caller, not at a seam. Three output surfaces each hand-wire frame(neutralise(...)): the snapshot assembly (snapshot.py), recall's rendering (RecallResult.rendered, recall.py) and the management surface's Concept printing (manage.py). A fourth surface that displays stored memory (say, a future mimer-manage show <slug>) must re-derive the rule or it silently re-presents memory as instructions — the same smeared-invariant shape the write seam had before the redaction-at-the-seam work, and the Visible-seam work for enumeration, in this series.
This came out of the 2026-07-13 architecture review ("Noted, not carded": framing/neutralise per-surface). It was deliberately left uncarded — smaller stakes than its siblings — and no interface has been designed.
What is needed before this is ready for an agent
A design session settling:
- The interface shape — a
present_memory(text) -> str helper, or something surface-aware; whether the frame's citation/age annotations vary per surface (snapshot vs recall vs management listing) and how that variation enters the interface without widening it back into per-caller assembly.
- Whether ingest-side neutralisation joins the seam — the digest neutralises on the way in (digest.py); that call serves a different guarantee and probably stays, but the design should say so explicitly.
- The ADR 0014 constraint — the seam must make bypass impossible (or loudly greppable), not merely centralise the calls into one skippable helper; the sibling ADR 0020 (redaction at the write seam) is the pattern to mirror, including keeping any defence-in-depth.
- Whether a grep/source-scan guard (like the write-seam's living test) is proportionate here.
Acceptance criteria (for the design session, not the build)
Blocked by
None logically — but not ready for an agent until the design session above has settled the interface.
Problem
ADR 0014's rule — every surface that re-presents stored memory must
neutralisethe leaves andframethe whole — is enforced per caller, not at a seam. Three output surfaces each hand-wireframe(neutralise(...)): the snapshot assembly (snapshot.py), recall's rendering (RecallResult.rendered, recall.py) and the management surface's Concept printing (manage.py). A fourth surface that displays stored memory (say, a futuremimer-manage show <slug>) must re-derive the rule or it silently re-presents memory as instructions — the same smeared-invariant shape the write seam had before the redaction-at-the-seam work, and the Visible-seam work for enumeration, in this series.This came out of the 2026-07-13 architecture review ("Noted, not carded": framing/neutralise per-surface). It was deliberately left uncarded — smaller stakes than its siblings — and no interface has been designed.
What is needed before this is ready for an agent
A design session settling:
present_memory(text) -> strhelper, or something surface-aware; whether the frame's citation/age annotations vary per surface (snapshot vs recall vs management listing) and how that variation enters the interface without widening it back into per-caller assembly.Acceptance criteria (for the design session, not the build)
Blocked by
None logically — but not ready for an agent until the design session above has settled the interface.