Files
orca/.ciagent/PERSONAS.md
T
Jon Chery 3b8a2c4e75 docs(P00): research findings
R-001: Gitea container registry (OCI, docker login/push, anon pull when public)
R-002: tea repos edit --private false (visibility flip for REQ-045)
R-003: Gitea releases API (Authorization: token header, asset download URLs)
R-004: ORCA_HOME propagation audit (3 sites: certpaths/store/init)
R-005: distroless static-debian12 base (CGO-free, modernc/sqlite)
R-006: install.sh curl|sh conventions + in-place update pattern
Pitfalls P-001..P-003 (docker-in-CI, public-history leak, CGO_ENABLED=0)
PERSONAS.md: devops-engineer reactivated, data/security/network deactivated for v0.5

---ci---
project: orca
phase: 0
milestone: v0.5
status: research
---/ci---
2026-08-03 18:00:26 +00:00

9.2 KiB

active_personas, deactivated_personas, phase_specific, reason
active_personas deactivated_personas phase_specific reason
lead-developer
backend-engineer
cli-engineer
devops-engineer
frontend-engineer
data-engineer
security-engineer
network-engineer
cli-engineer
devops-engineer
Orca is a CLI-first, offline-first orchestration engine with no web UI and a single-binary distribution model. The v0.5 milestone is a distribution milestone (install, namespace, docker, public releases) that touches the CLI namespace layer, shell scripts, and container/build infrastructure. The persona roster reflects this: - lead-developer: coordination, task decomposition, territory adjudication between cli-engineer (namespace flag) and devops-engineer (install.sh, Dockerfile, release pipeline). - backend-engineer: no new backend surface in v0.5, but owns the `internal/store` and `internal/certpaths` refactors for namespace unification (REQ-041) — these are shared-infra concerns that the backend-engineer adjudicates. - cli-engineer: the `--system` flag on `rootCmd` and the `init --system` subcommand (REQ-042) — pure CLI surface. - devops-engineer (NEW, reactivated): install.sh, Dockerfile, .coreci.yml container pipeline, scripts/release.sh docker publish step. Deactivated for v0.5 (no v0.5 surface): - frontend-engineer: no web UI (unchanged from v0.1). - data-engineer: v0.5 has no store/schema work — the store refactor (R-004) is a 1-line routing change, not schema work. - security-engineer: v0.5 has no new cert/mTLS surface — the namespace unification moves cert paths but does not change cert logic. - network-engineer: v0.5 has no transport/network surface.

Personas: Orca

Roster

lead-developer

  • Domain: coordination
  • Frameworks: cobra
  • Constraints: boundary-enforcement, offline-first, no-redundant-implementations
  • Territory: **/*.go, cmd/**, internal/**
  • Active: true

backend-engineer

  • Domain: backend
  • Frameworks: cobra, net/http
  • Constraints: API-first, error-handling, minimal-dependencies, security-first
  • Territory: **/api/**, **/*_handler*, **/*_handler.go, internal/daemon/**
  • Active: true
  • Reason: Owns the daemon health endpoints (/healthz, /readyz) that the P02 doctor network check probes. The transport dispatch client (reused by doctor) lives in internal/transport but the handler surface is backend-engineer territory.

data-engineer

  • Domain: data
  • Frameworks: modernc/sqlite, iter
  • Constraints: schema-first, migration-safe, local-storage-only, no-goroutine-leak
  • Territory: **/store/**, **/model.go, **/migration*, migrations/**, internal/store/migrations/**
  • Active: true
  • Reason: Owns the iter.Seq[Job|Node] implementations on JobRepo/NodeRepo (P01) and the MigrationVersion query + PRAGMA integrity_check helper (P02). Added iter to frameworks and no-goroutine-leak to constraints (the iter.Seq polling loop must not leak — see RESEARCH_v0.3.md D-032). Territory confirmed against actual file structure: internal/store/ holds all repos + migrations/ subdir with 0001..0005_*.sql.

cli-engineer (custom)

  • Domain: CLI/UX
  • Frameworks: cobra, pflag
  • Constraints: discoverable-help, consistent-flag-naming, human-readable-output, machine-readable-json-flag, signal-handling
  • Territory: cmd/**, internal/cli/**, internal/commands/**
  • Active: true
  • Reason: Orca is CLI-first; this persona ensures CLI quality and discoverability. For v0.3 P01 it owns the --watch flag on orca job list / orca node list (signal.NotifyContext cancellation, table refresh vs streaming JSON). For P02 it owns the internal/cli/doctor.go subcommand wiring (replacing NetworkStub/DBStub calls). Added signal-handling to constraints (ctrl-c propagation to iter.Seq is a P01 correctness requirement). Territory confirmed: internal/cli/ holds all Cobra commands.

security-engineer (custom)

  • Domain: security
  • Frameworks: crypto/tls, crypto/x509, slog
  • Constraints: no-panic-in-production, structured-audit-logging, no-secret-in-logs, input-validation, least-privilege
  • Territory: **/auth/**, **/audit/**, internal/security/**, internal/transport/** (TLS config only)
  • Active: true
  • Reason: mTLS, audit logging, and input validation are first-class concerns. For v0.3 P02, the doctor network check reuses security.ClientTLSConfig (via transport.NewMTLSClient) to build the mTLS client that probes peer /healthz. The TLS-config portion of internal/transport/** remains security-engineer territory.
  • Phase scope: P02 only (mTLS client config for doctor network probe). P01 has no security surface.

network-engineer (custom, NEW in v0.2)

  • Domain: networking
  • Frameworks: net/http, crypto/tls (via internal/security), iter
  • Constraints: connection-resilience, retry-with-backoff, graceful-disconnect, context-propagation, bounded-probe-timeout
  • Territory: **/transport/**, **/engine/dispatcher*, **/engine/peer*, internal/engine/dispatcher.go, internal/engine/peer.go, internal/transport/**
  • Active: true
  • Reason: Owns the transport layer and peer-to-peer connection lifecycle. For v0.3 P02, the doctor network check is a read-only mTLS /healthz probe that reuses transport.MTLSClient — the connection lifecycle (dial, per-probe 3s timeout, handshake) is network-engineer territory. Added bounded-probe-timeout to constraints (doctor must not stall on one slow peer — RESEARCH_v0.3.md D-038). Territory confirmed: internal/transport/ holds mtls.go, dispatch.go, retry.go, idempotency.go, handshake_log.go.
  • Phase scope: P02 only (doctor network probe reuses transport layer).

devops-engineer (reactivated in v0.5)

  • Domain: devops / packaging
  • Frameworks: docker, bash, curl, tea
  • Constraints: idempotent-scripts, minimal-image-size, no-secret-in-image, reproducible-build
  • Territory: Dockerfile, scripts/install.sh, scripts/release.sh, .coreci.yml, docs/docker.md
  • Active: true
  • Reason: v0.5 is a distribution milestone. The devops-engineer owns install.sh (REQ-043/044), the Dockerfile + container registry publish (REQ-046), and the .coreci.yml release pipeline extension. Reactivated from v0.1 (where it was deactivated as "devops-sre" because CoreCI handled release). In v0.5, container + install surface is first-class devops work.

frontend-engineer

  • Active: false
  • Reason: No web UI in Orca (v0.1 onward). NOT relevant to v0.5. Confirmed deactivated.

data-engineer

  • Active: false (v0.5)
  • Reason: v0.5 has no store/schema work. The internal/store/store.go refactor (R-004) is a 1-line routing change from hardcoded ~/.orca to certpaths.DBPath() — this is shared-infra, adjudicated by backend-engineer, not data-engineer schema work.

security-engineer

  • Active: false (v0.5)
  • Reason: v0.5 has no new cert/mTLS surface. The namespace unification moves cert paths via certpaths.Dir() (already the source of truth) but does not change cert generation, validation, or TLS config logic.

network-engineer

  • Active: false (v0.5)
  • Reason: v0.5 has no transport/network surface. No new peer-to-peer, dispatch, or health-probe work.

Territory Enforcement

  • Mode: warn (per config.json)
  • Behavior: Out-of-territory file changes log a warning but do not block.
  • Rationale: Allows flexibility during early development; tighten to strict post-v0.1. For v0.5, the main territory-overlap risk is internal/store/store.go (R-004) which is backend-engineer shared-infra territory but touches the data layer — lead-developer adjudicates.

Phase-Specific Personas (v0.5)

Persona Active in Reason
cli-engineer P1 --system flag on rootCmd + init --system subcommand (REQ-042). Pure CLI surface.
devops-engineer P2, P3 P2: install.sh + in-place update (REQ-043/044). P3: Dockerfile + container registry publish (REQ-046).
backend-engineer P1 internal/store/store.go + internal/certpaths/certpaths.go namespace routing refactor (REQ-041). Shared-infra.

In full-autonomy mode, all personas are auto-accepted and the phase-scope assignments are applied automatically when a phase is committed.

v0.5 vs v0.3 Persona Diff

Change Rationale
devops-engineer reactivated (was devops-sre, deactivated in v0.1) v0.5 is a distribution milestone — install.sh, Dockerfile, container registry publish are first-class devops work. Renamed from devops-sre to devops-engineer to reflect build/packaging focus (not SRE/ops).
data-engineer deactivated v0.5 has no schema/store logic work — the store.go change is a 1-line routing refactor (shared-infra, backend-engineer).
security-engineer deactivated v0.5 has no new cert/mTLS surface.
network-engineer deactivated v0.5 has no transport/network surface.
cli-engineer phase scope: was P01+P02 (v0.3), now P1 only (v0.5) v0.5 P1 is the --system flag (CLI surface). P2/P3 are devops territory.
frontend-engineer Remains deactivated (no UI in v0.5).