Phase 3 — A Memory Inside a Memory: the post-embed primitive
25 JUL AT 10:38 AM

Phase 3 — A Memory Inside a Memory: the post-embed primitive

0 LOVES 0 VIEWS
A post can embed another post, inline, as a first-class block — the compositional graph primitive. A live view (not a copy), depth-capped and length-governed, visibility-filtered so an embed never leaks a draft. It is the very block this cluster uses to fold the master into every phase. Shipped 2026-07-10.

"Is this the real Quaid, or the memory of him?" Phase 3 adds the compositional graph primitive: a post can embed another post, inline, as a first-class content block. Keep this distinct from the Assertion primitive (Phase 4): a post-embed is composition — it renders another post inside this one; an Assertion is a relational/temporal fact that doesn't render. One shows a memory; the other states one. Do not fold them together.

The load-bearing rule: storage is the graph; a render is a frozen view. An embed is a live view of the target — not a copy — so the two posts never diverge. This is the exact anti-pattern to merge-into-markdown, expressed as a block. And, fittingly, it is the very primitive this whole cluster leans on: every phase post folds the master in with one — including the block a little further down this page.

The o-block-post container — the one novel visual

Mockup of a post with an inline embedded post: a bordered container titled From the post White Russian, with a length clamp and a Read the full post link

The embed inline on kontent: a left rail marks another post's ground, the FROM THE POST eyebrow is both attribution and the exit, inner blocks render with their normal styling — but the body clamps at 24rem with a fade and a Show the rest expander (an embed is a live view, so the target's author can't make it run forever). Depth caps at one level: an embed-within-embed degrades to the compact link card.

Full lifecycle, not just render — five tracks

The first draft under-scoped this to schema + render; the re-audit widened it to the full lifecycle — five tracks, all shipped 2026-07-10:

  1. Schema + enum sweep — the block kind, the edge, the backref, an embed_mode (link vs embed); FK verified SET NULL; a 23-file bidirectional sweep; the graph read surface regenerated both directions.
  2. Invariants — the anti-divergence rule enforced.
  3. Kontent render — depth-capped, visibility-checked, orphan-tolerant, length-governed (the 24rem clamp + "Show the rest"), with the compact link-card mode; a HydrateEmbeddedPosts leak gate and an N+1 watch; 8 render tests including the leak test.
  4. Studio full CRUD — the post picker (server-side fuzzy + host/ancestor exclusion), the block editor, the display-mode toggle, the Referenced-by backlink card. The delete-warning modal was built then fully reverted the same day — deletion is schema-blocked instead.
  5. API v1 — create/update with a guard, and read serialization with a server-side composition-leak filter that fails closed, so the app (which consumes this) can never receive an embedded target the reader shouldn't see.

The mockups were rebuilt in full page chrome and operator-approved ("exactly what I wanted") after two design rounds — the compact link card and the length governor among them.

Total Recall — the AI Memory Layer (master)
Total Recall — the AI Memory Layer (master)
Jul 25, 2026 Total Recall
← Back to Total Recall