Bootstrap
One-time migration from existing planning docs into the vault. Use when you install Strata on a repo that already has a docs/, .planning/, or similar directory full of markdown.
The model
Section titled “The model”Bootstrap is not the recurring way knowledge enters the vault. After installation, engineers write directly into the vault as they work, through /strata:save, /strata:decide, /strata:domain during conversation. Bootstrap exists for the chicken-and-egg case: an existing repo with months of planning docs that need migration before Strata has anything to retrieve.
Run it once per major initiative. Then .gitignore (or archive) the planning subdir.
How it works
Section titled “How it works”/strata:bootstrapThat’s the whole invocation. Behind the scenes:
- Scan the repo for markdown candidates (respects
.gitignore,.strataignore,.ignore) - Group by parent directory.
.planning/auth-rewrite/PLAN.md+.../CONTEXT.md+.../SPEC.mdgo to one worker together. Siblings about the same initiative produce one consolidated note, not three near-duplicates - Dispatch 5 groups in parallel to
strata:bootstrap-workersubagents. Each worker:- Reads its group’s files
- Calls
plan_correlateto cross-check claims against git history + code graph - Calls
code_mapto understand mentioned symbols - Classifies → domain / decide / save / skip
- Writes the note(s)
- Marks the source files processed (SHA-tracked, idempotent)
- Aggregate one-line summaries; print final tally
Source file contents never enter your main Claude context. The workers do the reading; you see only the summary lines.
Classification
Section titled “Classification”Each group’s docs are pulled into one of four shapes:
| Kind | When | Lands in |
|---|---|---|
domain | Defines vocabulary, invariants, conventions (“what is X”) | domain/<slug>.md |
decide | Locked-in choice with reasoning + alternatives | decisions/YYYY-MM-DD-<slug>.md |
save | Retrospective, “we considered X”, historical context | lessons/YYYY-MM-DD-<slug>.md |
skip | Generic README, TOC, autogenerated — mark only | (no file written) |
The classification is informed by plan_correlate’s verdict:
- ≥80% completion (paths exist + symbols resolve) →
decideaccepted,domainstable - 40–80% →
decideproposed (caveats inline) - under 40% →
saveframed as retrospective (“we considered this in 2026”), not authoritative - No testable claims → classify by content alone
What gets scanned
Section titled “What gets scanned”Default scope: every *.md under the repo root, minus:
- Build / cache dirs (
node_modules/,dist/,.venv/,__pycache__/, etc.) - Plugin meta-config (
.claude/,.github/,.vscode/,.idea/,.zed/,.agents/) - Strata outputs (
graphify-out/,.strata/) - AI-tool config files (
.cursor.md,.impeccable.md,.windsurf.md, …) - Low-signal root files (
CHANGELOG.md,LICENSE.md)
Tune per repo with a .strataignore at the project root (gitignore syntax). .ignore (ripgrep/fd convention) also honoured.
docs/legacy/ # skip an old subtree!RUNBOOK.md # re-include a default-excluded fileTuning the pass
Section titled “Tuning the pass”Default pass is fresh docs only (under 90 days old) with claims verified at ≥60% freshness. Override via the MCP bootstrap_scan tool:
bootstrap_scan( unprocessed=true, bucket="aging", # 90-365 days verify=true, min_freshness=0.4, # accept partial-evidence plans)Or skip verification entirely (faster, less precise):
bootstrap_scan(unprocessed=true, verify=false)Idempotency
Section titled “Idempotency”<vault>/<repo>/.bootstrap-state.json tracks {path: {sha256, processed_at}}. Re-running the bootstrap skips already-processed files unless their SHA changed. To force a re-process, edit the source or delete its entry.
After bootstrap
Section titled “After bootstrap”Two options for the planning subdir:
- Keep + archive:
git mv .planning/auth-rewrite .attic/auth-rewrite. Historical reference, no longer scanned. - Delete:
git rm -r .planning/auth-rewrite. The vault now holds what should survive.
Either way: future planning happens directly in the vault. The .planning/ workflow was the migration source, not the steady state.
Next: Code graph — Graphify integration and how code_map cuts token budget.