551d4d64af
7 research artifacts for M1 technologies:
- R-001: Trigger.dev bootstrap (runtime wired M1, tasks M3)
- R-002: WorkOS SSO + RBAC mapping + SCIM invitations
- R-003: Postgres RLS (withTenant) + per-tenant audit hash-chain
- R-004: AWS Secrets Manager (prod) + local-encrypted (dev) SecretProvider
- R-005: Go Relay Agent (modular install script, systemd, WebSocket,
heartbeat, SSH whitelist hook format + enforcement)
- R-006: Vanta evidence collection (M3 only - architectural note)
- R-007: Cross-tenant isolation pen test pattern (M1 gate)
PERSONAS.md: 6 personas for M1 (backend, data, frontend, lead-developer,
security-engineer, go-engineer [Wave D only]). Frameworks + territories
to be re-validated at Wave A start.
---ci---
phase: 0
milestone: v0.1
status: research
---/ci---
4.6 KiB
4.6 KiB
Persona Roster
Active personas for CoreCI Chat v0.1 M1:
| Persona | Active | Phase-Specific | Reason |
|---|---|---|---|
| backend-engineer | yes | no | Owns API gateway, RBAC, audit, secret manager, BYOM routing, Trigger.dev bootstrap, Postgres RLS — the bulk of M1. |
| data-engineer | yes | no | Owns Postgres schema, migrations, RLS policies, audit hash-chain. RLS + append-only audit are data-engineering territory. |
| frontend-engineer | yes | no | Owns the Next.js dashboard (Wave E): agent status, green/yellow/red, last 100 log lines, BYOM config form, RBAC user/role management UI. |
| lead-developer | yes | no | Coordinates wave decomposition, resolves territory disputes (e.g., who owns the withTenant helper — data vs backend), makes final architectural calls. |
| general | no | — | Not needed; the four specialized personas cover M1. |
| security-engineer | yes | no (custom) | M1 has heavy security surface: RBAC enforcement, RLS, audit immutability, secret manager, SSH whitelist hook, cross-tenant pen test. The default four personas lack a dedicated security lens; this custom persona owns the security review for Waves A/D specifically. |
| go-engineer | yes | yes (Wave D only) | Custom persona for the Go Relay Agent (Wave D). The default four personas are TS/web-oriented; Go systemd+WebSocket+whitelist work needs a Go-specific territory. Removed after Wave D ships. |
Framework Alignment (overrides from package.json — to be set when the monorepo is created)
These will be finalized at Wave A start once package.json + go.mod exist. Preliminary:
- backend-engineer:
frameworks: [next, node, typescript, trigger.dev, workos-sdk, aws-sdk] - data-engineer:
frameworks: [postgres, knex|prisma, node, typescript] - frontend-engineer:
frameworks: [next, react, typescript, tailwind] - security-engineer:
frameworks: [node, typescript, postgres-rls, aws-kms, go-seccomp] - go-engineer:
frameworks: [go, gorilla-websocket, systemd]
Territory Alignment (overrides to match actual file structure)
Preliminary globs, to be refined after Wave A scaffolds the monorepo:
- backend-engineer:
apps/control-plane/**packages/auth/**packages/audit/**packages/secrets/**packages/config/**packages/runtime/**
- data-engineer:
packages/db/**apps/control-plane/lib/db/**- migrations:
packages/db/migrations/**
- frontend-engineer:
apps/dashboard/**apps/control-plane/app/(dashboard)/**
- security-engineer:
packages/auth/rbac/**packages/audit/**packages/secrets/**packages/db/rls/**- tests:
tests/security/**,tests/pen/**
- go-engineer (Wave D only):
apps/relay-agent/**scripts/install.sh,scripts/install/*apps/relay-agent/whitelist/**
Constraint Alignment
Shared across all personas (from PROJECT.md Constraints + spec §5):
- Read-only by default; 100% of write-action requests rejected at MCP gateway (M2) and Relay Agent (M1 whitelist hook).
- BYOM mandatory; 100% of inference outbound to customer endpoint.
- Multi-tenancy isolation via Postgres RLS; cross-tenant queries return empty.
- Audit immutability; append-only; write failure halts.
- Secret handling; every credential via
SecretProvider; no env vars, config files, or DB columns for tenant secrets. - RBAC enforced at API gateway from the first endpoint.
- Branch discipline: writes only on
phase/NN-*;---ci---blocks in every commit.
Persona-specific:
- security-engineer: must sign off on Wave A (RLS + audit + secrets) and Wave D (whitelist hook) before those waves ship. Blocks the wave ship on a P0/P1 finding.
- go-engineer: the install script must be modular (detect-OS/install-binary/write-systemd-unit/register-target as separate functions) per PO kickoff note. A single monolithic
install.shis a P0 finding. - frontend-engineer: server components read via the API gateway (never bypass RLS); client components subscribe to the status WebSocket fan-out.
Phase-Specific Personas
go-engineer: active for Wave D only. After Wave D ships, the persona is removed from the roster and theapps/relay-agent/**territory reverts tobackend-engineerfor any M1 follow-up. M2 reactivates a Go persona for the SSH adapter.
Notes
- This file is consumed by the EXECUTE workflow for persona assignment and territory enforcement.
- Framework + territory globs will be re-validated at Wave A start against the actual
package.json/go.modand committed as a follow-up to the Wave A plan commit.