b6dd86fdf3
- README: status banner v0.12+v0.13, latest tag v0.12.10, subcommand table expanded (auth/nft/peer-setup/secrets rotate-master), "mTLS by default" corrected to "SSH-push canonical", docs table updated - docs/cli.md: complete rewrite (521->1465 lines), all ~40 subcommands - CHANGELOG: regenerated from git log (v0.11.29..HEAD) - help text: job run HCL->markdown, job stop daemon->SSH-push - docs/security-runbook.md: expanded to match P05 reality (seal/unseal, doctor audit/modes/oidc, incident response) - docs/webauthn.md: added auth register (P06) - docs/namespace.md: added inherit + set-constraint - internal/proxmox/bootstrap.go: comments password->key auth - internal/cli/status.go: deprecation warning - scripts/verify-docs.sh + make verify-docs: cli.md <-> orca --help - cmd/verify-reqs/main.go: fix bold-format regex (was bypassing v0.12) + case-insensitive status matching - .ciagent/REQUIREMENTS.md: v0.12 REQs marked complete - .ciagent/ROADMAP.md: v0.12 bolded COMPLETE ---ci--- project: orca phase: 11 milestone: v0.13 status: complete requirements: covered: [160] ---/ci---
142 lines
8.4 KiB
Markdown
142 lines
8.4 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to orca are documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## v0.13 milestone (in progress) — tag line v0.12.x
|
|
|
|
The v0.13 milestone is **Production Hardening Round 2 + UAT Plan**.
|
|
Three deep codebase sweeps (security, reliability, feature/doc claims)
|
|
surfaced ~60 gaps beyond v0.12. v0.13 closes all critical/high/medium
|
|
findings and delivers the UAT plan + signoff script that gates the
|
|
v1.0.0 cut.
|
|
|
|
**Load-bearing architectural changes**:
|
|
- **R-022** — `orca job run` deploys to remote nodes via the scheduler →
|
|
emitter → SSH-push pipeline. The local `exec.CommandContext` path is
|
|
removed (P03).
|
|
- **R-023** — Zero-trust enforcement is operationally wired: `acl.Check`
|
|
is invoked on every daemon handler + sshpush + txn apply path;
|
|
`acl.json` is 0600; audit `actor` carries OIDC sub/SVID; WebAuthn
|
|
registration requires auth; `cluster seal`/`unseal` + `doctor audit`/
|
|
`doctor modes` CLI commands exist (P04, P05).
|
|
|
|
### v0.13 phase commits (v0.11.29..HEAD)
|
|
|
|
- `ed91d68` — feat(P10): observability expansion — metrics + security headers (REQ-159)
|
|
- `531b369` — fix(P09): migration + operational safety — job stop, retention, logs cap (REQ-158)
|
|
- `3a3ea74` — fix(P08): transport + SSH safety — typed errors, IPv6, timeouts, signal (REQ-157)
|
|
- `0358efe` — fix(P07): concurrency safety — SQLite, flock, cache, atomic writes (REQ-156)
|
|
- `978334a` — feat(P06): auth init-idp real + auth register + doctor oidc (REQ-155)
|
|
- `9e83238` — feat(P05): seal/audit CLI + chain race fix + key zeroing (REQ-154)
|
|
- `5232fcb` — fix(P04): wire ACL enforcement + WebAuthn reg auth + audit actor (REQ-153)
|
|
- `cf3d98e` — feat(P03): wire scheduler into job run + fix jobspec parser (REQ-151, REQ-152)
|
|
- `4b70e31` — fix(P02): input validation + injection hardening — 11 vectors (REQ-150)
|
|
- `b0158c9` — fix(P01): bump go toolchain to 1.25.12 + fix pre-existing test bugs (REQ-149)
|
|
- `7479cd1` — docs(checkpoint): P0 shipped — v0.12.0 tagged
|
|
- `1a2dd1a` — docs(P00): incorporate grill binding conditions C-44..C-49
|
|
- `437d9b2` — docs(P00): grill v0.13 — CONDITIONAL PROCEED (6 binding conditions C-44..C-49)
|
|
- `82bfab1` — docs(P00): create phase plans — 14 phases, 15 REQs, vertical slices
|
|
- `a2a651e` — docs(P00): ideation results — 15 accepted (REQ-149..REQ-163), 0 skipped
|
|
- `3f5e5de` — docs(P00): research findings — threat model round 3 (~60 gaps, F26-F101)
|
|
- `7a60b35` — docs(P00): clarify v0.13 — 7 decisions resolved (D-248..D-254)
|
|
- `8071793` — docs(init): validate specification — v0.13 Production Hardening Round 2 + UAT Plan
|
|
|
|
### v0.13 phase summary
|
|
|
|
- **P0** — Pre-execution: specify → clarify → research → ideate → plan → grill (tag `v0.12.0`)
|
|
- **P01** — Toolchain & dependency vulns: Go 1.25.12 bump, 24 stdlib vulns closed, govulncheck triage (REQ-149)
|
|
- **P02** — Input validation & injection hardening: 11 vectors closed (`orca logs --job` RCE, tar-slip, sudoers injection, pprof loopback, txn/nft ID validation, drain allocID, cluster_compat, podman image, nft TrustedProbes, sudoers user/role) (REQ-150)
|
|
- **P03** — Scheduler/deployment wiring + jobspec parser: `orca job run` wires scheduler → emitter → SSH-push; `schedule:`/`timeout:` parsed by markdown jobspec (REQ-151, REQ-152)
|
|
- **P04** — ACL enforcement + WebAuthn registration auth: `acl.Check` wired into daemon + sshpush + txn apply; WebAuthn registration requires auth; audit actor carries OIDC sub/SVID (REQ-153)
|
|
- **P05** — Seal/audit CLI + chain race fix + key zeroing: `orca cluster seal`/`unseal`, `orca doctor audit`, `orca doctor modes` CLI commands; audit hash-chain race fix; master key zeroed on exit (REQ-154)
|
|
- **P06** — auth init-idp real + auth register + doctor oidc: real Dex deployment, `orca auth register` browser flow, `orca doctor oidc` health check (REQ-155)
|
|
- **P07** — Concurrency safety: SQLite WAL, flock on known_hosts, cache thread-safety, atomic writes (REQ-156)
|
|
- **P08** — Transport & SSH safety: typed dial errors, IPv6 support, connect timeouts, signal handling (REQ-157)
|
|
- **P09** — Migration & operational safety: `orca job stop` via SSH, DB retention check, logs cap (REQ-158)
|
|
- **P10** — Observability & metrics: metrics endpoint expansion, security headers (REQ-159)
|
|
- **P11** — Doc drift round 2 (this phase, REQ-160)
|
|
|
|
## v0.12 milestone — COMPLETE (tag line v0.11.x)
|
|
|
|
The v0.12 milestone is **Security Hardening (Zero-Trust Identity)**.
|
|
Comprehensive security hardening across the entire attack surface
|
|
including the OS, plus adoption of a zero-trust identity model. 25
|
|
threat-model findings (F1..F25) closed. R-021 adopted: no Orca-issued
|
|
credentials — human identity is exclusively external (OIDC), machine
|
|
identity is exclusively mTLS/SPIFFE.
|
|
|
|
**Milestone release**: `v0.11.28` (29 phases, tags `v0.11.0`..`v0.11.28`).
|
|
|
|
### v0.12 phase highlights
|
|
|
|
- Command injection fix (REQ-119, F3)
|
|
- Namespace path traversal fix (REQ-120, F4)
|
|
- Txn apply path allowlist (REQ-121, F5)
|
|
- OIDC client + bundled Dex (REQ-144; BYO-IdP override)
|
|
- WebAuthn connector for Dex / passkeys (REQ-148)
|
|
- ACL rewrite to OIDC claims + enforcement (REQ-145, REQ-122, F1)
|
|
- Remove all password/token paths (REQ-146, R-021, C-34)
|
|
- Master key seal-to-OIDC + Shamir 3-of-5 recovery (REQ-147, C-35)
|
|
- Daemon auth hardening (REQ-123, REQ-124, F6, F24)
|
|
- Audit log tamper-evidence (REQ-125, F2)
|
|
- SVID chain validation (REQ-126, F9)
|
|
- Backup symlink validation (REQ-127, F7)
|
|
- step-ca /tmp hardening (REQ-128, F10)
|
|
- Master key rotation (REQ-129, F12, C-30)
|
|
- File-mode audit expansion (REQ-130, F13)
|
|
- aggregate.sh JSON injection + drift-gate fix (REQ-131, F11, F18)
|
|
- install.sh checksum+GPG verification (REQ-132, F14)
|
|
- nftables ruleset hardening (REQ-133, F21)
|
|
- sudoers hardening (REQ-134, F22)
|
|
- System user consistency (REQ-135, F23)
|
|
- SQLite file-mode + at-rest encryption (REQ-136, F8, C-31)
|
|
- Migration safety + identity migration (REQ-137, F19, C-34)
|
|
- Legacy CA/mTLS/daemon + step-ca password-provisioner deletion (REQ-138, F16)
|
|
- known_hosts tightening + transport hardening (REQ-139, F15, F25)
|
|
- Drift event authentication (REQ-140, F18)
|
|
- Security integration test suite (REQ-141, C-33)
|
|
- Zero-trust + OIDC + WebAuthn + threat-model docs (REQ-142)
|
|
- Final review + ship + audit (REQ-143)
|
|
|
|
## v0.11 milestone — COMPLETE (tag line v0.10.x)
|
|
|
|
The v0.11 milestone is **Production Hardening**. See the git log and
|
|
ROADMAP for the full phase list.
|
|
|
|
## v0.1 milestone — COMPLETE
|
|
|
|
Initial CLI skeleton, node management, task execution, state
|
|
persistence, audit log, health checks, and CoreCI release flow.
|
|
|
|
- `e1b5385` — feat(P06): CoreCI release flow with .coreci.yml and tea integration
|
|
- `07b8ad2` — ship(P05): health checks merged into milestone
|
|
- `b06458d` — docs(P05): verification - 4 layers pass
|
|
- `708d983` — feat(P05): health check daemon with /healthz, /readyz, /v1/* handlers
|
|
- `30c523c` — ship(P04): state persistence merged into milestone
|
|
- `759b1b5` — docs(P04): verification - 4 layers pass
|
|
- `b25e074` — feat(P04): audit log + persistence hardening
|
|
- `bb6b5b3` — ship(P03): task exec merged into milestone
|
|
- `857f756` — docs(P03): verification - 4 layers pass
|
|
- `f9a9873` — feat(P03): task execution engine with HCL specs, jobs, tasks, WaitDelay
|
|
- `78334f1` — ship(P02): node mgmt merged into milestone
|
|
- `c7dbcef` — docs(P02): verification - 4 layers pass
|
|
- `9580f34` — feat(P02): node management with SQLite-backed registry
|
|
- `46e929e` — chore(P01): source .env in trigger_coreci.sh for GITEA_TOKEN
|
|
- `503923b` — ship(P01): cli skeleton merged into milestone
|
|
- `e3f6e1d` — docs(P01): verification - 4 layers pass
|
|
- `aa3ccce` — feat(P01): CLI skeleton with Cobra, subcommand stubs, pre-push hook
|
|
- `c203895` — docs(P00): create 6 phase plans with wave ordering
|
|
- `65eb2e6` — docs(P00): research findings - architecture + personas
|
|
- `6f34f17` — docs(P00): ideation - 30 ideas accepted (3 tiers)
|
|
- `bc7ce1c` — docs(P00): clarify ambiguities (full autonomy, 10 decisions)
|
|
- `55aae53` — chore(P00): rename orch-engine to orca, configure gitea + coreci (v0.1)
|
|
- `0cba1aa` — chore(P00): set autonomy level to full
|
|
- `e2e77e7` — chore(P00): quick task - populate config.json with backlog reference
|
|
- `8c086de` — chore(config): populate ciagent config with standard settings
|
|
- `8774008` — docs(init): validate specification
|
|
|
|
Generated by make changelog. Do not edit by hand.
|