When Notes Become Memory: Building Systems That Transclude Context into Conversation
Hatched by Gleb Sokolov
Apr 16, 2026
9 min read
4 views
82%
What if the difference between a useful chat and a forgetful one was not the intelligence of the model, but the way we compose and reuse context? Imagine your notes as addressable building blocks that a conversation can fetch, quote, and stitch together on demand. The result is not only better answers, but a living dialogue that inherits the structure of your thinking.
The problem: fractured context and the illusion of continuity
We live in two common modes of knowledge work at once: real time conversation with models, and slow accretion of structured notes. Chat sessions accumulate ephemeral history that helps short term coherence, then evaporate. Notes collect polished ideas, but they are static and siloed. The tension is simple: conversations need slices of long term knowledge, and notes want to be composable parts of ongoing conversations.
This is not merely a tooling problem. It is an epistemic gap. When a chat cannot reliably cite or reuse an exact section of your notes, you lose provenance, you repeat the same context reconstruction, and you pay cognitive tax retrieving the right facts. When notes cannot be referenced as atomic, addressable units, you rebuild arguments from memory instead of composing them.
The two mechanisms that solve aspects of this are deceptively similar: one stores message history keyed to a session id, and the other transcludes sections of notes into other notes. Both practices enable reuse of context by reference rather than by duplication. Seeing them as instances of the same design pattern opens new possibilities.
The connective insight: context transclusion as a single design principle
Call the pattern context transclusion. At its core it is the practice of treating pieces of knowledge as addressable objects, and composing them into larger contexts at the moment of use. A chat system with session aware history is doing context transclusion for messages. An outliner that transcludes a block of text into another note is doing context transclusion for ideas.
Why does this matter? Because once you accept that knowledge can be assembled from addressable blocks, design choices clarify. You stop saving entire conversations or duplicating entire notes. Instead you keep a canonical unit, give it a persistent identifier, and compose up. That shift changes how you think about memory, authorship, versioning, and privacy.
Consider a concrete example: a chat integration that records messages against a session identifier in a database. Each saved message is a discrete unit with metadata. Separately, picture a note taking system where you include a small item from one note into another by reference. The two spaces converge when you allow the chat to fetch specific note blocks as part of the conversation history, and when you allow note blocks to reference the chat exchanges that produced them.
That convergence unlocks four things at once: provenance, reuse, incremental editing, and clear ownership of truth. The chat need not memorize your policy documents. The notes need not embed entire chat logs. Instead each can request the precise units required to answer a question.
Building an Addressable Context Architecture
If context transclusion is the guiding idea, what does a practical architecture look like? Below is a minimal framework that maps how to build systems which let conversations and notes share and reuse context reliably.
Core components
-
Blocks: Small, addressable pieces of content. A block can be a message, a paragraph, a bullet item, or a code snippet. Each block gets a unique id and metadata like author, timestamp, and tags. Keep blocks focused and claim they are the unit of truth.
-
Index: Searchable metadata store that points at blocks. The index supports queries by tags, recency, semantic similarity, or explicit ids. It answers the question: which blocks are candidates to include right now?
-
Sessions: Conversation identities that collect pointers to blocks the model has seen. A session id is how a chat maintains continuity. Sessions can persist across time, and each session stores a list of block ids rather than raw text when possible.
-
Composition layer: The logic that assembles blocks into a contextual payload for the model. Composition decides order, what to transclude inline, and what to keep as a reference. It enforces size limits and freshness rules.
-
Guardrails: Policies that control access, redaction, and version resolution. Guardrails answer who can include what, whether to surface private blocks, and how to handle out of date blocks.
A typical flow
- A user asks a question in a chat tied to session_id.
- The session composition logic queries the index for candidate blocks, including prior chat messages and relevant note blocks.
- The composition layer selects a small set of blocks, orders them, and either inlines their text or passes pointers with retrieval instructions.
- The model receives the assembled context and produces an answer. The answer is stored as a new block with metadata and appended to the session as a pointer.
- If the user decides a piece of the answer should become canonical knowledge, they promote the block to a note, assign it an id, and add tags for future retrieval.
This flow has a virtue: context travels by reference. You fetch what you need at use time and keep a single source for each atomic idea.
Design principles and trade offs
Turning this architecture into a practical system requires clear design decisions. Below are six principles that mediate the trade offs you will face.
1. Favor small atomic blocks over monoliths
Small blocks are easier to retrieve, test, and reuse. They reduce duplication and allow fine grain provenance. But over fragmentation can harm readability. The sweet spot is blocks that can be read independently and still convey a single idea.
2. Separate identity from content
A block id is persistent even as content evolves. When you need an immutable snapshot, store a versioned copy. When you need the latest truth, follow the canonical id. This gives you flexibility to cite and to revise.
3. Prefer pointers where possible, inline where necessary
Pointers keep payloads small and authoritative. Inline text avoids network round trips and improves latency. Choose pointers for background material and inline for immediate context that is small.
4. Make freshness explicit
Include metadata that indicates when a block was last validated and by whom. Let composition logic prefer recent validations for time sensitive queries, and prefer canonical tags for stable facts.
5. Gate sensitive blocks with policy checks
Not every chat participant should be able to include every block. Enforce ACLs at composition time and record redaction decisions. Policies can be coarse grained by tag or fine grained by block id.
6. Treat conversations as writable provenance
Chats not only consume knowledge. They produce it. Decide how and when to promote chat outputs into canonical blocks. Provide easy pathways for users to promote, annotate, or prune results.
Example patterns you can implement tomorrow
Here are three concrete patterns that bring the architecture into a practical workflow. Each pattern maps a common need to an explicit strategy.
Pattern one: session anchored memory
- Persist messages as blocks keyed to session_id. Each message stores speaker, timestamp, and semantic tags.
- When resuming a session, rehydrate the chat by referencing block ids, not by pasting full text. Only inline the last few messages for quick coherence.
- To make the session portable, offer an export that converts pointers to inline text plus provenance links.
Pattern two: note to chat transclusion
- Make each note section an addressable block with a stable id. Use short sections that answer one question or capture one decision.
- When the chat needs a policy or a checklist, the composition layer finds the most relevant block ids and transcludes them into the prompt, either inline or as a footnote style citation for the model to inspect.
- If the model suggests an edit, present suggested text back into the note as a new block for human review. The human can merge the suggested block into the canonical block or keep it separate.
Pattern three: curated canonical pulse
- Periodically run a validation job that tests the most referenced blocks against current reality. For example, check links, verify numbers, or requery external APIs.
- Flag blocks as stale if they fail checks, and add an instruction that composition logic should avoid stale blocks unless explicitly requested.
Concrete analogy to make it stick
Think of your knowledge system as a workshop full of labeled parts. Blocks are the parts, the index is the shelf catalog, sessions are the assembly bench, and the composition layer is the hands that pick parts for a build. When you build with labeled parts, you do not recast raw material every time. You assemble. The parts remain on the shelf, improved over time, and every finished product can cite which parts it used.
That is the difference between copying a whole manual into your workbench, and grabbing a handful of screws and a hinge that you know will fit. Transclusion is using the hinge by reference instead of recopying it.
Knowledge is more powerful when it is addressable. When you can point at a single authoritative block, you free the system to compose and the human to decide what to promote.
Key Takeaways
- Treat ideas as addressable blocks with persistent ids and metadata. Keep blocks focused and composable.
- Use session ids to anchor conversations, and store pointers to blocks in a session rather than pasting full history every time.
- Compose context at use time: prefer pointers to inline text for background, and inline only what the model needs immediately.
- Implement explicit freshness and policy checks so composition logic can prefer validated, permitted blocks.
- Create a simple promotion workflow so chat outputs can become canonical blocks with human review.
A final reframing
Most improvements in conversational intelligence will come not from bigger models alone, but from smarter context plumbing. When you stop thinking of notes as files and chats as ephemeral streams, and start treating both as networks of addressable blocks, new capabilities emerge. You get provenance without duplication, privacy without paralysis, and a reuse economy of knowledge where composition is cheap and truth is traceable.
Start small: make three to five of your most used notes addressable blocks, wire them into one active session, and watch how much clearer your conversations become when they can quote your thinking back to you. The real power is not only that the system remembers, but that your system remembers the exact parts of your mind that matter.
That change transforms tools from passive archives into active collaborators that can fetch, quote, and build on the knowledge you already own. The future of thinking is less about raw memory and more about intentional composition, and transclusion is the design principle that makes that future practical.
Sources
Hatch New Ideas with Glasp AI 🐣
Glasp AI allows you to hatch new ideas based on your curated content. Let's curate and create with Glasp AI :)
Start Hatching 🐣