docs: rails-poc spec — record on-box verification results (queue proof, real pages)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 file changed,
+21
−0
docs/superpowers/specs/2026-08-11-rails-behind-carlos-edge-poc-design.md+21 −0
diff --git a/docs/superpowers/specs/2026-08-11-rails-behind-carlos-edge-poc-design.md b/docs/superpowers/specs/2026-08-11-rails-behind-carlos-edge-poc-design.md| index c84ddc170..e4f594543 100644 |
| --- a/docs/superpowers/specs/2026-08-11-rails-behind-carlos-edge-poc-design.md |
| +++ b/docs/superpowers/specs/2026-08-11-rails-behind-carlos-edge-poc-design.md |
| @@ -212,6 +212,27 @@ host-authorization gap (classic 403, pro 404) is still open and is what |
| blocks this route shape from serving a real page today — the PoC proved |
| the plumbing, not a finished path to production traffic. |
| +**2026-08-11, later — two verification items closed on-box:** |
| + |
| +- **Shared-queue replica behavior (Verification item 4): proven for Pro, |
| + organically.** The pro box's sidekiq processed 35 real staging jobs in |
| + one observed hour (`ScheduledTasks::ExpireUnfulfilledAllocationsWorker`, |
| + real JIDs in journald) — enqueued into the shared staging Redis by |
| + Pro's own sidekiq-enterprise cron and won by the box worker in |
| + competition with the k8s workers. Classic's staging queues were quiet |
| + over the same window, so its half still wants a deliberate enqueue. |
| +- **Real-page serving: both apps serve correct full responses from the |
| + boxes** when addressed by a hostname they already know (curl on-box |
| + with `Host:` + `X-Forwarded-Proto: https`, exactly what the edge |
| + forwards): `staging.pro.tito.io` → 200 with the real Tito Pro page; |
| + `staging.tito.io` → 301 to canonical `staging.ti.to`; |
| + `dashboard.staging.tito.io` → 302 into its SSO login flow. The 403/404 |
| + on the edge hostnames is therefore ONLY hostname configuration |
| + (Classic's host allowlist; a Pro tenant/alias for the hostname), not a |
| + serving gap — the remaining decision is which hostnames the parallel |
| + deployment should answer to, which is a migration-design question, not |
| + an infrastructure one. |
| + |
| ## Out of scope |
| - Any platform code change (release kinds, primitives) — the PoC is |