df58bc25a3
---ci--- project: orca phase: 3 milestone: v0.3 status: complete requirements: covered: [REQ-022, REQ-030, REQ-032] partial: [] ---/ci--- v0.3 milestone merged to main. Includes all v0.2 work (P08-P10) that was previously on the milestone branch but not yet merged to main, plus the v0.3 completion work (iter.Seq streaming + doctor network/db). v0.2 phases included: P08 (mTLS), P09 (scheduling), P10 (security scan). v0.3 phases: P0 (pre-execution), P1 (iter.Seq streaming), P2 (doctor), P3 (final review+ship). Total: 40 requirements, all complete. No new go.mod dependencies. Full test suite passes under -race. gofmt + go vet clean.
10 KiB
10 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.3 milestone is a 2-phase completion milestone (iter.Seq streaming + doctor network/db) that touches the CLI, store, doctor, transport, and security layers. The persona roster reflects this: - lead-developer: coordination, task decomposition, territory adjudication (e.g. D-039 dbPath relocation between cli-engineer territory and the doctor package). - backend-engineer: daemon health endpoint surface that the doctor network check probes; transport dispatch client reuse. - data-engineer: iter.Seq[Job|Node] on the store repos (P01) and the migration-version query + PRAGMA integrity_check in the store layer (P02). - cli-engineer: the --watch flag on `orca job list` / `orca node list` (P01) and the doctor subcommand wiring (P02). - security-engineer: mTLS client config reuse for the doctor network probe (P02) — TLS config is the security-engineer territory per v0.2. - network-engineer: the doctor /healthz probe over mTLS reuses the transport layer (P02) — connection lifecycle / peer reachability is the network-engineer territory. Deactivated: - frontend-engineer: no web UI in Orca (v0.1 onward). NOT relevant to v0.3. - devops-sre: no container/cloud integrations; release flow is handled by CoreCI (not a persona territory). Phase-specific (v0.3): - cli-engineer: P01 (--watch flag is a CLI surface) + P02 (doctor subcommand wiring). - data-engineer: P01 (iter.Seq on store repos) + P02 (migration version + integrity check in store layer). - security-engineer: P02 only (mTLS client config for doctor network probe). - network-engineer: P02 only (mTLS /healthz probe over transport). |
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).
frontend-engineer
- Active: false
- Reason: No web UI in Orca (v0.1 onward). NOT relevant to v0.3 — v0.3 adds no UI surface. Confirmed deactivated.
devops-sre
- Active: false
- Reason: No container/cloud integrations. Release flow is handled by CoreCI (not a persona territory). Confirmed deactivated.
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.3, the main territory-overlap risk is D-039 (movingdbPathfrominternal/clitointernal/certpaths) which crosses cli-engineer and the shared-infra concern — lead-developer adjudicates.
Phase-Specific Personas (v0.3)
| Persona | Active in | Reason |
|---|---|---|
cli-engineer |
P01, P02 | P01: --watch flag is a CLI surface (signal handling, table/JSON render). P02: doctor subcommand wiring in internal/cli/doctor.go. |
data-engineer |
P01, P02 | P01: `iter.Seq[Job |
security-engineer |
P02 | mTLS client config reuse for the doctor network probe. P01 has no security surface. |
network-engineer |
P02 | mTLS /healthz probe over the transport layer (connection lifecycle, per-probe timeout). P01 has no network surface. |
In full-autonomy mode, all personas are auto-accepted and the phase-scope assignments are applied automatically when a phase is committed.
v0.3 vs v0.2 Persona Diff
| Change | Rationale |
|---|---|
data-engineer frameworks: added iter |
P01 introduces iter.Seq[T] on the store repos — a new stdlib framework surface for this persona. |
data-engineer constraints: added no-goroutine-leak |
The iter.Seq polling loop must not leak goroutines (inline pull loop, defer ticker.Stop, rows.Close on every path — RESEARCH D-032). |
cli-engineer constraints: added signal-handling |
P01 requires signal.NotifyContext for ctrl-c propagation to iter.Seq (D-031). |
network-engineer constraints: added bounded-probe-timeout |
P02 doctor network check must bound each peer probe (3s) so one slow peer doesn't stall diagnostics (D-038). |
network-engineer phase scope: was P02-only (v0.2), now P02-only (v0.3) |
Same persona, different phase content — v0.3 P02 is doctor network, not multi-node dispatch. |
security-engineer phase scope: was P01+P02 (v0.2), now P02-only (v0.3) |
v0.3 has no new cert/CA work; security surface is limited to reusing the existing mTLS client config in doctor. |
frontend-engineer |
Remains deactivated (no UI in v0.3). |
devops-sre |
Remains deactivated (CoreCI handles release). |
Migration from v0.2
backend-engineerterritory unchanged:internal/daemon/**still owns HTTP handlers. The/healthzendpoint that the doctor network check probes is backend-engineer territory; the probing client is network-engineer.data-engineerterritory expanded scope: still ownsinternal/store/**but now adds theiter.Seqpolling implementations (P01) and a publicMigrationVersionquery (P02).security-engineerterritory unchanged:internal/security/**+ the TLS config portion ofinternal/transport/**. The doctor network check calls intosecurity.ClientTLSConfigindirectly viatransport.NewMTLSClient— no new security-engineer files, just reuse.cli-engineerterritory unchanged:internal/cli/**. P01 modifiesjob.goandnode.go; P02 modifiesdoctor.go. ThedbPathrelocation (D-039) moves a 5-line function out ofinternal/cli/node.gointointernal/certpaths— cli-engineer territory loses one function, shared infra gains it.