BD-4 Prerequisites Checklist¶
Sign-off document for BD-4.0. All items must be ticked with evidence before BD-4.1 starts.
Run bash scripts/bd4-preflight.sh (covers items 1-13 + 18). Items 14-17 + 20 are manual one-shot checks.
Date signed off: pending Signed off by: pending
Scripted checks (bd4-preflight.sh)¶
| # | Check | Pass/Fail | Evidence |
|---|---|---|---|
| 1 | Argo CD platform Apps all Synced+Healthy | ||
| 2 | ClusterSecretStores Valid (3 Doppler stores) | ||
| 3 | Gateway listeners Accepted+ResolvedRefs | ||
| 4 | Tenant namespace labels (gateway.unipuka.app/tenant) |
||
| 5 | DOCR pull secret do-registry in all tenant ns |
||
| 5b | DOCR registry tier = basic (not starter) |
||
| 6 | ResourceQuota cpu=4 + LimitRange in all tenant ns | ||
| 7 | All 6 NetworkPolicies in all 3 tenant ns (18 total) | ||
| 8 | TLS Secrets in gateway ns (3 certs) |
||
| 9 | Doppler tenant configs >= 45 keys each | ||
| 10 | Class-1 keys present in all 3 Doppler envs | ||
| 11 | Class-3 keys present in all 3 Doppler envs | ||
| 12 | NetworkPolicy egress covers 25060+25061 in all tenant ns | ||
| 13 | Operator toolchain: helm/yq/kubectl/doppler/doctl (ct+kubeconform: CI) | ||
| 18 | GitHub Actions runner available |
Manual checks¶
| # | Check | Status | Evidence / Notes |
|---|---|---|---|
| 14 | soa repo on master, Laravel 11, composer install clean |
||
| 15 | unipuka-infra-ops on master, apps/laravel does NOT yet exist |
||
| 16 | Linear tickets UNI-73..UNI-83 visible, milestone=BD-4, estimates set | ||
| 17 | No new Doppler keys required for BD-4 (Class-1+3 sufficient, confirmed) | ||
| 19 | Preflight script written at scripts/bd4-preflight.sh |
✅ done | |
| 20 | DOCR tier upgrade applied: registry.tf starter -> basic, TF plan clean |
Item 5b / Item 20 - DOCR Starter -> Basic upgrade¶
Why: soa image is ~363 MB. DOCR Starter = 500 MiB hard cap (no overage, pushes FAIL).
BD-5.5's 30-tag retention (~2.4 GB assuming heavy layer deduplication across successive builds - each new tag shares most layers with the previous one) is impossible on Starter.
Basic = 5 GiB / 5 repos / $5/mo ($0.02/GiB overage). Basic sufficient for single oep/api repo + 30-tag retention.
Action: unipuka-infra-do/oep-infra/registry.tf line 3 changed starter -> basic.
Apply with: direnv exec oep-infra terraform -chdir=oep-infra apply -target=digitalocean_container_registry.oep
Assert:
BD-4 toolchain (operator workstation)¶
Required for BD-4 chart work. Install on macOS:
brew install helm chart-testing kubeconform yq composer php@8.2
# Set helm version via asdf:
asdf install helm 3.16.0
asdf local helm 3.16.0 # in unipuka-infra-ops/
Versions:
helm >= v3.16.0ct >= 3.10.x(chart-testing)kubeconform(any)yq >= 4.xphp 8.2.xcomposer 2.x
BD-4 secrets validation¶
BD-4 adds no new Doppler keys. All secrets required by the Laravel app chart come from:
- Class-1 keys (BD-1.5): DB + Redis + Spaces credentials - validated by check 10
- Class-3 keys (BD-1.5): App runtime (APP_KEY, REVERB_*, HORIZON_PREFIX, etc.) - validated by check 11
The ExternalSecret template (BD-4.7) bulk-pulls all keys via dataFrom.extract.key: "/" so key names
are irrelevant at chart layer. No chart-level key enumeration needed.
Cross-link: secrets-audit.md
Ticks added as later BD-4 tickets land¶
| Ticket | Checklist item to tick |
|---|---|
| BD-4.7 | ESO probe confirmed >= 45 keys synced |
| BD-4.9 | Per-tenant values landed |
| BD-4.10 | soa /health endpoint live (PR link) |
| BD-4.11 | helm-lint CI green |