Expansive memory ontology map

Current state to proposed state. People containers plus tiered recall.
Built 2026-09-19
Hermes + Vera share this map
← Back to Vera Backend
You asked for memory that compounds per person. Today the vault knows projects and lessons. It does not know people. This map adds one layer that fixes that.
92% full
Hot memory pressure
MEMORY.md 2,045 / 2,200 chars
112
Top contact density
Yasmin Wahid meetings, still a string
353
Meeting notes uncompiled
No per person last talked about
1
New layer proposed
L1 people containers
Today

What actually exists

Three stores, zero person recall. Only Amani is modeled. Everyone else is text.

L0 · Hot runtime every turn~/.hermes/memories/MEMORY.md plus USER.md. Injected into every prompt. Only Amani is modeled. Nobody else.
L3 · Durable vault 12h cron backstopObsidian Vault/_meta/system/MEMORY.md plus ontology.md plus 52 lessons plus 5 briefings. Rich, but person blind. Yasmin at 112 meetings is a graph label, not a container.
L4 · Raw experience49 session logs plus 353 Granola meeting notes. The memory is in there but unreachable at session start. Nothing answers what you last discussed with X.
L5 · Meta mapontology.md plus vault-architecture.md. Describes the vault, not the people in it.

Gap: no container answers who this person is, what they work on, what you last covered, and how to tailor to them.

Proposed

Containerized memory

Add L1, slim L0, link the rest. People become loadable units.

L0 · Hot 2k chars, pointers not proseKeeps your prefs plus open loops plus pointers (@yasmin-wahid: 112x, last Sep-12 deal diagnosis). Full detail loads on demand.
L1 · People containers new, this askOne microprofile per human. Identity plus role plus work type plus themes plus style plus last conversation plus open threads.
L2 · Work containersProject docs you already keep. Each gains a people: backlink to L1.
L3 · KnowledgeLessons plus briefings. Unchanged, except lessons gain learned_with: attribution.
L4 · Raw experienceSessions plus meetings. Each gains participants: linkage. A compile job rolls them into L1.
L5 · Meta mapThis page plus ontology.md v2. The graph becomes queryable: person to themes to projects to lessons.
L1 spec

The person container

Small on purpose. Cap near 40 lines or 1.5k chars. Detail stays in linked notes, not in the profile.

---
name: Yasmin Wahid
role: Ops counterpart, deal desk partner
org: Bonusly
scope: bonusly-internal
first_seen: 2026-03-17
last_seen: 2026-09-12
interactions: 112
channels: [granola, slack, hermes-session]
work_themes: [deal-diagnosis, churnzero-health, hiring-loops]
style: [direct, data-first, async-ok]
open_threads:
  - Q3 close loss followup hygiene, 25 to 30 day gaps
recent: >
  Sep-12 working session on workflows. Owns
  partnership coverage for 4 to 5 partners.
pointer: vault personal/people/yasmin-wahid.md
---
# Yasmin Wahid
## Who they are, 3 lines max
## How we work together, themes not transcripts
## Last conversation, 1 paragraph, dated
## Open threads, dated bullets
## Tailoring notes, how to be better for them
RuleWhy
One file per human, slug is firstname-lastname.mdStops forks. Yasmin versus Yasmin Wahid must not split.
Short by designKeeps L1 retrievable. Transcripts stay in L4.
Update on contact, refresh recent, bump countsMemory improves with use. No stale rewrites.
Local plus mirror: ~/.hermes/memories/people/ to Vault/personal/people/Local is the read path. Vault is the record. Same pattern as the Vera mindspace mirror.
L0 holds pointers, never full profilesThis is how MEMORY.md drops back below 85%.
Scope tag per person: bonusly-internal, external, personalRespects Vera guardrails on people data and channel blocks.
Recall

How a session uses it

Detect, load, work, write back, mirror. Five steps, same loop every time.

1 Detectname, email, or Slack id in this turn
2 Load L1read people/<slug>.md, near 1.5k chars
3 Workmatch depth and format to style plus open_threads
4 Write backrefresh recent, link person in log
5 Mirror12h cron copies local to vault
Storage

Simple v0 paths

Local is fast, vault is durable. One way mirror, Vera pattern.

WhatLocalVault mirror
Selfmemories/USER.md, existscareer/overview.md, exists
Hot prefsmemories/MEMORY.md, exists_meta/system/MEMORY.md, exists
People, newmemories/people/<slug>.mdpersonal/people/<slug>.md
Ontology v2none_meta/system/ontology.md, add people section
Seed sourceGranola participants: frontmatter plus session logs. Top 10 collaborators first.

Seed order follows meeting count. Yasmin 112, John 55, Alaina 54, Ben 49, Saif 46. Partners get scope external.

Handoff

Marrying the other thread

Clean split. That thread owns broader context. This proposal owns L1 only.

SeamContract
L0 budgetPeople live outside MEMORY.md. L0 keeps one line pointers. The other thread gains room.
L4 linkageSession and meeting writers add participants: [slugs]. One frontmatter line, no pipeline change.
Vera parityVera Ontology.md people section becomes pointers into the same L1 store, scope filtered. One store, two readers.

Open question for that thread: session start loader. Keyword detect on @name versus auto inject of top 3 recent people. Keyword plus recency protects context budget.

Build

v0 in five steps

Small and reversible. Prove it in three sessions.

StepDoDone when
1Create ~/.hermes/memories/people/ plus seed Yasmin, John, Alaina from meeting counts and themes3 files, 40 lines each max
2Create Vault/personal/people/ plus mirror script, Vera mirror patternLocal matches vault, diff clean
3Slim L0. Replace person prose in MEMORY.md with pointersMEMORY.md below 85%
4Ontology v2 section plus recall flow diagramontology.md updated and linked
5Session end rule: if a person was central, refresh their L1 recent. Add to obsidian skill plus vault sync cronNext 3 sessions prove it