Risk Assessment Policy

Status: ACTIVE Owner: Daan ([email protected]) Effective: 2026-04-20 Last reviewed: 2026-04-20 Next review: 2026-10-20

Purpose

Define how rotor.sh identifies, assesses, prioritizes, and mitigates risks to the confidentiality, integrity, and availability of customer data and platform services.

Scope

All risks affecting rotor.sh production systems, customer data, and business operations.

Risk Assessment Cadence

ActivityFrequencyOwner
Full risk reviewQuarterlyDaan
New feature risk assessmentPer feature (in PR description)Feature author
Vendor risk reviewAnnualDaan
Penetration testAnnualExternal firm

Risk Categories

1. Infrastructure Risks

RiskLikelihoodImpactMitigation
Redis maxmemory eviction causing queue corruptionLow (guarded by assertNoEviction)HighFND-07 startup guard; Railway noeviction confirmed (Phase 0)
Railway service outageMediumHighRailway 99.9% SLA; BullMQ persists jobs; worker auto-restarts
Supabase outageLowHighSupabase 99.9% SLA; read-through cache on resolver; jobs still queue in Redis
Fly.io managed worker failureMediumMedium (Enterprise only)Autoscaler retries provisioning; BullMQ job retries with backoff

2. Security Risks

RiskLikelihoodImpactMitigation
Credential leak (API key, Railway secret)LowCriticalRailway vault; key rotation on detection; audit log; Sentry alerts
DDoS on public APIMediumHighRailway load balancer; rate limiting (manual Redis INCR+PEXPIRE); quota middleware
SSRF via callback URLsLowHighvalidateCallbackUrl DNS check; SSRF guard in delivery worker
Tenant cross-contamination (Redis prefix escape)Very LowCriticalBullMQ prefix audit (audit-prefix.sh); single source of truth in prefix.ts
PII leakage in job payloadsMediumHighGuardrail Engine PII redaction; configurable per-workspace
Compromised LLM judge outputLowMediumBrand-tone circuit breaker fails open (safe default); humans approve
Billing abuse / quota circumventionMediumMediumPer-plan hard caps at API write time; Stripe reconciler detects drift

3. Compliance Risks

RiskLikelihoodImpactMitigation
SOC 2 observation window gap (Railway manual evidence)MediumMediumvanta-manual-evidence.md monthly cadence
GDPR data subject request beyond 30-day SLALowMediumManual process documented in data-retention-policy.md
API misuse / AUP violationMediumLow-MediumAudit logs; kill-switch (BIL-06); AUP enforcement process

4. Operational Risks

RiskLikelihoodImpactMitigation
Stalled-job duplication (at-least-once semantics)MediumMediumSDK SIGTERM drain; idempotency keys; history archiver dedup
BullMQ Lua script version driftLowMediumpeerDep pin >=5.73 <6; version check at startup
Claude Code skill distribution drift (Anthropic registry change)MediumLowFall back to local skill install; monitor Claude Code releases

Risk Acceptance

Risks rated Low × Low may be accepted without further mitigation. All other risks require a documented mitigation plan and owner.

Accepted risks must be documented in the Vanta risk register with:

  • Risk description
  • Current mitigation
  • Residual risk level
  • Acceptance date and owner

Review Cadence

Reviewed quarterly. Next full review: 2026-07-20.