Design the extract-index pointer convention #57
Labels
No Label
P0
P1
P2
P3
afk-ready
hitl
next
ready-for-agent
review
semi
waiting
wayfinder:grilling
wayfinder:map
wayfinder:research
wayfinder:task
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: jared/cc-os#57
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Map: #49
Question
Design the extract-index pointer convention: when an extract-then-delete op moves a doc's insight into the SecondBrain vault, what pointer stays behind in the project?
The sketch (from charting): a lightweight index file — e.g.
docs/research/index.md— with one entry per extracted doc: a link to the vault note + a value description saying why/when it would be worth reading. The original file is then deleted; the index is how future sessions discover the insight exists. Example entry:Sub-decisions:
docs/research/clutter-pattern-inventory.mdis likely KEEP (spec provenance — #41 cites it as the seed source), while a standalone findings doc whose insight generalizes beyond cc-os (e.g. a tool-behavior discovery) is EXTRACT — vault note + index line, then delete.Resolution — design approved (human sign-off 2026-07-15: 1=A, 2-4=recommendations).
Scope boundary: the pointer convention exists for VAULT extractions only — the case where the insight physically leaves the repo. Repo-durable residue (an ADR, a CLAUDE.md line) is already discoverable in-repo and gets no index line.
1. Placement/naming — per-directory
extracted.md(option A). The pointer stays where a future reader is already looking. The dedicated, self-describing filename means ONE global rule inrulebook.jsoncovers every project forever:{ "glob": "**/extracted.md", "lifetime": "keep" }— zero per-project bookkeeping; the index can never become a deletion candidate anywhere. (Rejected B: genericindex.md— collides with existing index/README conventions, and**/index.md -> keepis too broad globally, forcing per-project singleton keep rules on every creation.)2. Writer — the
:cleanextract op owns the entry. The extract-then-delete op runs: distill ->/os-vault:write(returns the note name) -> append the pointer line -> delete the original.:cleanowns the append because (a) the entry needs the vault note name, which only exists mid-op, and (b):clean's invariant is one reviewable commit — vault pointer, index line, and deletion land atomically, so there is no window where the doc is gone but undiscoverable.os-vault:writestays repo-agnostic. Entry format (extends the charting sketch with provenance):3. Extract-worthy vs plain-keep — three tests, in order:
docs/research/clutter-pattern-inventory.md— #41 cites it as the seed source; deleting breaks the provenance chain).4. Index self-protection + fog closure. Covered by the global
**/extracted.md -> keeprule (see 1). The map's remaining fog question — does the extract-index convention graduate intoconventions.json? — is resolved as no:conventions.jsonis the completion-conventions catalog (served-signal graduation — archive-bucket, status-frontmatter). The extract index is not a served signal a project opts into; it is part of the extract op itself, spec-defined and universal. It belongs in the lifecycle spec + one global rule, not the catalog. No new ADR beyond the #58 assembly touching ADR-0038's scope note.Folds into the assemble ticket #58; nothing edited in the working tree by this ticket.