Jon Chery 7bb31d4c09 feat(P0a2): namespace CRUD + inheritance engine (REQ-082)
P0a2 — Namespace inheritance resolver + orca ns CLI subcommands.

Resolver (REQ-082, internal/ns/resolve.go):
- Pure Resolve() function: DFS post-order chain assembly (most-specific
  first, _defaults implicit last D-185). Child-wins-scalar env merge, de-duped
  union constraints. Cycle detection with readable cycle path. Missing-parent
  + missing-_defaults + misordering (['_defaults','x']) rejection. Opt-out
  impossible (D-187). 89.6% coverage.

Parser (internal/ns/parse.go):
- ParseNSMd: hand-rolled YAML frontmatter (no yaml.v3 dep). Validates
  kind:Namespace + name, parses parents flow-array, inherits_env/secrets.
- ParseNSMdDir: walks root/*/ns.md, skips cluster/, requires _defaults.

CLI (internal/cli/ns.go, D-176):
- orca ns list/create/delete/inspect/validate. Inspect + validate use the
  resolver. Create refuses _defaults/cluster; delete refuses _defaults +
  non-empty namespaces. JSON output support. 85.2% coverage.
- Registered on rootCmd.

Tests: resolve_test.go (11 tests), parse_test.go (14 tests), ns_test.go
(21 tests). 18 packages pass, 20 bats pass, gofmt clean, verify-reqs 90
consistent.

---ci---
project: orca
phase: P0a2
milestone: v0.9
status: execute
---/ci---
2026-08-05 16:49:12 +00:00

Orca

Offline/CLI-first orchestration engine inspired by HashiCorp Nomad, far simpler than Kubernetes.

Status

v0.1: Foundation — see .ciagent/ROADMAP.md for the 6-phase plan.

Pillars

  • Simplicity — single binary, minimal dependencies
  • AI-first — CLI designed for both humans and AI agents
  • Offline-first — no cloud dependencies
  • CLI-first — primary interface is the command line
  • Security before features — NFRs ship before new functionality
  • Bug fixes before features — stability is paramount
  • NFRs before features — observability and auditability first

Quickstart

Install (1-liner)

# User-level install (binary at ~/.local/bin/orca, state at ~/.orca)
curl -fsSL https://git.cloudinit.dev/coreci/orca/raw/branch/main/scripts/install.sh | bash

# System-level install (binary at /usr/local/bin/orca, state at /root/.orca)
curl -fsSL https://git.cloudinit.dev/coreci/orca/raw/branch/main/scripts/install.sh | sudo bash -s -- --system

# Pin a specific version
curl -fsSL https://git.cloudinit.dev/coreci/orca/raw/branch/main/scripts/install.sh | bash -s -- --version v0.4.2

Then initialize local state and verify:

orca init          # creates ~/.orca/ (or /root/.orca with --system)
orca version       # prints version info
orca --help        # show all subcommands

Build from source

make build         # Build binary to ./bin/orca
./bin/orca init    # Initialize local state
./bin/orca version # Verify

Update in place

Re-running the installer updates the binary while preserving your config, database, and certificates in the namespace dir:

curl -fsSL https://git.cloudinit.dev/coreci/orca/raw/branch/main/scripts/install.sh | bash
# → "updated orca from v0.4.1 to v0.4.2"

Subcommands

Command Description Status
orca version Print version info Phase 1
orca init Initialize local orca state Phase 1 (stub)
orca status Show orca daemon status Phase 1 (stub)
orca node Node management (join, leave, list) Phase 2
orca job Job management (run, list, stop, logs) Phase 3

Development

make build      # Build binary to ./bin/orca
make test       # Run tests with race detection
make lint       # Run golangci-lint
make fmt        # Format code
make release    # Build + create Gitea release (Phase 6)

Architecture

See .ciagent/ARCHITECTURE.md for full architecture details.

License

MIT — see LICENSE.

S
Description
Orca — offline/CLI-first orchestration engine (Nomad-inspired, far simpler than Kubernetes)
Readme MIT 6.2 MiB
Languages
Go 94.7%
Shell 4.9%
Makefile 0.3%