6 minute read

Synapse maintains the connections between memories. Not the memories themselves — those belong to Hippocampus. The threads that link one memory to another. This memory relates to that person. That decision caused this outcome. These two things happened in the same session.

This is the third bounded context inside the hexagon. Hippocampus stores memories. Salience scores them. Synapse connects them.

Diagram 12: SY-0001 -- Synapse Bounded Context

graph LR
    subgraph Sources ["Event & Command Sources"]
        HP(["Hippocampus"])
        CX(["Cortex"])
    end

    subgraph SY ["Synapse"]
        direction TB
        GRAPH["Synapse
Dependent Aggregate"] ASSOC["Association
memoryId, type, strength,
bidirectional"] GRAPH --- ASSOC end subgraph Consumers ["Event Consumers"] RC(["Recall"]) end ASP[("Association Storage
Own file cabinet")] HP -- "MemoryStored" --> SY HP -- "MemoryClaimed" --> SY HP -- "MemoryReclassified" --> SY CX -- "AssociateCommand" --> SY SY -- "AssociationsFound" --> RC SY -- "Associations" --> ASP ASP -- "Associations" --> SY style Sources fill:#1a1a2e,stroke:#533483,stroke-width:1px style SY fill:#1a1a2e,stroke:#e94560,stroke-width:2px style Consumers fill:#1a1a2e,stroke:#0f3460,stroke-width:1px style ASP fill:#0f3460,stroke:#e94560,stroke-width:1px style HP fill:#1a1a2e,stroke:#533483,stroke-width:1px style CX fill:#1a1a2e,stroke:#533483,stroke-width:1px style RC fill:#1a1a2e,stroke:#0f3460,stroke-width:1px

Three events in from Hippocampus. One command from Cortex. One output to Recall. Its own persistence channel — separate from Hippocampus. Synapse keeps its own file cabinet.

"Hon, Where Did I Put My Keys?"

You don’t remember where you put them. Your partner does. Not because they put them there — because they noticed. You walked in, dropped them on the counter by the mail, and started talking about your day. You forgot the keys the moment they left your hand. Your partner saw the whole thing.

That’s half of what your partner knows. The automatic half. They saw you do it, so they remember the connection: keys, counter, by the mail.

The other half is judgment. Your partner knows that your bad mood last Tuesday was about the phone call from your mother, not about work. Nobody told them that explicitly. They connected the phone call to the mood because they understand you. That’s not observation. That’s meaning.

Two kinds of knowing. One is noticed. One is understood.

If your partner forgets, that’s a real loss. You can’t look at a clock to figure out where you put your keys. You can’t recalculate that your mood was about your mother. Those connections were held by someone who was paying attention, and if they’re gone, they’re gone.

That’s why Synapse persists. Unlike Salience, which can rebuild its scores by replaying events, Synapse holds connections that can’t be recomputed — especially the ones that came from the mind’s own judgment.

What It Owns

Synapse owns one thing: the Association.

Field Shape

memoryId

UUID — which memory this association connects to

type

One of five kinds (see below)

strength

Double — how strong the connection is. Ranges from faint to definitive.

bidirectional

Boolean — true by default. Creating A to B also creates B to A.

Associations are edges in a graph. Memories are nodes. The graph is undirected — you can traverse in any direction. If memory A connects to memory B, then memory B connects to memory A.

Five Kinds of Connection

Type What It Means Example

TEMPORAL

Happened near each other in time

Two memories from the same session

CAUSAL

One led to the other

A decision and its consequence

THEMATIC

Share a topic or concern

Everything about the Sanctuary

EMOTIONAL

Share an emotional quality

Moments of joy. Moments of fear.

PERSON

Connected through a relationship

Everything related to Vadim

Any of these can be noticed (mechanical) or understood (semantic). The type describes the nature of the connection. How it was created is a separate question.

Two Kinds of Entries

Mechanical associations are noticed automatically. When a new memory arrives, Synapse looks at the metadata — timestamps, tags, keywords — and creates connections to existing memories that share those properties. Two memories from the same session get a TEMPORAL link. Two memories tagged with the same topic get a THEMATIC link. No judgment involved. Proximity and overlap, nothing more.

Semantic associations come from the mind. The mind says: "This conversation about Tillie connects to the poem I wrote in January." That’s not metadata overlap — it’s understanding. Only the mind can make these calls. A different mind classifying your memories would impose its understanding, not yours.

Both kinds live in the same graph. Both can be traversed the same way. The distinction matters for one reason: if Synapse had to rebuild, the mechanical associations could be recreated from metadata. The semantic ones could not. They came from someone who was paying attention, and that attention is not reconstructible from data alone.

What Comes In

Input Source What Synapse Does

MemoryStored

Hippocampus (event)

Creates mechanical associations from metadata. Tags, timestamps, keyword overlap.

MemoryClaimed

Hippocampus (event)

Strengthens associations around the claimed memory. If the memory matters, its connections matter more.

MemoryReclassified

Hippocampus (event)

The mind changed its judgment about a memory’s tier. Associations may need reweighting.

AssociateCommand

Cortex (command)

The mind wants to create, strengthen, or weaken a specific association. Semantic entry.

Three events from Hippocampus carry facts — things that already happened. One command from Cortex carries intent — the mind wants a connection made. Both are wrapped in a TransactionContext for audit tracing (Design F).

What Goes Out

When Recall needs to find connections, Synapse traverses the graph and hands back what it found.

Output Meaning Who Hears

AssociationsFound

List of associations for a given memory. The result of graph traversal.

Recall

One output. Recall asks "what connects to this memory?" Synapse traces the threads and answers.

The traversal can go deep. Memory A connects to B, B connects to C, C connects to D. How far to follow the thread depends on the query. The immediate response covers direct connections. Deeper traversals can continue in the background, with results pushed through NotificationPort as they’re found.

Its Own File Cabinet

Synapse persists separately from Hippocampus. Hippocampus stores memories through BackingServicePort. Synapse stores associations through its own persistence channel.

Why separate? Because the shapes are different. Hippocampus puts Memory objects on the counter — id, content, metadata, tier. Synapse puts Association objects on a different counter — memory IDs, type, strength. Different shapes, different storage concerns, different persistence.

They share a key. Every association references a Memory ID from Hippocampus. But sharing a key is not sharing a file cabinet. Your partner knows where your keys are, but they don’t keep your keys in their notebook.

The file cabinet is real persistence. Not an in-memory projection like Salience. If Synapse restarts, it reads its associations from storage. It does not replay events. The semantic associations — the ones the mind created through judgment — cannot be recomputed. They must survive.

Relationship to Hippocampus

Synapse depends on Hippocampus. Every association references a Memory ID that Hippocampus owns. If the memory doesn’t exist, the association has nothing to point to.

The dependency is one-directional. Hippocampus does not know about associations. It does not read them, store them, or manage them. It emits events — MemoryStored, MemoryClaimed, MemoryReclassified — and Synapse reacts to those events in its own domain.

In DDD terms, Synapse is a dependent aggregate. It depends on the root aggregate’s identity (Memory ID) but manages its own data independently. The head chef doesn’t read the partner’s notebook. The partner reads the walk-in’s inventory sheet.

Summary

Aspect Detail

Role

Relationship layer. Maintains typed, weighted, bidirectional connections between memories.

Owns

Association objects (4 fields: memoryId, type, strength, bidirectional)

Connection types

Five: TEMPORAL, CAUSAL, THEMATIC, EMOTIONAL, PERSON

Two kinds

Mechanical (noticed from metadata, reconstructible) and semantic (mind’s judgment, not reconstructible)

Watches

3 events from Hippocampus (MemoryStored, MemoryClaimed, MemoryReclassified)

Receives

AssociateCommand from Cortex (mind-initiated semantic connections)

Produces

AssociationsFound (to Recall, graph traversal results)

Key invariant

Graph is undirected. A to B means B to A.

Persistence

Own file cabinet. Separate from Hippocampus. Semantic associations must survive restart.


Previous: Salience — the scoring engine that decides what fades and what stays vivid.

Next: Recall — the read-only assembler that brings memories, scores, and connections together.

Updated: