v0.1 implementation milestones
The v0.1 implementation phase breaks into 9 sequenced milestones. Each one has its own page with concrete tasks, dependencies, success criteria, and current status.
Status snapshot
Section titled “Status snapshot”| Milestone | Title | Effort | Status |
|---|---|---|---|
| v0.1.1 | Type system + validation foundation | 1–2 days | ✅ Done (2026-05-04) |
| v0.1.2 | render() v1 — folder + file + heading | 3–5 days | ✅ Done (2026-05-05) |
| v0.1.3 | Generation engine integration | 3–5 days | ✅ Done (2026-05-05) |
| v0.1.4 | Junction notes + crosswalk edges | 2–3 days | ✅ Done (2026-05-05) |
| v0.1.4.5 | Streaming refactor (engine accepts row iterator) | 1–2 days | ✅ Done (2026-05-05) |
| v0.1.5 | Tier 2 sqlite-wasm sidecar projector | 5–8 days | ✅ Done (2026-05-06) |
| v0.1.6 | Bases query layer + SSSOM import + recipe UX | 3–5 days | 🚧 In progress (Phases 1+1.5+2+3 done; 4-5 pending) |
| v0.1.7 | Exporters (STRM TSV / OSCAL JSON) | 2–3 days | 📋 Planning |
| v0.1.8 | Audit trail T1 default | 1–2 days | 📋 Planning |
| v0.1-RC | Bundle, polish, ship | 2–3 days | 📋 Planning |
Status legend: 📋 Planning · 🚧 In progress · ✅ Done · ⏸ Blocked
Total estimate
Section titled “Total estimate”~3–6 weeks of focused work, depending on velocity. Each milestone has explicit dependencies on the previous one (each is a step on the same dependency chain), so the order is roughly fixed.
How milestones work in this roadmap
Section titled “How milestones work in this roadmap”Each milestone page contains:
- Goal — one sentence
- Dependencies — what must complete before this can start
- Scope — what’s in / what’s out
- Concrete tasks — checklist of work
- Success criteria — verifiable outcomes (test passes, bundle size, schema validation, etc.)
- Files to touch — specific paths
- Estimated effort — rough day count
- Status — Planning | In progress | Done | Blocked
- Related — KB cross-links (decision logs, spec artifacts, concept pillars)
When work begins on a milestone, flip its status to “In progress” + start checking off tasks. When it ships, flip to “Done” + add a brief retrospective note. Use this status table at the top to track at-a-glance progress.
Why hub-and-spoke
Section titled “Why hub-and-spoke”Top-level roadmap shows phases and high-level direction. Milestone pages contain the implementation detail without bloating the top-level view. Each milestone has a stable URL → linkable from PRs, decision logs, code comments, agent prompts. AI agents can be pointed at a single milestone page for focused work.
E2E coverage requirement
Section titled “E2E coverage requirement”Every milestone gets at least one E2E spec that proves the feature works in real Obsidian. The harness is wdio-obsidian-service via bun run e2e; the smoke baseline lives at tests/e2e/smoke.spec.ts and validates: Obsidian launches, plugin loads, commands register.
Per-milestone E2E spec — verbatim from the testing-patterns skill:
| Milestone | New E2E spec |
|---|---|
| v0.1.1 | validation.spec.ts — malformed recipe → AJV Notice |
| v0.1.2 | render.spec.ts — recipe w/ folder+heading mechanisms → correct vault structure |
| v0.1.3 | re-import.spec.ts — managed overwritten + user_preserve preserved |
| v0.1.4 | crosswalks.spec.ts — junction notes + STRM enum enforced |
| v0.1.4.5 | streaming.spec.ts — large-CSV streaming import; bounded RAM |
| v0.1.5 | sidecar.spec.ts — .crosswalker.sqlite projects + recovers on delete |
| v0.1.6 | bases-queries.spec.ts — emitted Bases query renders in note body |
| v0.1.7 | export.spec.ts — STRM TSV columns + OSCAL JSON schema valid |
| v0.1.8 | audit.spec.ts — git commit produced + signed manifest verifies |
| v0.1-RC | full smoke against bundled plugin pre-submission |
If a milestone closes without its E2E spec passing, that’s a violation of the milestone success criteria — flip status back to In progress.
Architectural foundation for these milestones
Section titled “Architectural foundation for these milestones”All 9 milestones build on the 2026-05-04 design phase commitments:
- Schema-as-primitive reframe — Tier 1 schema is the load-bearing contract
- Closed 5-mechanism recipe grammar — Ch 22 synthesis
- TypeScript in-plugin engine — Ch 23 synthesis
- Tier 2 substrate = canonical sqlite-wasm + sqlite-vec — Ch 24 synthesis
- Runtime-agnostic recipe schema
- Output query layer = Bases — Dataview removed
Machine-readable contracts: spec/tier1.schema.json + spec/recipe.schema.json.