Following up on @spokV's note in #23 that session transcript indexing would be worth exploring as a standalone feature — I've been running a session persistence layer on top of SQLite for a while and wanted to share some design questions before jumping into code.
What I've found through practice
The biggest lesson from building session persistence: state, log, and index are three distinct concerns with different persistence semantics. Conflating them produces a system that's either too verbose to search or too compressed to cold-start from.
In my setup, these ended up as separate structures:
- State snapshot — overwritten each session close; self-contained enough for cold-start (decisions made, open questions, what to do next)
- Append-only log — full archive of every snapshot, never edited
- Session index — one line per session, scannable reference (date, objective, key outcome, files touched)
The snapshot-not-log pattern was the most counterintuitive part. Early versions appended everything, which made the session record grow until it was unsearchable. Overwriting forces you to decide what actually matters for the next session's cold-start.
Design questions for Memora
1. Separate table vs. memories table?
Session transcripts have different access patterns from standalone memories — they're sequential, chunked, and usually searched as a group. Would a session_transcripts table with its own FTS index make more sense than storing chunks as tagged memories? Or does Memora's existing tag/metadata filtering handle this well enough?
2. Chunking strategy
Transcripts need overlapping chunks for coherent semantic search. Is there a preferred chunking approach in the codebase, or would this be the first implementation of it? Configurable window size + overlap seems right, but I don't want to over-engineer the first pass.
3. Session metadata and cross-references
Memora already has memories_crossrefs. Should session chunks cross-reference each other (sequential linking within a session) and also link to any standalone memories created during that session? That would let you traverse from a memory back to the conversation that produced it.
4. Search ranking
Session content is noisier than curated memories. Should session search results be weighted differently in memory_search, or should session search be a separate tool?
Happy to take a crack at implementation if the scope feels right. Aiming for focused and minimal — session indexing only, no broader changes.
Following up on @spokV's note in #23 that session transcript indexing would be worth exploring as a standalone feature — I've been running a session persistence layer on top of SQLite for a while and wanted to share some design questions before jumping into code.
What I've found through practice
The biggest lesson from building session persistence: state, log, and index are three distinct concerns with different persistence semantics. Conflating them produces a system that's either too verbose to search or too compressed to cold-start from.
In my setup, these ended up as separate structures:
The snapshot-not-log pattern was the most counterintuitive part. Early versions appended everything, which made the session record grow until it was unsearchable. Overwriting forces you to decide what actually matters for the next session's cold-start.
Design questions for Memora
1. Separate table vs. memories table?
Session transcripts have different access patterns from standalone memories — they're sequential, chunked, and usually searched as a group. Would a
session_transcriptstable with its own FTS index make more sense than storing chunks as tagged memories? Or does Memora's existing tag/metadata filtering handle this well enough?2. Chunking strategy
Transcripts need overlapping chunks for coherent semantic search. Is there a preferred chunking approach in the codebase, or would this be the first implementation of it? Configurable window size + overlap seems right, but I don't want to over-engineer the first pass.
3. Session metadata and cross-references
Memora already has
memories_crossrefs. Should session chunks cross-reference each other (sequential linking within a session) and also link to any standalone memories created during that session? That would let you traverse from a memory back to the conversation that produced it.4. Search ranking
Session content is noisier than curated memories. Should session search results be weighted differently in
memory_search, or should session search be a separate tool?Happy to take a crack at implementation if the scope feels right. Aiming for focused and minimal — session indexing only, no broader changes.