Part of #4325.
Context
Per the epic's hard constraint, the current host stays authoritative until the new host is independently validated. This issue defines what "validated" concretely means, so cutover is a decision against explicit criteria, not a vibe call.
Requirements
- Define concrete go/no-go criteria before the validation window starts, covering at minimum: health-check stability over the window (
/ready, container health), embedding latency matching or beating the GPU benchmark sub-issue's result under real (not synthetic) load, no unexplained job-queue backlog growth, no error-rate regression vs. the current host's baseline.
- Run the new host through the window handling shadow/non-authoritative traffic (e.g. a duplicate webhook feed, or a manual replay of recent real events) — not just synthetic smoke tests — before it ever becomes authoritative.
- The window's length should be stated explicitly up front (e.g. covering at least one full cycle of every scheduled maintenance job's cadence — see the job cadences in
src/selfhost/maintenance-admission.ts and src/index.ts's scheduled-job enqueue logic — so the validation actually observes the periodic jobs, not only request-driven behavior).
Deliverables
Expected outcome
Cutover only happens once against measured, pre-agreed criteria — the epic never has to rely on "it seemed fine."
Effort
M
Part of #4325.
Context
Per the epic's hard constraint, the current host stays authoritative until the new host is independently validated. This issue defines what "validated" concretely means, so cutover is a decision against explicit criteria, not a vibe call.
Requirements
/ready, container health), embedding latency matching or beating the GPU benchmark sub-issue's result under real (not synthetic) load, no unexplained job-queue backlog growth, no error-rate regression vs. the current host's baseline.src/selfhost/maintenance-admission.tsandsrc/index.ts's scheduled-job enqueue logic — so the validation actually observes the periodic jobs, not only request-driven behavior).Deliverables
Expected outcome
Cutover only happens once against measured, pre-agreed criteria — the epic never has to rely on "it seemed fine."
Effort
M