Ingest Stage
Turn a raw session notes file (type: session-notes) into an ingested
insight, ready for the enrich stage. Defaults to keeping it as one
note — see "Exception" below for when to split.
See references/pipeline.md for stage definitions and status flow.
Input
A session notes file in the inbox with status: raw and type: session-notes.
Default: enrich whole
Most session notes — including every devlog-produced one — are already
well-organized: one session, one provenance (repo/branch/bean), a handful
of related bullets. Splitting them into N separate notes mints
near-duplicate notes that mostly route to the same destination anyway — a
real run against 32 session notes would have exploded into 120-140
near-duplicates that mostly filed to the same destination.
Default behavior: keep the session note as ONE note. Change its frontmatter in place, using the Edit tool:
status: raw→status: ingestedtype: session-notes→type: insight
Don't create any new files. Don't touch the body — enrich handles prose
cleanup next.
Exception: split when bullets genuinely diverge
Check for a real cross-topic signal before splitting — not a bullet count. Read the note's bullets:
If every bullet shares the same repo/branch/bean context (the common case, and always true for a single
devlogsession), keep it whole.If bullets explicitly reference different repos, branches, or beans within the same file (only possible in hand-authored or legacy multi-topic session notes —
devlogoutput never does this), split those bullets into separate notes instead:There's no structured per-bullet frontmatter for this — repo/branch/bean only ever exist once, at the file level. Infer divergence from what the bullet text itself says (e.g. a bullet's prose names a different repo than the file's own frontmatter, or than another bullet).
- For each insight, create a new note via
sb note create --source auto --title "{insight title}"withstatus: ingested,type: insight,source-session: {original session filename}, and that bullet's own repo/branch/bean. - Write the note body (the bullet text, cleaned into a sentence or short paragraph) using the Write tool.
- Update the original session file's status to
ingestedusing the Edit tool — it stays in the inbox as a record, not processed further. - Skip empty or trivial bullets when splitting (single words, fragments).
- For each insight, create a new note via
Output
Either:
- The same note, now
status: ingestedandtype: insight(default case), or - N new insight notes with
status: ingested, plus the original session file updated tostatus: ingested(split case)
Constraints
- Default to whole. Splitting is the exception, not the rule.
- Preserve all provenance metadata.
- Each split-out note gets its own zettelkasten timestamp (via sb).