07 · Roadmap

F0 → F5

Six phases for retiring the ClawBot VPS and moving sales generation onto AWS. As of August 2026 the VPS is retired and the heavy lifting is done — generation cutover, Hub v2 review queue, the Contact Governor, and CI on CodeBuild all shipped. What remains is the last legacy piece: retire the legacy n8n send-worker, flip real client sends fully on, and finish the Tasks Screen v2 scope.

F0
✅ DONE — Generation cutover
Sales task generation moved off the VPS onto AWS. The n8n “Auto Tasks” crons now POST to the producer’s /generate → SQS → the task_consumer Lambda → DynamoDB single-table hv-hub-v2-development-tasks (us-east-2). 1,202 Airtable rows backfilled at exact parity; per-contact dedup guard added. Robin tasks cut over to the same table (source=‘robin’, #259).
owner: Farid · exit: 11 generator crons re-pointed (verified by ID) · read-cutover #194 ON
F1
✅ DONE — Hub v2 review queue (tasks-v2)
NestJS API + Next.js 15 on ECS Fargate at hubv2.apphappenventures.com. The tasks-v2 review queue with all six reviewer actions: Approve & Send, Edit (incl. Edit-with-AI via Bedrock), Reject, Snooze, Comment, Escalate — source-agnostic in QueueActionsService. Confidence routing (needs_review below threshold), edited-content captured for the learning loop, Audit_Log writes live (#239).
owner: Darío · exit: 6 actions live source-agnostic · #222 Approve & Send shipped
F2
✅ DONE — Contact Governor + reviewer fixes
GOV-01: a central ALLOW/DEFER gate (with BLOCK/DROP outcomes) in the consumer with a per-contact touch log, frequency caps and a Status-only kill-switch (#268, decoupled from the Enabled field). GOVERNOR_ENABLED=true in dev, fail-closed default (#297), validated end-to-end against the live Hub. Reviewer-action fixes shipped: a free-text reason is captured on Approve&Send / Snooze / Reject but is optional / non-blocking (DEV-471; reject & escalate still validate a reason code), escalation history shown, comment no longer auto-advances.
owner: Farid (gate) + Jess (UX) · exit: gate live + audited · kill-switch Status-only
F3
✅ DONE — Observability + CI/CD
SNS maestro-alerts + 3 alarms (dlq-not-empty, ingest-age, consumer-errors) → relay → Slack #hv-alerts; n8n failures via the Sentinel V2 poller. CI/CD: GitHub Actions on AWS CodeBuild self-hosted runners (off GitHub minutes), ECS Fargate deploys that wait for a healthy rollout, Terragrunt CD. Test gate (vitest + pytest + lint) + branch protection on every PR.
owner: Daniel · exit: #hv-alerts live · CI 9/9 green on CodeBuild
F4
⏳ PENDING — Full send go-live
Approve & Send is un-gated and a real end-to-end send was verified, but the message-dispatcher Lambda (the real Unified Sender) keeps the non-email channels in dry-run and redirects email to the configured TEST recipients, so real clients are never contacted yet. (The legacy maestro_sender sales Lambda is inert — its EventBridge tick is DISABLED.) Remaining: turn off the email dev-mode redirect and flip the per-channel Governor enables (sendSlackEnabled / sendWhatsappEnabled) on for real client outreach, under Farid/Jess sign-off.
owner: Farid · exit: dry-run off · real client sends flowing at volume
F5
⏳ PENDING — Retire n8n send-worker + Tasks Screen v2
✅ VPS decommissioned — the ClawBot box (187.77.29.73) has been retired (#152); generation has run 100% on AWS since the 2026-06-08 cutover (verified in DynamoDB). Still open: retire the legacy n8n “AWS Send Worker (Maestro)” — it still polls the same approved queue alongside the live message-dispatcher Lambda (dual-worker risk; today mitigated by dry-run). Finish the Tasks Screen v2 scope: action + bookkeeping task types, Aircall click-to-call, new row fields (hubspot_deal_id, contact_phone, based_on, risk_flags).
owner: Farid + Darío · exit: n8n send-worker retired · v2 fields shipped · VPS destroyed ✅
Dependencies

What blocks what

Hard blockers

Sequencing constraints

F4 → F5 · the legacy n8n send-worker must be retired (or the Lambda kept in dry-run) before flipping real sends fully on — otherwise the same approved queue is processed twice (double-send risk).

F5 · VPS · done — the generators are off the VPS (generation is 100% on AWS, verified in DynamoDB) and the box itself has been decommissioned (#152 closed). No longer a blocker.

Governor → Tasks v2 · Aircall click-to-call and account-card grouping depend on the Governor touch budget already being live (F2).

External deps

Not in our control

HubSpot API stability for the v3 ILS list memberships the consumer pulls — any v3 change forces a consumer rebuild.

Bedrock (claude-sonnet-4-6 inference profile, us-east-2) availability for draft generation and Edit-with-AI rewrites.

n8n Cloud uptime while the legacy send-worker is still in the loop (the VPS is now fully retired; only the legacy n8n send-worker remains to remove).