Roadmap
This is a direction document, not a backlog. The milestone tables below are
projected from the docs/planning/milestones/
corpus — edit a milestone entity (or run sdlc milestone create) and
regenerate. The narrative threads under them are hand-authored direction,
reviewed as code.
Active
Section titled “Active”The milestones in flight now.
| Id | Title | Version | Target date | Summary |
|---|---|---|---|---|
| Books consolidation and augmented dissolution into solutions/augmented_learning | Books consolidation and augmented dissolution into solutions/augmented_learning | |||
| Initial Product Definition | Initial Product Definition | 0.1.0-alpha |
Emerging
Section titled “Emerging”Drafted or planned, not yet started.
| Id | Title | Version | Target date | Summary |
|---|---|---|---|---|
| Agent personas + verification skill (static + judgement) as implementation-process steps with rework loops | Agent personas + verification skill (static + judgement) as implementation-process steps with rework loops | |||
| Documentation strategy: taxonomy, drift, audiences, site | Documentation strategy: taxonomy, drift, audiences, site | |||
| graph-scheduler v0.1 — DAG core, push engine, rules, ordering, goal-direction, pull, tracker, docs | graph-scheduler v0.1 — DAG core, push engine, rules, ordering, goal-direction, pull, tracker, docs | 0.1.0 | ||
| Initial entity shape and roster | Initial entity shape and roster | 2026-06-17 | ||
| Lossless markdown CST core | Lossless markdown CST core | |||
| markdown-contract typed-cell wins | markdown-contract typed-cell wins | |||
| One contract layer across the fleet | One contract layer across the fleet | |||
| Polish schema validation live end-to-end | Polish schema validation live end-to-end | |||
| Pumice desktop app integration | Pumice desktop app integration | |||
| Query and index plane | Query and index plane | |||
| Self-hosting SDLC entities: scaffold and validate the planning model | Self-hosting SDLC entities: scaffold and validate the planning model | |||
| Task execution consistency | Task execution consistency | 2026-06-30 | ||
| Task: fully fleshed out and tightened end-to-end | Task: fully fleshed out and tightened end-to-end | |||
| TypeScript frontmatter consumers on markdown-util | TypeScript frontmatter consumers on markdown-util | |||
| Vault kernel and structural transforms | Vault kernel and structural transforms | |||
| WASM/TS distribution surface | WASM/TS distribution surface |
Shipped
Section titled “Shipped”Closed milestones, with what shipped.
| Id | Title | Version | Shipped |
|---|---|---|---|
| Adopt augmented_books into the monorepo | Adopt augmented_books into the monorepo | 0.6.0 | Complete, shipped as v0.6.0. The full augmented_books repo is folded into the monorepo. Phase 1 vendored 11 shared TS packages (T-LVLY #911) and 2 Rust crates (T-F0B2 #906) and adopted the apps — augmented-books desktop (T-JV2A #931), learn_web (T-6C0Z), augmented_web (T-KTGF), augmented_dot_com (T-LAKY), and the package demos + vimit_prototype (T-UPV1) — with obsidian-bases converged onto @sksizer/obsidian-bases (T-NLKF). Phase 2 reframed the up-front convergence audit as in-place staging (T-JCML superseded): added the solutions/ tier to D-0001 (T-1YSW), removed the three clear-duplicate packages (T-J5DI), and consolidated the family into solutions/augmented/ (T-C9RD #1010). vimit landed last as solutions/augmented/apps/vimit/ (T-B98V #1102); the upstream repo was archived (T-B1VB). vimit post-mortem follow-ups #1103/#1105/#1106/#1108 also merged. |
| Capability model adoption | Capability model adoption | 0.3.2 | Delivered by both member tasks. Capability schema v2 has no contains and every renderer — index, site projection, definition — derives children by inverting parent_key; kind is the optional 11-grain structural enum and audience (user | system, default system) carries the old feature / technical split and drives index sectioning; locations[] ships on the shared five-form Location grammar in lib/util/location.ts; and the combined v1→v2 migration runs clean across the corpus. Two footnotes, neither a gap: the criterion’s “20 instances (8 user / 12 system)” is arithmetic drift — the corpus grew to 27 and reads 8 user / 19 system, the user side unchanged; and the one remaining capability audit finding ([[C-409J-dag-core]] anchor rot) now points forward at packages/rust/graph-scheduler/src/graph.rs, which [[D-VSLI-distributed-work-runner-architecture]] implementation-ledger phase E3 builds — not this milestone’s work. version was assigned by the 2026-08-16 milestone audit from the delivery date (2026-07-18) to preserve roadmap order; no release tag was cut for it. |
| Claude Orchestrated Task Execution Prototype | Claude Orchestrated Task Execution Prototype | 0.2.0-alpha | Superseded by [[D-VSLI-distributed-work-runner-architecture]], whose implementation ledger records this disposition directly: the whole deliverable set is the prose orchestrator the engine replaces, and nothing distinct survives. The prototype was largely built and does run — the executable-task lifecycle operations ship on the TypeScript substrate, /sdlc:orchestrate selects ready tasks and classifies open PRs across ticks, git-ref leases coordinate parallel runs, and leaf-only kind: implementation dispatch landed with [[T-JOXA-task-kind-field-and-leaf-dispatch]] — so this is a goal reframed, not abandoned. What changed is the substrate: D-VSLI replaces ~3,750 lines of lifecycle SKILL.md with a Rust engine, and the four deliverables are re-specified as implementation-ledger phases E3 (scheduling and the filter chain), E4 (process registry), and E6 (engine v0). Track the work there rather than here. |
| Conflict-aware parallel dispatch | Conflict-aware parallel dispatch | [[D-VSLI-distributed-work-runner-architecture]] splits this three ways, and all three members are closed. Write-set conflict detection becomes implementation-ledger phase E3’s scope-conflict filter over declared scope claims ([[T-U3NR-task-write-set-conflicts]]). PR-fact drift becomes a detector on phase E2’s level-triggered reconciler rather than a lint ([[T-9TYJ-audit-pr-fact-status-drift]]). The routing table becomes the runner context a phase E4 process registration declares ([[T-Z56F-orchestrate-routing-table]]). | |
| D-0014 distribution migration — CLI-primary npm artifact | D-0014 distribution migration — CLI-primary npm artifact | Closed partial: six of eight deliverables shipped, the distribution half was superseded, and one integration question was neither delivered nor superseded. Shipped and live: runtime-agnostic shipped code, the skill corpus normalized onto the cli/sdlc launcher with the corpus-invocation gate enforcing it, code-root vs project-root fixes, the @sksizer/sdlc package reshape, sdlc harness install claude with doctor on the same install, and sdlc site build. Superseded: the git-pinned sksizer/sdlc-dist channel ([[T-75UD-release-ci-dist-repo]], closed obsoleted) was retired for [[D-2APS-sdlc-standalone-binary-app]]‘s compiled-binary public-npm channel, which [[M-XVOC]] delivered — that milestone also deliberately deleted this one’s gate runtime-agnostic, so criteria 1, 2 and half of 6 are answered elsewhere or negated on purpose. Not delivered and not superseded: the end-to-end consumer pilot ([[T-521G-pilot-consumer-polish]], closed obsoleted — polish stopped being a separate checkout and its tree is the frozen apps/legacy-polish per D-0011) and, with it, D-0014’s “Where the installed plugin lives” open question, which both install modes implement but no verdict ever settled. Those two want a fresh consumer-pilot task against the binary channel. [[D-0014-cli-primary-npm-distribution]] itself still describes the retired dist-repo channel as current and carries no link to D-2APS; amending it is separate follow-up. | |
| Fully deterministic docs site: generated nav, supplemental mapping, corpus projections | Fully deterministic docs site: generated nav, supplemental mapping, corpus projections | 0.2.1 | Delivered by all ten member tasks (PRs #343-#360). The docs site is a pure build artifact: nothing generated is committed, the whole content root is swept for generator ownership and a foreign hand-written page exits NAMESPACE_CONFLICT, hand-written prose lives only under sites/df-docs/supplemental/ and maps in through sites/df-docs/site.yaml, the sidebar and site identity are generated modules astro.config.mjs merely imports, every registered entity type projects a roster plus child pages with a new type needing zero wiring, roadmap.md builds from milestone entities, and page bodies render through Eta templates. One criterion shipped amended rather than as written: the drift gate wired into quality_checks and lefthook is the real docs generate site build, not --check, because [[D-0010-deterministic-site-assembly]] made the site uncommitted and an uncommitted artifact has nothing to byte-diff against — byte-stability itself is test-pinned, and the build throws the same ownership errors. version was assigned by the 2026-08-16 milestone audit from the delivery date (2026-06-08) to preserve roadmap order; no release tag was cut for it. |
| Intersect v0.1 — pure core, path API, registry, fs layer | Intersect v0.1 — pure core, path API, registry, fs layer | 0.1.0 | Completed 2026-07-04. All six member tasks shipped test-first across PRs #551-#556: the JSON fixture corpus, the segment-core engine (automaton product + reachability), the path API, the labeled-pattern-set registry, the opt-in intersect/fs layer, and the package exports + README + extraction guards. Corpus is green with zero pending cases; . and ./segments pull zero runtime deps, only ./fs pulls tinyglobby. Docs followed in #557/#561 (TypeDoc + Astro Starlight) and #580 (docs-config guardrails). Follow-up beyond this milestone: the library was extracted from plugin/lib/ into the workspace package packages/ts/intersect (@sksizer/intersect); npm publish still deferred. |
| markdown-contract adoption & cleanup | markdown-contract adoption & cleanup | 0.7.0 | Complete, shipped as v0.7.0. SDLC’s bespoke entity-markdown validator is fully replaced by the markdown-contract engine: one declarative contract per entity type is the live validator, and the SKILL.md-family project-check harness runs on it. The eight adoption PRs landed (Zod v4 migration, the contract substrate + registry, schema/contract consolidation, rewiring validate/audit/authoring, retiring the bespoke validator + AJV renderer + body-schema.yaml manifests, the implementation-ready task contract, tree-based readiness consumption, and the unified project-check harness), and every cleanup follow-up closed: stale body-schema.yaml / validate_frontmatter.ts / schema.json doc claims fixed (T-N19Y, T-MDJC, T-OQDE), audit.ts frontmatter parsing converged onto the contract path (T-19PE), dead exports + the cosmetic validate label removed (T-J8US), D-0004 reconciled with S-0005 (T-RXUK), and the read-side reads rebased onto markdown-contract (T-W7D5, T-1W6P, T-GOY0). 17/17 members closed. |
| markdown-util tier-0 extraction | markdown-util tier-0 extraction | 0.5.1 | Delivered. packages/rust/markdown-util/ exists at tier 0 with no non-dev dependencies, holding the byte-exact split/compose and the NoteShape/Split fidelity types; determined-vault re-exports them and its eight sibling crates stayed green; the D-4QGN framing corpus (tests/fixtures/conformance.json, 24 fixtures) runs against the crate and, because a peer TypeScript port reuses the same file, against both language arms. Every in-tree Rust splitter converged — apps/ontological-legacy, determined-polish (via the vault re-export), and the sdlc desktop reader ([[T-8K2M-converge-sdf-desktop-frontmatter-reader]], shipped 2026-07-31 and closed by this audit) — and the behaviour-sensitive ontological migration carries the named before/after fixture. Two documented exemptions, both deliberate and annotated in code: determined-authoring keeps its own BOM/CRLF-tolerant splitter pinned to a Node-regex golden, and apps/legacy-polish’s vaultpolish-core is declared a frozen reference tree rather than a migration source. version was assigned by the 2026-08-16 milestone audit from the delivery date (2026-07-31) to preserve roadmap order; no release tag was cut for it. |
| Milestone & orchestration: group, stack, and parallelize task execution | Milestone & orchestration: group, stack, and parallelize task execution | Superseded by [[D-VSLI-distributed-work-runner-architecture]]. Of the four success criteria, one shipped and three describe a shape the architecture replaces. Guided milestone definition shipped as /sdlc:milestone-new. Extracting a milestone’s hand-maintained tasks: list as the execution queue contradicts implementation-ledger phase C2, where milestone rosters become derived views and hand-maintained checklists retire — there is no list left to extract. Stacked-PR sequencing and parallel-PR-by-file-overlap selection become the phase E3 scope-conflict filter: scope claims stamped into the lease at claim, adjudicated pairwise by intersect, run by the engine on every dispatch rather than chosen per-batch by an operator, with dependency satisfaction as its own filter rather than a hand-built PR stack. No member tasks were ever scheduled against this milestone, so nothing is stranded by closing it. | |
| Monorepo restructure & dashboard migration | Monorepo restructure & dashboard migration | Closed partial: the monorepo half delivered in full, the dashboard’s packaging half stopped being wanted. Delivered — moon drives the workspace over Bun and Rust with justfile and lefthook intact and apps//packages/ts//packages/rust/ all live; the Astro site builds under Bun; the four-source active-work view (lease refs, task/milestone entities, local working state, GitHub PR status) ships in dashboard/server.ts; the generated typed client survives as packages/ts/dashboard-client and is what every read goes through; and [[S-0008-apps-consume-substrate-through-published-surfaces]] is open/active with its import-discipline validator wired into lefthook. Superseded — [[D-0018-sdf-control-plane-app]] excised apps/dashboard on 2026-07-16 and overrode D-0013’s Vite+Vue pick, so the SPA criterion is met in substance by SDF (Tauri 2 + Nuxt 4, [[M-5EEX]]) rather than by the app this milestone named; [[T-JDEV-dashboard-build-into-plugin]] and [[T-CKC1-tauri-desktop-wrapper]] closed superseded with it. The one genuinely unmet criterion is the committed drift-gated web-dist: it was declared moot rather than deferred — no web-dist exists, INDEX_HTML was kept as the legacy fallback instead of retired, and whether the plugin ships any consumer web UI at all is now an open question owned by D-0018, not by this milestone. Wave 4’s polyglot validation was promoted out exactly as the body anticipated, into [[M-0014]] and [[M-5EEX]]; the workspace is polyglot well past two ecosystems. | |
| Multi-harness control plane — canonical model + four targets | Multi-harness control plane — canonical model + four targets | 0.3.4 | Delivered by all five member tasks. HarnessModelSchema (v2) is host-neutral and markdown-contract-validated; deriveHarnessModel / importClaude bootstrap it from the live Claude surface with an import→export→import identity test; harness export <target> emits the full native surface for claude, codex, cursor and gemini, with json as a fifth interchange target; and examples/export-all.ts builds one model and reaches every target, pinned by tests. The only Claude asymmetry left is harness install claude, which this milestone’s Out-of-scope section explicitly permits. The code moved twice since the tasks shipped — the model and exporters now live in packages/ts/agent-plugin/, the CLI verbs in solutions/ontological/lib/services/harness/ops/ — so touchpoint paths in the member tasks read as missing without having regressed. Two housekeeping items ride along rather than block: [[C-HRNS-multi-harness-control-plane]] is still open/planned and carries no locations[] anchors, and conventions/harness-model.md still cites the pre-extraction model path. Publishing @sksizer/agent-plugin to npm is tracked separately on [[B-APKG-publish-path-resolve-agent-plugin-dependency]]. version was assigned by the 2026-08-16 milestone audit from the delivery date (2026-07-19) to preserve roadmap order; no release tag was cut for it. |
| Op-substrate full sweep: capabilities born in lib | Op-substrate full sweep: capabilities born in lib | 0.2.0 | Completed 2026-06-06. 20/20 member tasks shipped across 24 PRs (#298-#327): the path[] op substrate (D-H7FS), every capability ported to lib ops on the 11-visible/4-hidden-noun surface, all callers codemodded to the sdlc CLI, plugin/scripts + plugin/validators + cli/lease_cli deleted behind the legacy-path guard, lefthook gates live, site reference + narrative docs regenerated against shipped reality. Exit criteria verified on main: 1322/0 tests, zero legacy refs, zero lib-to-skills imports, LEGACY_NOUNS=[backlog]. |
| Principles: the bootstrap layer | Principles: the bootstrap layer | Superseded by [[M-K7DP-initial-product-definition]], which reframed the construction-sequence milestones around product releases and took “Principles published” as one of its own success criteria. The content this milestone existed to produce did ship: all eleven principles it indexed exist as P-entities under docs/planning/principles/, ten are open/published (only [[P-0011-avoid-deferral-for-simple-tasks]] is still draft), and the corpus has since grown a twelfth ([[P-0012-rust-core-adapters-as-needed]]) and been reconciled against [[D-VSLI-distributed-work-runner-architecture]]. Its three open scope rows are done too — P-0006 and P-0007 were authored, and the related: cross-reference pass landed. Closed superseded rather than done because the milestone was never a product release and carries no version; the deliverable landed, the container did not survive. | |
| Retire invariants.yaml: adopt markdown-contract text constraints for skill-prose | Retire invariants.yaml: adopt markdown-contract text constraints for skill-prose | 0.3.0 | Completed 2026-07-04. Replaced the bespoke invariants.yaml SKILL.md prose linter with a markdown-contract contract, so skill-prose runs on the same engine as the entity corpus. All six member tasks shipped: T-3TAJ (the vendored mc 0.2.0 pin carries requires/forbids/textRule, #619), T-FQFJ (authored the per-skill SKILL_PROSE_REGISTRY contract, #629), T-6OS7 (rewired sdlc gate skill-prose onto it, #630), T-LNHL (deleted the 534-line _skill_prose_core.ts matcher, #635), T-UDY1 (retired the 14 invariants.yaml sidecars, #642), T-DNGZ (repointed standards/notes docs, #643). Verified on main: _skill_prose_core.ts gone, _skill_prose_contract.ts present, 0 invariants.yaml sidecars, sdlc gate skill-prose green on the real corpus (35 skills checked, 14 covered, no violations). |
| SDF control-plane app — scaffold to safe controls | SDF control-plane app — scaffold to safe controls | 0.3.3 | Delivered by all six member tasks (PRs #769, #770, #772, #773, #774). The app ships with check/build/dev/web moon tasks wired into .github/workflows/sdf-ci.yml; apps/dashboard is deleted and just dev drives SDF; the ontogen-generated HTTP, IPC, MCP and TS-client trees are committed and double-gated by sdf:codegen-drift and sdf:schema-parity; the read panels sit on refs/sdlc/tasks, the seven-value pr-check verdict enum, and a cursored tail of .sdlc/orchestrator-log.md; and mutating routes require x-platform-token while reads pass tokenless. Two notes for a reader: the body still says apps/sdf, but the app now lives at solutions/ontological/desktop/ (moon project id still sdf); and the [[D-VSLI-distributed-work-runner-architecture]] redirect this milestone needed — SDF as a day-one consumer of engine v0’s status API, landing as implementation-ledger phase E7 rather than inside this arc — is already applied to the Out-of-scope bullet, so nothing about D-VSLI blocked the close. version was assigned by the 2026-08-16 milestone audit from the delivery date (2026-07-19) to preserve roadmap order; no release tag was cut for it. |
| SDLC distribution revamp — apps/sdlc/ app + compiled binary | SDLC distribution revamp — apps/sdlc/ app + compiled binary | 0.3.1 | Delivered. SDLC is self-contained and the compiled-binary channel exists end to end: scripts/build-binary.ts cross-compiles five targets with an embedded asset tar, scripts/build-npm-wrapper.ts assembles the main package plus five os/cpu-gated platform packages, and .github/workflows/release.yml runs a pack → clean-install → run smoke on every PR and tag. The plain-Node world is genuinely deleted — no build-artifact op, no runtime-agnostic gate. Three caveats a reader should have: the milestone’s apps/sdlc/ literal is stale, since the tool moved on to solutions/ontological/ (the D-0001 end state) — the goal landed, the address changed; the artifact has never actually been published (NPM_TOKEN is absent and the latest tags predate the channel), so “installs and runs” is proven by CI smoke rather than by a real consumer; and the npm channel’s entry point is a Node CJS shim, so only the binary itself is runtime-free. brew/curl stay deferred. version matches solutions/ontological/package.json and the v0.3.1 tag current when the channel landed. Not superseded: rewriting the sdlc CLI in Rust ([[D-VSLI-distributed-work-runner-architecture]] implementation-ledger phase C5) is anticipated, not decided, and closing here records what shipped rather than extending toward it. |
| Shared app-frame across determined and the SDLC dashboard | Shared app-frame across determined and the SDLC dashboard | 0.4.0 | Extracted the generic app-frame (@sksizer/app-frame) out of @determined/shell, re-homed @determined/shell as a thin adapter with the 21 products at parity, and migrated the SDLC dashboard onto the frame (nav modules via defineModule, a SettingsTransport adapter, the DAppShell layout, and dashboard —d-* token overrides). Both front ends now run one shared shell; all nine member tasks are closed. |
| Task plane split — execution state to the lease substrate | Task plane split — execution state to the lease substrate | Implementation-ledger phase E2 of [[D-VSLI-distributed-work-runner-architecture]] delivered the plane split in one change instead of the seven-stage expand/cutover/contract staging this milestone planned. in-progress[/blocked] is never written to frontmatter again, append_pr_url.ts is deleted, the readers went lease-aware, and the reconciler is a live level-triggered controller. All seven member tasks are closed. Schema v6 and the v5-to-v6 sweep did not ship ([[T-11QZ-task-schema-v6-contract-sweep]]): the controller has to keep healing files that still carry the in-progress* values, so the enum outlives the sweep that removes them from the corpus. | |
| TypeScript conversion of current system | TypeScript conversion of current system | 0.1.0-alpha | Delivered via the en-masse TypeScript migration (single long-lived branch, one cutover PR) per [[D-0006-typescript-substrate]]. The entire plugin substrate — lease library (incl. byte-identical canonical_json), validators, the task/backlog/lease CLI nouns + unified sdlc dispatcher, all scripts, model migrations, and skill helpers — was ported to TypeScript under a local parity gate, with the Python substrate deleted in the cutover commit. Runtime is Bun (Node fallback documented in install-check). |
| yaml-splice extraction and writer migrations | yaml-splice extraction and writer migrations | 0.5.0 | Complete. yaml-splice extracted (T-3MZD / #1063), adopted by the six Rust consumers (#1064) and — via a WASM/TypeScript binding that emerged as a prerequisite (D-W4SM / T-820W / #1074) — by the SDLC frontmatter writers (T-68IB / #1081). The four field-edit writers now edit frontmatter through span-preserving editYaml; the whole-document generators stay on the canonical discipline. All success criteria and deliverables met. |
Near-term
Section titled “Near-term”The MCP and HTTP doors
Section titled “The MCP and HTTP doors”The registry was built so one op projects into many doors, and the
projection rules are already fixed — CLI segments verbatim, MCP tool name
by underscore-join, HTTP route by path with method by verb class
(D-H7FS-op-substrate-surface §5). The CLI is the one shipped door;
building the MCP and HTTP servers against the same generated tool/route
set is the natural next step, and the truest test of the
harness-agnostic claim. Until a
non-Claude door actually drives the ops, the claim is structural, not
proven.
Task transitions as ops
Section titled “Task transitions as ops”task transition (T-902K)
moves the lifecycle transition itself onto
the registry, with the commit as a declared side effect — so the
authoritative state change and the git write are one op, not a skill
remembering to do both. It sits flat on the task noun beside
create/update/sort, per the surface decision.
Walk-root for generic ops
Section titled “Walk-root for generic ops”The four cross-entity ops (entities audit|validate|migrate|check-identifiers)
register today via an explicit barrel import, because model/ops/ is not
a discovery-walk root. T-U72C
is the open question of whether to
promote it to one — removing the hand-maintained barrel — without
admitting non-op modules to the walk.
Mid-term
Section titled “Mid-term”A workflow-definition engine
Section titled “A workflow-definition engine”D-0007 left this as an open question: how deterministic multi-step workflows are declared and how they reference ops. It would be a composition layer over the registry — control flow, no LLM — not a parallel system. Several skills today are coarse deterministic sequences with a single human-judgment seam; those are the candidates a workflow engine would absorb.
Rethinking task state
Section titled “Rethinking task state”A cluster of backlog items circles the same tension: task status: is a
frontmatter cache of a fact the lease ref owns. Whether to make the event
log primary with frontmatter as a derived cache
(B-M9JX,
B-HUT2),
and what control plane backs it
(B-622T),
is unresolved direction, not committed work.
Tighter verification
Section titled “Tighter verification”Standards and principles can drift from the code they describe. Edit-time standard enforcement (B-J2KF), a standards/principles drift-audit skill (B-M9QZ), and validating markdown body structure by applying a schema to its AST (B-8FL9) are the threads here.
Deferred
Section titled “Deferred”Noted but not committed-to. Most live in the backlog and get triaged when they become relevant.
- Deployment of this docs site (GitHub Pages, Vercel, Netlify, or a custom domain) — it builds locally today.
- Evals for skills (B-5PY9) — a deterministic harness exercising each skill’s happy path plus one breakage.
- Scheduled / recurring tasks (B-1NN4).
- Custom Starlight theme / branding; multi-version docs; i18n.
- CI workflow on push (lint / build / deploy); automating changelog generation from git history.
Out of scope (probably forever)
Section titled “Out of scope (probably forever)”- A web UI for editing planning artifacts. The plain-markdown floor is the point; editors are downstream.
- A hosted SaaS version. This is personal software.
- Proprietary issue trackers as a primary store. The filesystem is the primary store; bridges to other systems are read-only views.
Source
Section titled “Source”This page is generated by sdlc docs generate site from the milestone
corpus and the static narrative above. The milestone tables track the live
entities; the narrative is hand-authored and reviewed as code. If something
here doesn’t match what plugin/ actually does, that’s a bug — file it.