Date: 2026-03-02
Scope: Turn ODS into a broadly installable, highly composable OSS platform.
By Day 90, external contributors can:
- Install on supported platforms from a clear support matrix.
- Add a new backend service via a stable extension manifest.
- Add dashboard cards/routes without editing core files.
- Pass CI matrix checks before merge.
TODOnot startedIN_PROGRESSactiveBLOCKEDwaiting dependencyDONEshipped
Status: DONE
Milestone W1-M1 (PR-1): Extract platform detection and dispatcher
Status: DONE
Owner: Core
Effort: 2-3 days
Files:
install.shget-ods.shinstallers/dispatch.sh(new)installers/linux.sh(new)installers/common.sh(new) Acceptance:- Root installer delegates by platform.
- Linux path parity with current behavior.
bash -nand existing shell tests remain green. Progress notes:install.shconverted to entrypoint wrapper.install-core.shcreated as current Linux implementation.installers/common.sh+installers/dispatch.shadded.- Added capability profile contract (
config/capability-profile.schema.json) and generator (scripts/build-capability-profile.sh), now consumed byinstall-core.shfor tier/backend/compose decisions with fallback behavior.
Milestone W1-M2 (PR-2): Add Windows/macOS stubs with explicit support messaging
Status: DONE
Owner: Core
Effort: 1-2 days
Files:
installers/windows.ps1(new)installers/macos.sh(new)README.mdQUICKSTART.mdAcceptance:- No ambiguous “supported” language when unsupported paths are partial.
- Entry scripts route users to correct installer path. Progress notes:
installers/macos.shandinstallers/windows.ps1stubs added.install.shdispatch now routes to platform targets (or clear unsupported messaging).installers/windows.ps1now performs prerequisite checks and delegates to WSL installer path.installers/macos.shnow runs capability-aware preflight/doctor checks and writes a machine-readable report.- Added hardware class mapping (
config/hardware-classes.json,scripts/classify-hardware.sh) and capability-profile hardware class fields for explicit GPU-class defaults. scripts/ods-doctor.shnow emits prioritized autofix hints from preflight/runtime findings.- Added
scripts/simulate-installers.shand contract fixture tests undertests/contracts/with CI wiring in.github/workflows/test-linux.yml.
Status: DONE
Milestone W2-M1 (PR-3): Publish support matrix doc + policy
Status: DONE
Owner: Docs + Core
Effort: 1 day
Files:
docs/SUPPORT-MATRIX.md(new)README.mdQUICKSTART.mdAcceptance:- Matrix defines
Tier A/B/Csupport for Linux AMD/NVIDIA, WSL, macOS. - Every install path links to one canonical matrix. Progress notes:
- Added
docs/SUPPORT-MATRIX.md. - Linked support matrix from
README.mdandQUICKSTART.md.
Status: DONE
Milestone W3-M1 (PR-4): Define canonical compose contract and mode overlays
Status: DONE
Owner: Infra
Effort: 2-4 days
Files:
docker-compose.strix-halo.yml(historical; removed/renamed)docker-compose.base.yml(new)docker-compose.nvidia.yml(new)docker-compose.amd.yml(new)scripts/mode-switch.shAcceptance:- Base+overlay compose strategy documented and used consistently.
- Tests no longer assume one legacy compose filename. Progress notes:
- Added
docker-compose.base.yml,docker-compose.amd.yml, anddocker-compose.nvidia.ymlscaffold files. install-core.shnow prefers-f docker-compose.base.yml -f docker-compose.amd.ymlwith legacy fallback.tests/integration-test.shupdated to validate base+overlay compose flags.scripts/mode-switch.shnow resolvesstrix-haloto base+overlay (with legacy Strix fallback).- Added
scripts/resolve-compose-stack.shand integrated it ininstall-core.shto centralize runtime/bootstrap compose matrix resolution. - Added backend runtime contracts in
config/backends/*.jsonandscripts/load-backend-contract.shso health/provider wiring is data-driven.
Milestone W3-M2 (PR-5): Remove stale command styles from docs/scripts
Status: DONE
Owner: Docs + Infra
Effort: 1 day
Files:
- PROFILES.md
- TROUBLESHOOTING.md
- INTEGRATION-GUIDE.md Acceptance:
docker composestyle standardized.- Compose examples match canonical contract from W3-M1. Progress notes:
- Updated
docs/PROFILES.mdfromdocker-composetodocker compose. - Updated
docs/TROUBLESHOOTING.mdcompose-file guidance to cover NVIDIA and AMD base+overlay paths.
Status: IN_PROGRESS
Milestone W4-M1 (PR-6): Create service manifest schema and loader
Status: DONE
Owner: Core API
Effort: 3-5 days
Files:
extensions/schema/service-manifest.v1.json(new)extensions/services/*.yaml(new examples)dashboard-api/main.pyAcceptance:- API can load service definitions from manifests.
- Health checks and feature cards reference manifest data, not hardcoded lists. Progress notes:
- Added
extensions/schema/service-manifest.v1.json. - Added example manifests in
extensions/services/for inference, voice, workflows, vector DB, and image generation services. dashboard-api/main.pynow loads and merges service/feature definitions from manifests with safe fallback defaults.
Milestone W4-M2 (PR-7): Environment schema and validation
Status: IN_PROGRESS
Owner: Core
Effort: 2-3 days
Files:
.env.schema.json(new)install.shscripts/migrate-config.sh.env.example(generated by installer, not checked in) Acceptance:.envvalidated at install/start time.- Unknown/missing required vars produce actionable errors. Progress notes:
- Added
.env.schema.jsonwith required keys and typed properties. - Added
scripts/validate-env.shfor schema-based.envvalidation (missing/unknown/type checks). install-core.shnow validates generated.envagainst the schema and fails with actionable logging on mismatch.scripts/migrate-config.shnow exposesvalidatecommand wired to the same validator.- Added
scripts/preflight-engine.shand integrated capability-aware preflight reporting intoinstall-core.shwith machine-readable blocker/warning output.
Status: DONE
Milestone W5-M1 (PR-8): Route + navigation registry
Status: DONE
Owner: Frontend
Effort: 3-4 days
Files:
dashboard/src/App.jsxdashboard/src/components/Sidebar.jsxdashboard/src/plugins/registry.js(new)dashboard/src/plugins/core.js(new) Acceptance:- Core routes/cards registered through a registry.
- Adding a new page requires registry entry, not editing router internals. Progress notes:
- Added
dashboard/src/plugins/registry.jsanddashboard/src/plugins/core.js. dashboard/src/App.jsxnow renders routes from the registry (component + props mapping).dashboard/src/components/Sidebar.jsxnow derives nav items and quick links from the registry.
Milestone W5-M2 (PR-9): Feature cards from backend metadata
Status: DONE
Owner: Frontend + API
Effort: 2-3 days
Files:
dashboard/src/pages/Dashboard.jsxdashboard-api/main.pyAcceptance:- Feature tiles derive from API metadata.
- Ports/URLs are not hardcoded in JSX. Progress notes:
dashboard/src/pages/Dashboard.jsxnow fetches/api/featuresand renders feature cards from backend metadata.- Feature card links are now resolved from live service metadata (
external_port) instead of hardcoded port literals in JSX.
Status: DONE
Milestone W6-M1 (PR-10): Unify workflow directory + catalog contract
Status: DONE
Owner: API + Docs
Effort: 1-2 days
Files:
config/n8n/catalog.json(planned; not yet created)dashboard-api/main.py- INTEGRATION-GUIDE.md Acceptance:
- One canonical workflow path in code/docs.
- Catalog supports both templates and metadata cleanly. Progress notes:
dashboard-api/main.pynow resolves workflows from canonicalconfig/n8nwith legacyworkflows/fallback.- Workflow catalog loading now validates structure and returns normalized fallback data on malformed input.
docs/INTEGRATION-GUIDE.mdupdated to referenceconfig/n8n/*.jsonandconfig/n8n/catalog.json.
Status: DONE
Milestone W7-M1 (PR-11): Add CI workflows for shell, compose, frontend, API lint/tests
Status: DONE
Owner: QA/Infra
Effort: 2-3 days
Files:
.github/workflows/lint-shell.yml(new).github/workflows/test-linux.yml(new).github/workflows/dashboard.yml(new)tests/integration-test.shtests/test-phase-c-p1.shAcceptance:- PRs fail on syntax/lint regressions.
- Integration smoke suite runs in CI where possible. Progress notes:
- Added
.github/workflows/lint-shell.ymlwith repository-wide shell syntax checks (bash -non*.sh). - Added
.github/workflows/test-linux.ymlto runtests/integration-test.shandtests/test-phase-c-p1.sh. - Added
.github/workflows/dashboard.ymlfor frontend lint/build and dashboard API Python syntax checks.
Milestone W7-M2 (PR-12): Platform matrix smoke tests
Status: DONE
Owner: QA/Infra
Effort: 3-5 days
Files:
.github/workflows/matrix-smoke.yml(new)tests/smoke/(new) Acceptance:- Matrix includes Linux AMD path checks, NVIDIA checks, and WSL logic tests.
- macOS path at least verifies installer dispatch and docs correctness. Progress notes:
- Added
.github/workflows/matrix-smoke.ymlwith Linux and macOS jobs. - Added
tests/smoke/linux-amd.sh,tests/smoke/linux-nvidia.sh,tests/smoke/wsl-logic.sh, andtests/smoke/macos-dispatch.sh. - Local smoke runs pass and validate installer dispatch/support-matrix contracts for AMD/NVIDIA/WSL/macOS.
Status: DONE
Milestone W8-M1 (PR-13): Add extension authoring guide and templates
Status: DONE
Owner: Docs + Core
Effort: 2 days
Files:
docs/EXTENSIONS.md(new)extensions/templates/service-template.yaml(new)extensions/templates/dashboard-plugin-template.js(new)CONTRIBUTING.mdAcceptance:- “Add a service in 30 minutes” path works end-to-end.
- Guide includes test and compatibility checklist. Progress notes:
- Added
docs/EXTENSIONS.mdwith a concrete 30-minute extension authoring flow. - Added
extensions/templates/service-template.yamlandextensions/templates/dashboard-plugin-template.js. - Updated
CONTRIBUTING.mdto point contributors to extension workflow + validation checklist.
Status: IN_PROGRESS
Milestone W9-M1 (PR-14): Versioned release manifest + compatibility checks
Status: IN_PROGRESS
Owner: Release
Effort: 2-3 days
Files:
manifest.json(new)dashboard-api/main.pyods-update.shAcceptance:- Update path validates version compatibility and rollback point.
- Dashboard displays current/available release and update readiness. Progress notes:
- Added
manifest.jsonwith versioned release and compatibility contracts. - Added
scripts/check-compatibility.shto validate manifest contract paths and support-matrix alignment. - Integrated compatibility checks into CI via
.github/workflows/test-linux.yml. - Added
scripts/ods-doctor.shanddocs/ODS-DOCTOR.mdfor machine-readable readiness diagnostics (capability + preflight + runtime snapshot).
Day 0-30:
- PR-1, PR-2, PR-3, PR-4, PR-5
Day 31-60:
- PR-6, PR-7, PR-8, PR-10
Day 61-90:
- PR-9, PR-11, PR-12, PR-13, PR-14
- W1 must complete before W7 matrix tests can be trusted.
- W4 manifest contract must stabilize before W5 plugin registry.
- W3 compose contract must stabilize before docs freeze and release hardening.
Gate A (Day 30):
- Installer dispatch merged.
- Support matrix published.
- Compose contract direction finalized.
Gate B (Day 60):
- Manifest + env schema in production path.
- Dashboard registry merged.
Gate C (Day 90):
- CI matrix active.
- Extension authoring guide validated by a sample external contribution.
- Release manifest + rollback flow validated.