v0.1 implementation milestones
The v0.1 implementation phase breaks into 10 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 | Iterator-ready engine boundary (wizard remains eager) | 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 (ran long — absorbed the shape-workbench side-arc) | 🚧 In progress — Phases 1–6.4 ✅ + Phase 7 (shape-workbench side-arc) ✅ 2026-07-11; v0.1.7 is active. Delivery detail: CHANGELOG.md [Unreleased]; phase list: milestone page |
| v0.1.7 | Portability: exporters, reusable configurations, source bindings, MappingSets | Expanded | 🚧 In progress — exporter first slice ✅; recipe-fidelity foundation ✅ 2026-07-21; recipe library slice ✅ 2026-10-02; Run again and source-change status ✅ 2026-10-02; full NIST replay proofs ✅ 2026-10-03; mapping set release record slices 1 and 2 ✅ 2026-10-03; exporter completion remains, gated on the save-and-replay + primitives decision registers. Save-and-replay Gate 1 closed 2026-09-06 (ratification); Gate 2 closed 2026-10-02 (record); Gate 3 lands at v0.1.8. Two unmerged slices are in flight on fix/d1-per-import-root: the committed recipe-document digest, and the XLSX source-byte provenance plus ordinary import repairs work (2026-09-07; its targeted Tier 1 runtime acceptance passed 2026-09-09, with open Tier 2 and readability qualifications). Neither closes a track. Nested records (1.13.0) and body projection (1.14.0) were assigned here 2026-09-23 and are unmerged on feat/body-projection. Detail: CHANGELOG.md [Unreleased] |
| v0.1.8 | Execution records, audit, and package manifests | Expanded | 📋 Planning; depends on v0.1.7 |
| v0.1-RC | Artifact-chain acceptance, bundle, polish, ship | 2–3 days | 📋 Planning |
Status legend: 📋 Planning · 🚧 In progress · ✅ Done · ⏸ Blocked
Scoped addendum, 2026-09-23 — the v0.1.7 cell only: nested records and body projection assigned to it. No status symbol changed.
Scoped addendum, 2026-09-09 — the v0.1.7 cell only, re-checked against the targeted real-Obsidian acceptance run and its independent evidence review. No status symbol changed: v0.1.7 stays 🚧, every slice named in that cell remains unmerged and unreleased branch work, and a passing targeted runtime acceptance closes no track, checkbox or success criterion. No other cell was re-verified on this date.
Scoped addendum, 2026-09-07 — the v0.1.7 cell only, re-checked against that milestone page, CHANGELOG.md [Unreleased], and the local working tree. No status symbol changed: v0.1.7 stays 🚧, and both unmerged slices named in that cell remain unmerged branch work rather than shipped milestone scope. No other cell was re-verified on this date.
Status last verified: 2026-10-03 (v0.1.7 row, re-checked against CHANGELOG.md [Unreleased] and the v0.1.7 milestone page after mapping set release record slice 2). Earlier: 2026-09-05 — every cell above was re-checked against the milestone pages, CHANGELOG.md [Unreleased], and the commit log. No milestone status changed in this documentation update; the fix/d1-per-import-root safety work remains unmerged branch work, not a shipped milestone. If today is far past this date and no newer verification line has replaced it, treat this table as unverified.
Ingestion sequencing: ship a correct, usable supported path first; stage advanced streaming, parser migration, and mutable-source replay integrity behind demonstrated workflow needs and measured acceptance. This does not relax preservation, supported-input, or completion-truth requirements. See the 2026-09-05 decision.
Total estimate
Section titled “Total estimate”~3–6 weeks of focused work, depending on velocity. Each milestone has explicit dependencies on the previous one, so the order is roughly fixed. The closing sequence is source bytes → reusable configuration → Knowledge Set/MappingSet → Execution Record → Package Manifest, using the role boundaries in artifact roles and authority and the artifact-role synthesis.
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 — iterator consumption and eager-array compatibility with 100 synthetic rows; no memory-ceiling proof |
| 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 — reusable configuration save/reopen/replay + MappingSet SSSOM/STRM round-trip + honest OSCAL target handling |
| v0.1.8 | audit.spec.ts — terminal Execution Record through UI/programmatic paths + Package Manifest inventory/hash/signature verification |
| v0.1-RC | full artifact-chain replay, parity, tamper, mobile, and bundled-plugin smoke 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 10 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.