3.3 KiB
Executable File
Hidden Memory Architecture
The hidden ecosystem has one friendly source of truth:
assets/content/hidden-details.jsoninorg_web
The live site still consumes generated constants in:
assets/scripts/hidden-details.jsinorg_web
Canonical Content
The old type field is now treated as the runtime delivery kind. It answers: where does this need to go in the existing JavaScript arrays?
The newer contentClass field answers: what is this thing conceptually?
Use these classes:
fragment: tiny reusable language, such as tooltips, quotes, whispers, loading lines, and small dialogue.memory: a richer emotional moment or observation that can stand as an observatory node.story material: dialogue or sequence material that is primarily useful inside a story route.interaction: a trigger, route, keyboard secret, search response, seasonal event, or play-system behavior.lore: world material such as dreams, terminal logs, guestbook entries, or hidden archive objects.system layer: structural observatory material, such as the layer guide.
Stories
Stories are curated routes. They should reference entries by id through nodes.
Do not duplicate paragraphs inside a story when an existing fragment or memory can be referenced. A story gives order, title, tone, unlock conditions, and emotional shape.
Surfaces
The surfaces field says where an entry is reusable: tooltip, quote, story, observatory, search, keyboard, play, dream, temporal, and similar surfaces.
A tooltip fragment can appear in the footer without becoming a full story node. A memory can appear in the observatory and in a story without being forced into a rotating quote. An interaction can trigger a hidden route without pretending to be a narrative scene.
Observatory Roles
Use observatoryRole to keep rendering calm:
ambient: small lights and flavor, usually fragments.node: substantial emotional points, usually memories or story material.event: triggered behavior, routes, search, keyboard, seasonal, and play content.guide: layer/system material.
The observatory should render stories as the main territories, then reveal entries inside them. Zoomed-out views should favor routes and clusters; detailed views can show individual nodes, ambient fragments, and triggered events.
Examples
lima left this page a little steadier than she found it.
- Class:
fragment - Runtime kind:
hidden tooltip - Surfaces:
tooltip - Observatory role:
ambient
July 2022, on the way to uni induction, lima pops into my life
- Class:
memory - Runtime kind:
journal entry - Surfaces:
story,observatory - Observatory role:
node
search query "lima" opens a hidden route
- Class:
interaction - Runtime kind:
search route - Surfaces:
search,hidden route - Observatory role:
event
The story of love between two souls
- Class: story record, not an entry class
- References: ordered entry ids in
nodes - Purpose: emotional route, not duplicated content
Authoring Rule
Write the smallest canonical thing that is emotionally honest.
If it is one line, make it a fragment. If it is a moment with weight, make it a memory. If it happens because of a trigger, make it an interaction. If it is a route through existing things, make it a story.