Tracking the post-merge follow-ups for #706 (squash 490d093b, "rename Sandbox → Box, Part 1: apps/api epicenter"), which was admin-merged while WIP. These items shipped to main in a known-incomplete state and must be closed out before a production deploy / dependent parts.
🔴 P0 — verify before any deploy that auto-runs migrations
🔴 P0 — generated SDKs mismatch the live server
🟠 P1 — CI / governance
🟡 follow-ups flagged during review
Verification already complete (for reference)
- ✅ Source rename verified rename-only across all 937 changed files (94-agent normalize-and-classify sweep): 0 hidden logic changes attributable to the rename.
Tracking the post-merge follow-ups for #706 (squash
490d093b, "rename Sandbox → Box, Part 1: apps/api epicenter"), which was admin-merged while WIP. These items shipped tomainin a known-incomplete state and must be closed out before a production deploy / dependent parts.🔴 P0 — verify before any deploy that auto-runs migrations
apps/api/src/migrations/post-deploy/1781016743403-migration.tson staging. It renames tablesandbox→box(+sandbox_last_activity/sandbox_usage_periods/_archive), columnssandboxId→boxIdandorganization.sandbox_*/max_*_per_sandbox, enumsandbox_state_enum→box_state_enum, and ~16sandbox_*_idx/idx_sandbox_*indexes. Never run against a real DB. Verifyup()anddown()on a staging clone; confirm the partial-index enum-cast predicates survive theALTER TYPE … RENAME. Update 2026-06-10: fix(api,e2e): finish Sandbox → Box rename — 3 schema gaps + fixture column names #720 added catch-up migration1781072797240(3 schema gaps the original missed, incl.runner.currentStartedBoxes) — verify both, in order.🔴 P0 — generated SDKs mismatch the live server
api-client,api-client-go, andanalytics-api-client(api-client/api-client-go in chore(apps): restore Daytona API-client regen machinery + regenerate clients #716; analytics in chore(apps): rename analytics-api-client Sandbox -> Box via in-repo swagger spec #721 via committed in-repo spec; toolbox-api-client — found stale + its regen target broken — in chore(apps,e2e): sweep Sandbox→Box rename leftovers — regen toolbox client, fix dead env vars + stale refs #723, now drift-gated) from the (already-correct) api spec. They still declareWebhookEvent = "sandbox.created"etc., while the server now emitsbox.created→ consumer mismatch. Source is correct; this is mechanical regen (nx run-many --target=generate:api-client).Set-serialization scaffolding). Add anopenapitools.jsonpin so the regen diff stays rename-only.apps/cli/docs,apps/cli/hack/docs) + daemon swaggo docs (stalesandboxdescriptions). (done in docs(cli,daemon): regenerate cobra docs and toolbox swagger after rename #718)runner-api-client+ runner swagger were already regenerated in the PR (soapps/apicompiles).🟠 P1 — CI / governance
go/path-injectionmostlyapps/runner, 32actions/missing-workflow-permissions, 6go/clear-text-logging, rest singletons incl.go/zipslip,go/insecure-hostkeycallback). Dismiss pre-existing/false-positives, fix real ones. (Correction: "CodeQL is red onmain" was a misread — default setup was green; the red was ci(codeql): switch to advanced setup so fork PRs are scanned #708's advanced-setup workflow lying dormant behind an unset variable. Cutover executed 2026-06-10: default setup disabled,CODEQL_ADVANCED_SETUP_ENABLED=true, 6/6 languages green onmain, fork-PR scanning live.)main.🟡 follow-ups flagged during review
runnerAdapterToolboxApiremoval (part 4,b20fc6cb) was intentional — it was declared+initialized but never called onmain(dead code), so removal looks safe; just confirm nothing external relied on it.Verification already complete (for reference)