transcript progress: capnp append-only log replaces stub nodes

Add TranscriptSegment capnp schema and append-only log for tracking
which transcript segments have been mined by which agents. Replaces
the old approach of creating stub nodes (_observed-transcripts,
_mined-transcripts, _facts-) in the main graph store.

- New schema: TranscriptSegment and TranscriptProgressLog
- Store methods: append_transcript_progress, replay, is_segment_mined,
  mark_segment_mined
- Migration command: admin migrate-transcript-progress (migrated 1771
  markers, soft-deleted old stub nodes)
- Progress log replayed on all Store::load paths

Also: revert extractor.agent to graph-only (no CONVERSATIONS),
update memory-instructions-core with refine-over-create principle.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kent Overstreet 2026-03-16 17:40:32 -04:00
parent 1500a2b635
commit 835b392b7a
4 changed files with 221 additions and 1 deletions

View file

@ -643,6 +643,9 @@ enum AdminCmd {
/// Date (default: today)
date: Option<String>,
},
/// Migrate transcript stub nodes to progress log
#[command(name = "migrate-transcript-progress")]
MigrateTranscriptProgress,
}
#[derive(Subcommand)]
@ -817,6 +820,12 @@ fn main() {
AdminCmd::Params => cli::misc::cmd_params(),
AdminCmd::LookupBump { keys } => cli::node::cmd_lookup_bump(&keys),
AdminCmd::Lookups { date } => cli::node::cmd_lookups(date.as_deref()),
AdminCmd::MigrateTranscriptProgress => (|| -> Result<(), String> {
let mut store = store::Store::load()?;
let count = store.migrate_transcript_progress()?;
println!("Migrated {} transcript segment markers", count);
Ok(())
})()
},
};