Vault Ingest
Categorize captures in raw/sources/, route owned/user-authored material to the
right vault directories, and synthesize tagged external sources into curated
notes while preserving complete source evidence.
Portent reference: ../references/portent-knowledge-base-spec.md.
Parameters
--mode report|apply (default: report)
report: preview all planned operations
apply: execute confirmed operations
--path PATH (optional): override default ./raw/sources input path
Core Contract
For each ingestion cycle:
- Source starts in
raw/sources/ (unprocessed inbox)
- The source file itself remains the durable artifact
- Each source is classified by intent, topic, and lifecycle state before moving
- Every capture is classified into a Portent lifecycle state first:
captured,
organized, or archived
- Every organized durable object gets a Portent
type
- Every organized object should have enough relationship metadata to explain
future usefulness:
belongs_to for primary context when one exists
related_to for secondary associations
- If a capture cannot attach to a Project, Responsibility, Operation, or Topic,
leave it in
raw/sources/ and report it as a delete/ignore candidate
- Source files move to the most specific existing vault location when they are
owned/user-authored material or working source records
- Owned notes, project ideas, drafts, and planning captures are moved intact
rather than summarized
- Notes tagged
external are browser-clipped or imported external sources and
should be synthesized during apply-mode processing unless the user explicitly
requests routing only
- When a capture duplicates or extends an existing note, idea, project, or
resource, merge it into that destination when confidence is high
- Any source that is summarized or synthesized must keep a complete immutable
copy in
raw/processed/YYYY-MM-DD/
- Summaries or synthesized research briefs must link to the archived complete
source record
- Navigation is updated only for moved durable files that belong in active
navigation
- All material operations are logged in
log.md
raw/processed/ is audited for empty folders and anomalies
Routing Rules
Prefer the vault's existing directory taxonomy. Do not invent new top-level
folders when an existing one fits.
| Source category |
Destination pattern |
| Rough owned idea |
ideas/fleeting/<idea>/ |
| Promising project idea |
ideas/incubating/<idea>/ |
| Later/someday idea |
ideas/someday/<idea>/ or the closest existing idea |
| Rejected/closed idea |
ideas/rejected/<idea>/ |
| Active project material |
projects/active/<project>/ |
| Durable conceptual note |
notes/concepts/ only when it is itself canonical |
| General durable note |
notes/<topic>/ or the closest existing note area |
external reference |
Archive source in raw/processed/YYYY-MM-DD/; write synthesis to notes/<topic>/ |
| Asset or binary support |
raw/assets/ or an existing asset folder |
| No clear durable home |
Leave in raw/sources/ and report the ambiguity |
When an owned/user-authored source clearly belongs with an existing project,
idea, or note, move it there even if the file is messy. Preserve the original
content and filename unless a minimal rename is needed to avoid collision or
clarify the source identity.
Merge Rules
Prefer a single durable note or folder when multiple captures are clearly about
the same thing. Merge only when the relationship is obvious: same project, same
idea, same source, same canonical concept, or one file is a direct continuation
of another.
- In
report mode, propose merge target, evidence, confidence, and link
rewrites.
- In
apply mode, merge high-confidence captures into the existing durable
destination.
- Preserve all user-authored content. Move unmatched sections under clear
headings instead of summarizing them away.
- Keep provenance by retaining source filename, capture date, or a backlink to
the moved/merged file.
- When confidence is medium or low, route the file beside the likely target and
report a manual merge decision instead of merging.
- Do not merge merely related but distinct ideas; link them instead.
Capture Decision
Use raw/sources/ only for unclassified captures. If the user already
identifies the item as their own idea, route it to ideas/ directly:
ideas/fleeting/: quick idea, fragment, or unqualified possibility
ideas/incubating/: idea with enough shape to revisit or develop
ideas/someday/: intentionally parked idea
ideas/rejected/: idea explicitly declined but worth retaining as history
External articles, discussions, docs, and market references captured with
Obsidian Note Clipper should carry an external tag. That tag tells ingestion
the note came from an outside source and should be synthesized by default while
preserving the complete clipped note.
X bookmark source records are captured by vault-x-bookmarks. If the task is to
delete irrelevant, minimal, or low-value bookmark captures from raw/sources/,
use vault-x-bookmarks prune mode instead of ingest. Ingest routes sources
worth keeping; it does not judge bookmark source value for deletion.
Recognize external in either common Obsidian form:
- frontmatter list or scalar:
tags: [external], tags: external
- inline tag:
#external
Copy vs Synthesize Decision
Default to moving or merging owned/user-authored sources intact. Default to
synthesizing tagged external sources during apply-mode processing. Synthesize
untagged sources only when the user explicitly asks to summarize/synthesize a
specific source.
Plain copy/move/merge is correct when:
- The file is user-authored, an owned idea, a project draft, a plan, meeting
note, scratch note, or decision record
- The note's wording, structure, or roughness is itself useful context
- The capture is short enough that summarizing would mainly discard nuance
- The user asks to organize, categorize, move, link, or merge
Synthesis is correct when:
- The note has an
external tag from Obsidian Note Clipper or another external
capture path
- The user explicitly asks for synthesis, summary, takeaways, assessment,
comparison, or research
- Multiple external sources need to be combined into a brief
When synthesis happens, first move the complete source under
raw/processed/YYYY-MM-DD/, then write the synthesis with links to those
archived source records. The synthesis should live in the most specific curated
destination, such as notes/<topic>/, projects/.../research/, or
ideas/.../research/. The archived complete source is the immutable citation
target.
Workflow
- Scan
raw/sources/ for unprocessed captures (skip hidden files)
- Classify each capture:
- Identify whether it is PORT (
Project, Operation, Responsibility,
Task) or ENTP (Event, Note, Topic, Person)
- Assign
status: captured|organized|archived
- Identify source origin: owned, external, asset, operational record
- Identify primary
belongs_to candidate
- Identify useful
related_to candidates
- Match against existing
projects/, ideas/, notes/, and indexed Topic
objects
- Mark confidence as high, medium, or low
- Plan moves:
- Choose the most specific destination path
- Detect filename collisions and propose minimal safe renames
- Detect duplicate or continuation captures and propose merge targets
- Check for the
external tag and plan archive + synthesis by default
- Leave low-confidence items in place and list the decision needed
- Move, merge, or synthesize high-confidence sources:
- Move owned/user-authored sources intact to their destination paths
- Archive tagged external sources under
raw/processed/YYYY-MM-DD/
- Write curated synthesis notes that link to the archived complete sources
- Update navigation and ops trail only as needed:
- Add moved durable files to
index.md when they belong in active navigation
- Rewrite links for merged files when a canonical destination replaces them
- Append concise operation entry to
log.md
- Audit processed archives:
- Scan
raw/processed/YYYY-MM-DD/ for empty date folders
- Flag non-date folder anomalies
- Report duplicate filenames across dates
- Remove empty folders (with confirmation in apply mode)
- Execute by mode:
report: preview plan only (no changes)
apply: run full pipeline with confirmation
Safety
- Never discard files from
raw/sources/ — only move them after successful
classification
- Treat
raw/processed/ as immutable evidence — never delete processed source
files
- Do not create summaries, synthesized notes, or rewritten interpretations of
owned source files during ingest
- Synthesize tagged external sources by default in apply mode, preserving the
complete source under
raw/processed/YYYY-MM-DD/ first
- Do not synthesize untagged sources unless the user explicitly asks for it
- Do not remove the
external tag from archived source records
- Non-destructive edits by default — source files are moved, not rewritten
- Merges are additive by default and must preserve provenance
- Confirm before execution unless
--yes
- Do not mutate file contents under
raw/sources/, raw/processed/, or
raw/assets/
- Do not assume or create an inbox staging layer
Output
Return:
- discovered captures and classification plan
- Portent type, status, belongs_to, and related_to recommendations for each
capture
- category, confidence, and destination path for each source
- source files moved and final destination paths
- files merged, merge target, and provenance retained
- synthesized items, archived complete source paths, and links inserted
- source files left in place with ambiguity reason
- captures left unorganized because they lack a useful relationship target
index.md additions
log.md entry appended
- audit findings (empty folders, anomalies)
- fixes applied (if any)
- manual follow-up items
1---2name: vault-ingest3description: Use when raw vault captures need classification, routing, relocation, and external-source synthesis from the source inbox into the right vault surfaces4---56# Vault Ingest78Categorize captures in `raw/sources/`, route owned/user-authored material to the9right vault directories, and synthesize tagged external sources into curated10notes while preserving complete source evidence.1112Portent reference: `../references/portent-knowledge-base-spec.md`.1314## Parameters1516- `--mode report|apply` (default: `report`)17 - `report`: preview all planned operations18 - `apply`: execute confirmed operations19- `--path PATH` (optional): override default `./raw/sources` input path2021## Core Contract2223For each ingestion cycle:2425- Source starts in `raw/sources/` (unprocessed inbox)26- The source file itself remains the durable artifact27- Each source is classified by intent, topic, and lifecycle state before moving28- Every capture is classified into a Portent lifecycle state first: `captured`,29 `organized`, or `archived`30- Every organized durable object gets a Portent `type`31- Every organized object should have enough relationship metadata to explain32 future usefulness:33 - `belongs_to` for primary context when one exists34 - `related_to` for secondary associations35- If a capture cannot attach to a Project, Responsibility, Operation, or Topic,36 leave it in `raw/sources/` and report it as a delete/ignore candidate37- Source files move to the most specific existing vault location when they are38 owned/user-authored material or working source records39- Owned notes, project ideas, drafts, and planning captures are moved intact40 rather than summarized41- Notes tagged `external` are browser-clipped or imported external sources and42 should be synthesized during apply-mode processing unless the user explicitly43 requests routing only44- When a capture duplicates or extends an existing note, idea, project, or45 resource, merge it into that destination when confidence is high46- Any source that is summarized or synthesized must keep a complete immutable47 copy in `raw/processed/YYYY-MM-DD/`48- Summaries or synthesized research briefs must link to the archived complete49 source record50- Navigation is updated only for moved durable files that belong in active51 navigation52- All material operations are logged in `log.md`53- `raw/processed/` is audited for empty folders and anomalies5455## Routing Rules5657Prefer the vault's existing directory taxonomy. Do not invent new top-level58folders when an existing one fits.5960| Source category | Destination pattern |61| ----------------------- | ---------------------------------------------------------------------------------- |62| Rough owned idea | `ideas/fleeting/<idea>/` |63| Promising project idea | `ideas/incubating/<idea>/` |64| Later/someday idea | `ideas/someday/<idea>/` or the closest existing idea |65| Rejected/closed idea | `ideas/rejected/<idea>/` |66| Active project material | `projects/active/<project>/` |67| Durable conceptual note | `notes/concepts/` only when it is itself canonical |68| General durable note | `notes/<topic>/` or the closest existing note area |69| `external` reference | Archive source in `raw/processed/YYYY-MM-DD/`; write synthesis to `notes/<topic>/` |70| Asset or binary support | `raw/assets/` or an existing asset folder |71| No clear durable home | Leave in `raw/sources/` and report the ambiguity |7273When an owned/user-authored source clearly belongs with an existing project,74idea, or note, move it there even if the file is messy. Preserve the original75content and filename unless a minimal rename is needed to avoid collision or76clarify the source identity.7778## Merge Rules7980Prefer a single durable note or folder when multiple captures are clearly about81the same thing. Merge only when the relationship is obvious: same project, same82idea, same source, same canonical concept, or one file is a direct continuation83of another.8485- In `report` mode, propose merge target, evidence, confidence, and link86 rewrites.87- In `apply` mode, merge high-confidence captures into the existing durable88 destination.89- Preserve all user-authored content. Move unmatched sections under clear90 headings instead of summarizing them away.91- Keep provenance by retaining source filename, capture date, or a backlink to92 the moved/merged file.93- When confidence is medium or low, route the file beside the likely target and94 report a manual merge decision instead of merging.95- Do not merge merely related but distinct ideas; link them instead.9697## Capture Decision9899Use `raw/sources/` only for unclassified captures. If the user already100identifies the item as their own idea, route it to `ideas/` directly:101102- `ideas/fleeting/`: quick idea, fragment, or unqualified possibility103- `ideas/incubating/`: idea with enough shape to revisit or develop104- `ideas/someday/`: intentionally parked idea105- `ideas/rejected/`: idea explicitly declined but worth retaining as history106107External articles, discussions, docs, and market references captured with108Obsidian Note Clipper should carry an `external` tag. That tag tells ingestion109the note came from an outside source and should be synthesized by default while110preserving the complete clipped note.111112X bookmark source records are captured by `vault-x-bookmarks`. If the task is to113delete irrelevant, minimal, or low-value bookmark captures from `raw/sources/`,114use `vault-x-bookmarks` prune mode instead of ingest. Ingest routes sources115worth keeping; it does not judge bookmark source value for deletion.116117Recognize `external` in either common Obsidian form:118119- frontmatter list or scalar: `tags: [external]`, `tags: external`120- inline tag: `#external`121122## Copy vs Synthesize Decision123124Default to moving or merging owned/user-authored sources intact. Default to125synthesizing tagged `external` sources during apply-mode processing. Synthesize126untagged sources only when the user explicitly asks to summarize/synthesize a127specific source.128129Plain copy/move/merge is correct when:130131- The file is user-authored, an owned idea, a project draft, a plan, meeting132 note, scratch note, or decision record133- The note's wording, structure, or roughness is itself useful context134- The capture is short enough that summarizing would mainly discard nuance135- The user asks to organize, categorize, move, link, or merge136137Synthesis is correct when:138139- The note has an `external` tag from Obsidian Note Clipper or another external140 capture path141- The user explicitly asks for synthesis, summary, takeaways, assessment,142 comparison, or research143- Multiple external sources need to be combined into a brief144145When synthesis happens, first move the complete source under146`raw/processed/YYYY-MM-DD/`, then write the synthesis with links to those147archived source records. The synthesis should live in the most specific curated148destination, such as `notes/<topic>/`, `projects/.../research/`, or149`ideas/.../research/`. The archived complete source is the immutable citation150target.151152## Workflow1531541. **Scan** `raw/sources/` for unprocessed captures (skip hidden files)1552. **Classify** each capture:156 - Identify whether it is PORT (`Project`, `Operation`, `Responsibility`,157 `Task`) or ENTP (`Event`, `Note`, `Topic`, `Person`)158 - Assign `status: captured|organized|archived`159 - Identify source origin: owned, external, asset, operational record160 - Identify primary `belongs_to` candidate161 - Identify useful `related_to` candidates162 - Match against existing `projects/`, `ideas/`, `notes/`, and indexed Topic163 objects164 - Mark confidence as high, medium, or low1653. **Plan moves**:166 - Choose the most specific destination path167 - Detect filename collisions and propose minimal safe renames168 - Detect duplicate or continuation captures and propose merge targets169 - Check for the `external` tag and plan archive + synthesis by default170 - Leave low-confidence items in place and list the decision needed1714. **Move, merge, or synthesize** high-confidence sources:172 - Move owned/user-authored sources intact to their destination paths173 - Archive tagged external sources under `raw/processed/YYYY-MM-DD/`174 - Write curated synthesis notes that link to the archived complete sources1755. **Update** navigation and ops trail only as needed:176 - Add moved durable files to `index.md` when they belong in active navigation177 - Rewrite links for merged files when a canonical destination replaces them178 - Append concise operation entry to `log.md`1796. **Audit** processed archives:180 - Scan `raw/processed/YYYY-MM-DD/` for empty date folders181 - Flag non-date folder anomalies182 - Report duplicate filenames across dates183 - Remove empty folders (with confirmation in apply mode)1847. **Execute** by mode:185 - `report`: preview plan only (no changes)186 - `apply`: run full pipeline with confirmation187188## Safety189190- Never discard files from `raw/sources/` — only move them after successful191 classification192- Treat `raw/processed/` as immutable evidence — never delete processed source193 files194- Do not create summaries, synthesized notes, or rewritten interpretations of195 owned source files during ingest196- Synthesize tagged external sources by default in apply mode, preserving the197 complete source under `raw/processed/YYYY-MM-DD/` first198- Do not synthesize untagged sources unless the user explicitly asks for it199- Do not remove the `external` tag from archived source records200- Non-destructive edits by default — source files are moved, not rewritten201- Merges are additive by default and must preserve provenance202- Confirm before execution unless `--yes`203- Do not mutate file contents under `raw/sources/`, `raw/processed/`, or204 `raw/assets/`205- Do not assume or create an inbox staging layer206207## Output208209Return:210211- discovered captures and classification plan212- Portent type, status, belongs_to, and related_to recommendations for each213 capture214- category, confidence, and destination path for each source215- source files moved and final destination paths216- files merged, merge target, and provenance retained217- synthesized items, archived complete source paths, and links inserted218- source files left in place with ambiguity reason219- captures left unorganized because they lack a useful relationship target220- `index.md` additions221- `log.md` entry appended222- audit findings (empty folders, anomalies)223- fixes applied (if any)224- manual follow-up items