Files
orca/.ciagent/PERSONAS.md
T
Jon Chery 7c4b603811 docs(P00): v0.7 research findings + persona assessment
Codebase audit: cert command unreachable, no config parser, low coverage
(engine 8.3%, transport 26.3%, proxmox 5.1%, audit 0%), pprof deferred.
5 architectural decisions (AD-022..AD-026). Zero new deps.

---ci---
project: orca
phase: 0
milestone: v0.7
status: research
---/ci---
2026-08-03 20:29:07 +00:00

6.6 KiB

active_personas, deactivated_personas, phase_specific, reason
active_personas deactivated_personas phase_specific reason
lead-developer
backend-engineer
data-engineer
cli-engineer
security-engineer
devops-engineer
network-engineer
frontend-engineer
Orca v0.7 is an NFR hardening & completion milestone. The work is CLI registration (cert command), a new internal/config package, test coverage uplift across engine/transport/proxmox/audit, and an opt-in pprof endpoint on the daemon. No schema changes, no new security surface, no packaging/distribution, no UI. Roster changes vs v0.6: - data-engineer: RETAINED — owns cert_repo tests + store coverage. - security-engineer: DEACTIVATED — v0.7 adds no new security surface (pprof is operator-only, addr-gated; cert registration exposes existing security code, does not add new). - cli-engineer: DEACTIVATED — merged into lead-developer for v0.7 (the cert registration is a 1-line AddCommand; config --config flag is root-command wiring, not a new CLI subsystem). - devops-engineer: DEACTIVATED — no packaging/distribution in v0.7.

Personas: Orca

Roster

lead-developer

  • Domain: coordination
  • Frameworks: cobra
  • Constraints: boundary-enforcement, offline-first, no-redundant-implementations
  • Territory: **/*.go, cmd/**, internal/**
  • Active: true
  • Reason: Coordination across P01/P02/P03. SSH/bootstrap touches security + cli + store + doctor — territory overlaps need adjudication (proxmox package boundary, doctor Proxmox check scaffolding).

backend-engineer

  • Domain: backend
  • Frameworks: cobra, net/http, golang.org/x/crypto/ssh
  • Constraints: API-first, error-handling, minimal-dependencies, security-first, idempotent-bootstrap
  • Territory: **/api/**, **/*_handler*, **/*_handler.go, internal/daemon/**, internal/proxmox/**, internal/cli/init.go
  • Active: true
  • Reason: Owns the orca init full-bootstrap orchestration (CA + cert + db + localhost node, idempotent) and the internal/proxmox/bootstrap.go SSH session sequence (dial, deploy pubkey, useradd, pveum, sudoers, visudo validate). Added idempotent-bootstrap constraint (D-036 — re-run must be skip-and-refresh) and golang.org/x/crypto/ssh to frameworks.

data-engineer

  • Domain: data
  • Frameworks: modernc/sqlite, iter
  • Constraints: schema-first, migration-safe, local-storage-only, no-goroutine-leak, nullable-column-handling
  • Territory: **/store/**, **/model.go, **/migration*, migrations/**, internal/store/migrations/**, internal/model/node.go
  • Active: true
  • Reason: Reactivated for v0.6. Owns migration 0006_node_kind_os.sql (REQ-049 — nullable kind/os columns, backward-compatible) and NodeRepo schema extension (Insert/Get/List/Watch/scanNode column additions + new GetByName/UpdateLastSeenAndOS helpers). Added nullable-column-handling constraint (NULL → "" in Go struct, not nil-deref).

cli-engineer

  • Domain: CLI/UX
  • Frameworks: cobra, pflag
  • Constraints: discoverable-help, consistent-flag-naming, human-readable-output, machine-readable-json-flag, signal-handling, password-flag-redaction
  • Territory: cmd/**, internal/cli/**, internal/commands/**
  • Active: true
  • Reason: Owns orca init multi-step bootstrap output UX (progress lines per step), orca node join --type/--host/--user/--password/--proxmox-user/--proxmox-role flag wiring, and doctor os/doctor proxmox subcommand wiring. Added password-flag-redaction constraint (D-031 — --password never echoed, prefer $ORCA_PROXMOX_PASSWORD, zero after use).

security-engineer

  • Domain: security
  • Frameworks: crypto/tls, crypto/x509, crypto/ed25519, golang.org/x/crypto/ssh, slog
  • Constraints: no-panic-in-production, structured-audit-logging, no-secret-in-logs, input-validation, least-privilege, tofu-host-key-pinning, noexec-sudoers
  • Territory: **/auth/**, **/audit/**, internal/security/**, internal/transport/** (TLS config only), internal/proxmox/** (SSH + sudoers + PVE role)
  • Active: true
  • Reason: Reactivated for v0.6. Owns internal/security/sshkey.go (Ed25519 keygen, 0600/0644 mode enforcement per REQ-033 spirit), TOFU host-key pinning via knownhosts.New, sudoers least-privilege design (NOEXEC on pct/qm, exclude pvesh, no NOEXEC on apt-get/dpkg), password redaction (D-031), and audit logging of all bootstrap/join actions (REQ-052). Added tofu-host-key-pinning and noexec-sudoers constraints. Co-owns internal/proxmox/** with backend-engineer (security owns SSH auth + sudoers content; backend owns the session orchestration).

devops-engineer

  • Active: false (v0.6)
  • Reason: Deactivated — v0.6 has no install.sh, Dockerfile, .coreci.yml, or release-pipeline surface. The Proxmox SSH bootstrap is backend + security work, not devops. Was active in v0.5 (distribution milestone).

network-engineer

  • Active: false (v0.6)
  • Reason: v0.6 has no transport/mTLS surface. SSH is point-to-point bootstrap, not the mTLS mesh network-engineer owns.

frontend-engineer

  • Active: false (v0.6)
  • Reason: No web UI in Orca (unchanged from v0.1 onward).

Territory Enforcement

  • Mode: warn (per config.json)
  • Behavior: Out-of-territory file changes log a warning but do not block.
  • Key overlaps in v0.6 (lead-developer adjudicates):
    • internal/proxmox/bootstrap.go — security-engineer (SSH auth, sudoers, PVE role) + backend-engineer (session orchestration, error handling). Boundary: security package exposes BootstrapProxmox(ctx, opts) error; the function lives in internal/proxmox but imports internal/security for SSH key handling.
    • internal/doctor/doctor.go Proxmox() — reuses internal/proxmox SSH client (security) but check scaffolding clones doctor.Network() pattern. Backend-engineer adjudicates (network-engineer deactivated).
    • internal/store/node_repo.go — data-engineer territory, but the UpdateLastSeenAndOS caller is internal/cli/init.go (backend). Standard repo-consumer boundary.

v0.6 vs v0.5 Persona Diff

Change Rationale
data-engineer reactivated Owns migration 0006 + NodeRepo schema extension (kind/os columns).
security-engineer reactivated Owns SSH keygen, TOFU host-key, sudoers, PVE role — first-class security surface.
devops-engineer deactivated v0.6 has no packaging/distribution surface.
network-engineer remains deactivated No transport/mTLS surface.
frontend-engineer remains deactivated No web UI.