Track raw sources in a canonical manifest before compile shapes draft knowledge.
Minimal loop
- discover raw sources
- compare them against
raw/_manifest.yaml - register new or changed entries
- mark deferred sources such as paper PDFs explicitly instead of hiding them
Read before ingesting
- local
AGENTS.md - local
CLAUDE.mdif present ../obsidian-notes-karpathy/scripts/skill-contract-registry.json../obsidian-notes-karpathy/references/file-model.md../obsidian-notes-karpathy/references/lifecycle-matrix.md../obsidian-notes-karpathy/references/activity-log-template.md../obsidian-notes-karpathy/references/paper-ingestion-lifecycle.md../obsidian-notes-karpathy/references/source-manifest-contract.md../obsidian-notes-karpathy/references/profile-contract.md
Treat skill-contract-registry.json as the canonical source for required references, baseline script, and write surfaces.
If available, run:
../obsidian-notes-karpathy/scripts/scan_ingest_delta.py../obsidian-notes-karpathy/scripts/sync_source_manifest.pywhen the task is writable
Rules
- never rewrite
raw/**content - always record paper PDFs in the manifest even when compile must defer them
- keep image and data assets visible at the manifest layer even if downstream compile remains metadata-first
- preserve
first_seen_atwhen an entry already exists - use
raw/_manifest.yamlas the user-visible canonical registry
Output to the user
Report:
- whether the manifest was missing, current, or stale
- how many sources were new, changed, unchanged, or removed
- which sources were deferred and why
- whether the next step is
kb-compile