Preflight
Rails
Every rail account has a credential
5 of 5 have no key: Futurebits Buffer A, Futurebits Buffer B, Futurebits Cal.com, Futurebits GA4, Futurebits Search Console.
Control panel → Rail accounts. Paste each key; it encrypts on save.
No credential is expiring or failing
0 stored, none at risk.
Every credential has passed a connection test
No credentials stored yet.
Control panel → Rail accounts.
Analytics
GA4 account has its property reference
The account exists but has no property id recorded, so the snapshot job has nothing to query.
Put the GA4 property id (properties/123456) in the account's external reference.
Search Console account has its property reference
The account exists but has no site URL recorded, so the snapshot job has nothing to query.
Put the Search Console site URL (sc-domain:example.com) in the account's external reference.
Domain identity for go.futurebits.tech
Verified for sending.
Easy DKIM
SES reports DKIM SUCCESS with 3 tokens.
Custom MAIL FROM on bounce.go.futurebits.tech
Set, status SUCCESS.
Production access
Out of the sandbox. Quota 50000/day at 14/s, 0 sent in the last 24h.
Configuration set mission-control-futurebits
Exists.
Event destination
No event destination, so bounces and complaints never reach the control plane.
Run
npm run ses:setup -- --brand futurebits --applyTopic policy for delivery events
The topic policy does not let ses.amazonaws.com publish, so nothing will ever be delivered even though the subscription looks healthy.
Run
npm run ses:setup -- --brand futurebits --applySNS subscription for delivery events
Nothing is subscribed to https://mission.futurebits.tech/api/webhooks/ses/futurebits.
Bring the VPS up behind TLS, then run: npm run ses:setup -- --brand futurebits --apply
Topic policy for inbound replies
The topic policy does not let ses.amazonaws.com publish, so nothing will ever be delivered even though the subscription looks healthy.
Run
npm run ses:setup -- --brand futurebits --applySNS subscription for inbound replies
Nothing is subscribed to https://mission.futurebits.tech/api/webhooks/ses-inbound/futurebits.
Bring the VPS up behind TLS, then run: npm run ses:setup -- --brand futurebits --apply
Inbound receipt rule
No receipt rule set named mission-control-inbound.
Run
npm run ses:setup -- --brand futurebits --applyDNS records
All 8 records resolve.
Warmup ramp running for go.futurebits.tech
Day 1 of 14 of the ramp: 5 sends allowed today.
Channels
Every rail channel resolves to an account
5 rail channels.
Every rail channel has its vendor id
5 have no external reference, so the publish job skips them: Delivery lead LinkedIn, Founder LinkedIn, Founder X, Futurebits company page, Outreach mailbox.
Copy each channel id from Buffer into the channel's external reference.
People
The roster is real, not seeded examples
2 of 2 are still seeded worked examples.
Control panel → Teams and people. Editing a profile clears the example mark.
Every remit is usable
2 remits.
Webhooks
Cal.com bookings has been heard from
Never received a delivery.
Point the Cal.com bookings webhook at this host and send a test event.
SES delivery events has been heard from
Never received a delivery.
Point the SES delivery events webhook at this host and send a test event.
SES inbound replies has been heard from
Never received a delivery.
Point the SES inbound replies webhook at this host and send a test event.
Telegram approvals has been heard from
Never received a delivery.
Point the Telegram approvals webhook at this host and send a test event.
Backups
Backups are configured
MC_BACKUP_DIR is not set, so the nightly dump has nowhere to write.
Set MC_BACKUP_DIR and mount it to something that is pushed offsite.
A restore drill has been done
No restore drill recorded. A backup nobody has restored is a hope, not a backup.
Restore the latest dump into a scratch database, confirm the row counts, then record it with `npm run ops:restore-drill`.
The same checks run from the command line with npm run preflight futurebits, which exits non-zero while anything is blocking.