ingest · diff
git:20260331.062374d to git:20260827.96da65a
56 added, 19 removed. Audit A to A.
---
name: ingest
- description: Split a raw session notes file into individual insight notes in the inbox. Stage 1 of the processing pipeline.
+ description: Turn a raw session notes file into an ingested note, ready for the enrich stage. Defaults to keeping it whole; only splits when bullets show a real cross-topic signal. Stage 1 of the processing pipeline.
allowed-tools:
- Read(~/.claude/vaults/**/*.md)
- Write(~/.claude/vaults/**/*.md)
- Edit(~/.claude/vaults/**/*.md)
- Bash(npx @techpickles/sb:*)
---
# Ingest Stage
- Split a raw session notes file (type: `session-notes`) into individual insight notes.
+ 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`.
- ## Process
+ ## Default: enrich whole
- 1. Read the session notes file
- 2. Extract each bullet point as a separate insight
- 3. For each insight, create a new note via `sb note create --source auto --title "{insight title}"` with:
- - `status: ingested`
- - `type: insight`
- - `source-session: {original session filename}`
- - Inherited metadata: `repo`, `branch`, `bean` from the parent session file
- 4. Write the note body (the bullet text, cleaned up into a sentence or short paragraph) using the Write tool
- 5. Update the original session file's status to `ingested` using the Edit tool (change `status: raw` to `status: ingested` in frontmatter)
+ 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: ingested`
+ - `type: 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 `devlog` session), 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 — `devlog` output 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).
+
+ 1. For each insight, create a new note via
+ `sb note create --source auto --title "{insight title}"` with
+ `status: ingested`, `type: insight`, `source-session: {original session filename}`,
+ and that bullet's own repo/branch/bean.
+ 2. Write the note body (the bullet text, cleaned into a sentence or
+ short paragraph) using the Write tool.
+ 3. Update the original session file's status to `ingested` using the
+ Edit tool — it stays in the inbox as a record, not processed
+ further.
+ 4. Skip empty or trivial bullets when splitting (single words,
+ fragments).
+
## Output
- - N new insight notes in the inbox, each with `status: ingested`
- - Original session file updated to `status: ingested`
+ Either:
+ - The same note, now `status: ingested` and `type: insight` (default
+ case), or
+ - N new insight notes with `status: ingested`, plus the original session
+ file updated to `status: ingested` (split case)
## Constraints
- - Preserve all provenance metadata from the parent session file
- - Each extracted note gets its own zettelkasten timestamp (via sb)
- - The `source-session` field links back to the original session file
- - Don't merge or combine bullets. One bullet, one note.
- - Skip empty or trivial bullets (single words, fragments)
+ - 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).