bd4a34daa2
---ci--- project: orca phase: 0 milestone: v0.7 status: specify ---/ci---
135 lines
6.8 KiB
Markdown
135 lines
6.8 KiB
Markdown
# Roadmap: Orca
|
||
|
||
## Milestone v0.1: Foundation — **COMPLETE**
|
||
|
||
- [x] Phase 0: Project Initialization & Specification
|
||
- [x] Phase 1: Core CLI Skeleton & Command Parsing
|
||
- [x] Phase 2: Basic Node Management (Join/Leave)
|
||
- [x] Phase 3: Simple Task Execution Engine
|
||
- [x] Phase 4: Local State Persistence
|
||
- [x] Phase 5: Basic Health Checking
|
||
- [x] Phase 6: CoreCI Full Release Flow
|
||
|
||
**Tagged `v0.2.0`** (next-minor per feature-milestone promotion rule).
|
||
|
||
## Deferred to v0.2 (out of scope for v0.1)
|
||
|
||
- Multi-node scheduling (D-004 decision: single-node only in v0.1)
|
||
- mTLS for inter-node communication (REQ-011, REQ-023)
|
||
- `gosec` + `govulncheck` in CI pipeline (REQ-014)
|
||
- `iter.Seq` streaming job lists (REQ-022)
|
||
- Frontend / devops personas (no web UI; CoreCI handles release)
|
||
|
||
## Milestone v0.2: Networking, Observability, Security Hardening — **COMPLETE (merged to main via v0.3)**
|
||
|
||
Scope: extend v0.1 with secure cross-node transport, multi-node scheduling,
|
||
richer CI security scanning, and streaming I/O.
|
||
|
||
- [x] Phase 8: mTLS handshake + internal CA with CSR join (Wave 1) — shipped v0.2.1
|
||
- [x] Phase 9: Multi-node scheduling & job dispatch (Wave 1) — shipped v0.2.2
|
||
- [x] Phase 10: `gosec` + `govulncheck` + gitleaks in CI (Wave 2) — shipped v0.2.3
|
||
- [x] Phase 11: `iter.Seq` streaming job/node lists (Wave 2) — **completed in v0.3 P01** (shipped v0.3.1)
|
||
|
||
**Milestone tag**: `v0.4.0` (shipped — v0.2 work merged to main via v0.3 milestone).
|
||
|
||
Per-phase tags: `v0.2.1` (P01), `v0.2.2` (P02), `v0.2.3` (P03) — all shipped.
|
||
|
||
## Milestone v0.3: Scheduling & Streaming Completion — **COMPLETE**
|
||
|
||
Scope: complete the two work items deferred from v0.2 that were not
|
||
already shipped in P08-P10. A re-init SPECIFY codebase audit confirmed
|
||
that REQ-014/027/028/029/031/037/039/040 all shipped in P08-P10 despite
|
||
stale REQUIREMENTS.md marking them Pending. The remaining work is lean:
|
||
|
||
- [x] Phase 0: Pre-execution (specify → clarify → research → plan → grill) — shipped v0.3.0
|
||
- [x] Phase 1: `iter.Seq` streaming for `--watch` flags (REQ-022, REQ-030) — shipped v0.3.1
|
||
- [x] Phase 2: `orca doctor` network + db full implementation (REQ-032 completion) — shipped v0.3.2
|
||
- [x] Phase 3: Final review + ship + audit (milestone release) — shipped v0.3.3
|
||
|
||
**Milestone tag**: `v0.4.0` (next-minor per feature-milestone promotion rule).
|
||
|
||
Per-phase tags: `v0.3.0` (P0), `v0.3.1` (P01), `v0.3.2` (P02), `v0.3.3` (P03 final = milestone release).
|
||
Per `.ciagent/RELEASE_POLICY.md`, every phase tag produces a Gitea release.
|
||
|
||
### Per-phase REQ coverage
|
||
|
||
- **P01 — `iter.Seq` streaming for `--watch` flags**
|
||
- REQ-022 (`iter.Seq` for streaming job lists, Go 1.25+)
|
||
- REQ-030 (`--watch` output format mode: table default vs streaming JSON per event)
|
||
- Applies to both `orca job list --watch` and `orca node list --watch`
|
||
(D-024, per ARCHITECTURE.md CLI layer + D-017)
|
||
|
||
- **P02 — `orca doctor` network + db full implementation**
|
||
- REQ-032 (completion: network reachability via mTLS `/healthz` probe,
|
||
db integrity via `PRAGMA integrity_check` + migration version)
|
||
- Replaces `NetworkStub` and `DBStub` from v0.2 P01
|
||
|
||
### v0.3 is a completion milestone, not a direction change
|
||
|
||
The vision ("minimalist, offline-first, CLI-first orchestration
|
||
engine") is unchanged. v0.3 closes out the v0.2 deferrals and merges
|
||
the accumulated v0.2 work to main.
|
||
|
||
## Milestone v0.5: Distribution — **COMPLETE**
|
||
|
||
Scope: make Orca installable, distributable, and containerized. The
|
||
engine functionality from v0.1–v0.3 is unchanged; this milestone is
|
||
purely about delivery surface.
|
||
|
||
- [x] Phase 0: Pre-execution (specify → clarify → research → plan) — shipped `v0.4.1` (+ repo public)
|
||
- [x] Phase 1: Namespace unification (`ORCA_HOME` + `--system`) (REQ-041, REQ-042) — shipped `v0.4.2`
|
||
- [x] Phase 2: `install.sh` + in-place update + README quickstart (REQ-043, REQ-044) — shipped `v0.4.3`
|
||
- [x] Phase 3: Docker release (Dockerfile + Gitea container registry) (REQ-046) — shipped `v0.4.4`
|
||
- [x] Phase 4: Final review + ship + audit (milestone release) — shipped `v0.4.5`
|
||
|
||
**Operational prerequisite (P0 ship)**: repo + org visibility flipped to
|
||
public (REQ-045) — unauth releases API + asset download + docker pull all
|
||
verified HTTP 200.
|
||
|
||
**Milestone tag**: `v0.4.5` (final phase patch = milestone release per
|
||
feature-milestone promotion rule). Per-phase tags: `v0.4.1`…`v0.4.5`.
|
||
|
||
## Milestone v0.6: Node Bootstrap & Proxmox
|
||
|
||
## Milestone v0.6: Node Bootstrap & Proxmox — **COMPLETE**
|
||
|
||
Scope: make `orca init` produce a fully working single-node cluster
|
||
(CA + server cert + DB + localhost node registered with auto-detected
|
||
OS), and add Proxmox 8 & 9 as a first-class remote node type joined
|
||
over SSH with least-privilege role delegation.
|
||
|
||
- [x] Phase 0: Pre-execution (specify → clarify → research → plan → grill) — tag `v0.5.0`
|
||
- [x] Phase 1: `orca init` full bootstrap + localhost node + schema 0006 (REQ-047, REQ-048, REQ-049) — tag `v0.5.1`
|
||
- [x] Phase 2: Proxmox SSH join + OrcaOperator role + sudoers allowlist (REQ-050, REQ-051) — tag `v0.5.2`
|
||
- [x] Phase 3: `doctor os` + `doctor proxmox` SSH probe + audit logging (REQ-052) — tag `v0.5.3`
|
||
- [x] Phase 4: Final review + ship + audit (milestone release) — tag `v0.5.4`
|
||
|
||
**Milestone type**: feature (P1/P2/P3 ship `feat` phases).
|
||
**Milestone tag**: `v0.5.4` (final phase patch = milestone release per
|
||
feature-milestone promotion rule). Per-phase tags: `v0.5.0`…`v0.5.4`.
|
||
|
||
Tags run on the previous minor's patch line (v0.5.x) per
|
||
branch-strategy.md. The milestone branch label uses the milestone
|
||
number (`milestone/v0.6-node-bootstrap-proxmox`); no separate minor
|
||
tag is created.
|
||
|
||
## Milestone v0.7: Hardening & Completion
|
||
|
||
Scope: NFR milestone closing gaps surfaced by the v0.7 IDEATE stage —
|
||
an unreachable command tree, a missing config file layer, low test
|
||
coverage in core packages, and the long-deferred pprof endpoint.
|
||
|
||
- [ ] Phase 0: Pre-execution (specify → clarify → research → ideate → plan) — tag `v0.5.5`
|
||
- [ ] Phase 1: Register `orca cert` command tree + cert_repo tests (REQ-053) — tag `v0.5.6`
|
||
- [ ] Phase 2: HCL config file parsing — `internal/config` package (REQ-054) — tag `v0.5.7`
|
||
- [ ] Phase 3: Test coverage uplift — engine/transport/proxmox/audit ≥ 50% (REQ-055) — tag `v0.5.8`
|
||
- [ ] Phase 4: `--pprof` opt-in on `orca daemon` (REQ-056) — tag `v0.5.9`
|
||
- [ ] Phase 5: Final review + ship + audit (milestone release) — tag `v0.5.10`
|
||
|
||
**Milestone type**: NFR (all phases are fix/test/chore; no `feat` phases).
|
||
**Milestone tag**: `v0.5.10` (final phase patch = milestone release per
|
||
NFR-milestone progressive-patch rule). Per-phase tags: `v0.5.5`…`v0.5.10`.
|
||
Tags run on the previous minor's patch line (v0.5.x) per
|
||
branch-strategy.md. The milestone branch label uses the milestone
|
||
number (`milestone/v0.7-hardening-completion`); no separate minor tag.
|