3b8a2c4e75
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---
9.2 KiB
9.2 KiB
active_personas, deactivated_personas, phase_specific, reason
| active_personas | deactivated_personas | phase_specific | reason | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
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 ininternal/transportbut 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 onJobRepo/NodeRepo(P01) and theMigrationVersionquery +PRAGMA integrity_checkhelper (P02). Addediterto frameworks andno-goroutine-leakto 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 with0001..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
--watchflag onorca job list/orca node list(signal.NotifyContext cancellation, table refresh vs streaming JSON). For P02 it owns theinternal/cli/doctor.gosubcommand wiring (replacing NetworkStub/DBStub calls). Addedsignal-handlingto 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(viatransport.NewMTLSClient) to build the mTLS client that probes peer/healthz. The TLS-config portion ofinternal/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(viainternal/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
/healthzprobe that reusestransport.MTLSClient— the connection lifecycle (dial, per-probe 3s timeout, handshake) is network-engineer territory. Addedbounded-probe-timeoutto 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.ymlrelease 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.gorefactor (R-004) is a 1-line routing change from hardcoded~/.orcatocertpaths.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(perconfig.json) - Behavior: Out-of-territory file changes log a warning but do not block.
- Rationale: Allows flexibility during early development; tighten to
strictpost-v0.1. For v0.5, the main territory-overlap risk isinternal/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). |