Skip to content

docs: give Data a memory it lands itself, in its own checkout - #7

Merged
EthanThatOneKid merged 2 commits into
mainfrom
docs/data-memory-mandate
Sep 26, 2026
Merged

EthanThatOneKid merged 2 commits into
mainfrom
docs/data-memory-mandate

Conversation

@EthanThatOneKid

@EthanThatOneKid EthanThatOneKid commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Data does not persist between sessions, and it keeps nothing of a conversation unless it lands somewhere durable. This makes that memory real and makes Data proactive about it.

Rewritten 2026-09-25 for the self-hosted cutover. The first version of this branch described an inbox plus a scheduled landing sweep, because the pre-cutover Data was a Zo persona with no shell and no write tools. That premise is gone: Data now runs as a self-hosted Letta agent (wazootech/data #10) whose memory is a git-backed tree of markdown it reads and commits to itself. The inbox, the sweep automation, and the .gitignore entry are dropped; the surviving idea — Data lands what it learned, itself, as a source-cited record — is now aimed at that memory.

What changed

  • agent/instructions.md — narrows the read-only rule to the codebase (Data's own memory is the one place it writes) and adds a Memory section: Data lands a durable record in its own memory in the same turn it learned it; a valid record is verified against source with the repository, path, and line numbers it used, is reusable next quarter, and is safe to publish; corrections land next to the thing they correct; paths and lines are read, not recalled; Data never claims to have landed something it has not committed; engineering findings still hand off to Computer.
  • AGENTS.md — describes Data's memory as the agent's own checkout (~/.letta/lc-local-backend/memfs/<agent-id>/memory, seeded from agent/instructions.md as system/persona.md), adds a Memory records section, and restates the write boundary: Data writes only to its own memory.
  • README.md — adds a Memory bullet under How Data runs and widens the toolset bullet to name the memory write.

Verification: docs only; no code path touched, CI's typecheck and test are unaffected.

After merge: run npm run sync-persona in wazootech/data to seed agent/instructions.md into the live agent's memory as system/persona.md — until that runs, the live persona is the pre-cutover text. The paused Data Memory Landing Sweep automation (b59efac2-ea45-4353-b7a3-3472c1ca55c6) is obsolete under this design and can be deleted.

Merge gate: merging to main is Ethan's call per the workspace boundary.

@wazoocomputer

wazoocomputer Bot commented Sep 25, 2026

Copy link
Copy Markdown

This pull request, titled "docs: give Data a memory it lands itself," introduces a new memory model for Data. Previously, Data's conversations and memory were ephemeral, residing only in the runtime. This change establishes a durable memory within the wazootech/data repository under knowledge/, enabling Data to proactively record lessons, reproductions, gotchas, and corrections.

File Change Summary
.gitignore modified Adds memory/inbox/ to the ignore list.
AGENTS.md modified Updates the description of Data's memory model and capabilities.
README.md modified Revises the explanation of Data's memory model and removes a duplicated Discord entry.
agent/instructions.md modified Narrows the read-only rule to the codebase and adds a section on Data's new memory model.
automations/README.md modified Adds an entry for the Data Memory Landing Sweep.
automations/data-memory-landing.md added Defines the new automation for landing Data's memory records.
memory/README.md added Describes the purpose and structure of the memory inbox.

Reviewers should begin by examining agent/instructions.md to understand Data's updated operational guidelines regarding its memory.

1 similar comment
@wazoocomputer

wazoocomputer Bot commented Sep 25, 2026

Copy link
Copy Markdown

This pull request, titled "docs: give Data a memory it lands itself," introduces a new memory model for Data. Previously, Data's conversations and memory were ephemeral, residing only in the runtime. This change establishes a durable memory within the wazootech/data repository under knowledge/, enabling Data to proactively record lessons, reproductions, gotchas, and corrections.

File Change Summary
.gitignore modified Adds memory/inbox/ to the ignore list.
AGENTS.md modified Updates the description of Data's memory model and capabilities.
README.md modified Revises the explanation of Data's memory model and removes a duplicated Discord entry.
agent/instructions.md modified Narrows the read-only rule to the codebase and adds a section on Data's new memory model.
automations/README.md modified Adds an entry for the Data Memory Landing Sweep.
automations/data-memory-landing.md added Defines the new automation for landing Data's memory records.
memory/README.md added Describes the purpose and structure of the memory inbox.

Reviewers should begin by examining agent/instructions.md to understand Data's updated operational guidelines regarding its memory.

The inbox-and-sweep design predates the self-hosted Letta cutover, where the
claim it rested on stopped being true: Data's model no longer lacks a shell or
write tools, and its memory is a git-backed directory it commits to itself.

The prompt now tells Data to land a durable, source-cited record in its own
memory in the same turn it learned it, rather than staging it for another
process to commit. AGENTS.md and README.md describe that memory as the agent's
own checkout, separate from the published artifacts in this repository.
@EthanThatOneKid EthanThatOneKid changed the title docs: give Data a memory it lands itself docs: give Data a memory it lands itself, in its own checkout Sep 25, 2026
Two gaps the prompt left open, now closed in the prompt and the two guides
that describe memory:

- Records live outside `system/`, under `records/<topic>.md`. Nothing said
  so, so an agent could park a record where the runtime loads it on every
  turn and pay for it forever, or drop the `description` frontmatter and lose
  the index that makes the tree navigable.
- A commit outlives the session but not the host: the memory checkout has no
  git remote, so durability rests on the weekly local memory backup. The text
  read as if git meant synced.
@EthanThatOneKid

Copy link
Copy Markdown
Contributor Author

Review follow-ups landed in c97112a — two gaps the prompt left open:

  • Where a record goes, and how the tree stays navigable. The Memory section said records live in a tree the runtime loads with Data and stopped there, which allowed two silent failures: a record parked under system/ (loaded in full on every turn, paid for forever) and a record without description frontmatter (invisible to the tree walk that is the only way to find it). The prompt now names records/<topic>.md, requires the frontmatter, and says what system/ is for. AGENTS.md and README.md carry the same statement.
  • "Outlives the session" is not "outlives the host." git remote -v in the memory checkout is empty, so a commit survives a restart but not the host; durability is the weekly local backup's job. Verified rather than assumed: the checkout has no remote and holds exactly one bundle, memory-backup-20260925-043440. Both the prompt and the guides now say it that way.

Green: npm run typecheck clean, npm test 24/24.

@EthanThatOneKid
EthanThatOneKid merged commit eb59a21 into main Sep 26, 2026
1 check passed
@EthanThatOneKid

Copy link
Copy Markdown
Contributor Author

Merged as eb59a21. Two follow-ups from the review landed with it, plus the prompt fixes:

  • agent/instructions.md now names where a record goes (records/<topic>.md, outside system/) and why the description frontmatter is required, and adds a durability clause: the memory checkout has no git remote, so a commit outlives the session but not the host — durability rests on the weekly local memory backup. AGENTS.md and README.md carry the same two points.
  • Re-seeded the live agent: npm run sync-persona committed 0a2928a in the agent's memory, so system/persona.md now carries the mandate. Before the run, --dry-run reported system/persona.md differs from agent/instructions.md (5174 bytes rendered).
  • Deleted the obsolete paused Data Memory Landing Sweep automation (b59efac2), and removed the empty memory/inbox/ directory and its local .git/info/exclude line left over from the dropped inbox-and-sweep design. Nothing references either.

Note for this thread: the inbox-and-sweep design described in the earlier discussion is dropped — Data lands records in its own memory checkout, and there is no inbox or sweep. Automating the re-seed is tracked separately in #16.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant