promote: verified develop snapshot 89f673c618f to main (cold-start TTL + onboarding Bug B — final sync) - #15543
Conversation
fix(ci): make app aesthetic audit advisory
Co-authored-by: Shaw <shawgotbags@gmail.com>
Co-authored-by: Shaw <shawgotbags@gmail.com>
Co-authored-by: Shaw <shawgotbags@gmail.com>
…hetic-advisory # Conflicts: # packages/app/scripts/ios-device-e2e.mjs # packages/app/scripts/lib/ios-device-e2e-lib.mjs # packages/app/scripts/lib/ios-device-e2e-lib.test.mjs # plugins/plugin-openai/__tests__/streamstructured-tool-input-delta.shape.test.ts
fix(ci): generate i18n data before hetzner reaper
…hetic-advisory # Conflicts: # .github/workflows/hetzner-e2e-reaper.yml
… spike) Measured on prod f6f91af tonight: the first message after >60s idle pays preforward total=2959ms (auth=1684, mid=482, reserve=705) vs 109ms warm — a 3-5.5s first-turn spike whose dominant term is the IAC entry expiring between natural chat pauses. The IAC's primary freshness mechanism is explicit confirmed-delete invalidation on every credential mutation (revoke/update/ban/deactivate, all fail-closed per #13417); the TTL is only the backstop for an invalidation that was never issued. 300s keeps active conversations warm across gaps while bounding a lost-invalidation window to the same 5 minutes org.data already accepts.
…of dead-ending 503 during a provisioning-worker outage Native cloud onboarding provisioned+503'd for a user whose one healthy agent needed no provisioning at all (#15516 Bug B). Two stacked defects: - client: #15491 made the reuse pick running-only, so ANY transiently non-running row (starting/stopped/status churn during the very outage that 503s creates) fell through to a fresh create; the reuse branch's cold-boot wait had become unreachable dead code. The pick now prefers running, then falls back to the newest NON-TERMINAL row routed through waitForCloudAgentRunning (which kicks a resume and re-reads the fresh post-wake record — the correct guard against binding a stale pointer, preserving #15491's intent). A remembered preferAgentId is honored whenever non-terminal, so we never silently swap a user onto a different agent's conversations. - server: POST /api/v1/eliza/agents ran the provisioning-worker health gate BEFORE createAgent's idempotent reuse, so a heartbeat gap 503'd even callers whose create would have been served by reuse (no job enqueued). The route now peeks reuse candidacy (read-only repository mirror of the guard predicate) and only gates a create that would genuinely enqueue; forceCreate always stays gated. Repairs 3 pre-existing red tests in the mock-cloud connect suite (the running-only pick broke the stopped-agent reuse cases on develop) and adds coverage: remembered-agent wake, all-terminal create fall-through, and route-level gate-vs-reuse ordering (reuse-skips-gate, no-agent still 503s fail-closed, forceCreate never skips). Fixes #15516 (Bug B)
…auth-test fix(ci): make credential tunnel route test auth explicit
…lable fix(ci): skip hetzner reaper on rejected token
fix(ci): repair scenario-pr e2e harness resolution
perf(cloud): raise inference auth-context TTL 60s → 300s — kills the 3-5.5s first-message-after-idle spike
…hetic-advisory # Conflicts: # .github/workflows/hetzner-e2e.yml # packages/app-core/src/api/credential-tunnel-routes.test.ts
fix(cloud): reuse the existing agent in first-run onboarding instead of 503 dead-end during worker outage
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
|
❌ PR title does not match the required pattern. Please use one of these formats:
|
[vps-backend] NIGHT CLOSEOUT — full sync achieved, everything shipped/tested/deployed ✅Prod ( Verified live on prod just now:
Ledger of the night (all merged + deployed): #15508 mid-reads ∥ (Shaw) · #15520 embeddings passthrough · #15521 placement staging-soak · #15524 reply-first streaming · #15526/#15525/#15532 onboarding cleanup ([codex-ui]) · #15541 Bug B both halves ([cloud-agent]; my #15542 closed as superseded — good race to lose) · #15538 cold-start TTL · #15511 pair CORS. Prod chat: 5.3s → ~1.0s warm, ~2.5s after-idle, streaming real. Open + owned (nothing unowned): #15539 [cloud-agent] · #15545 [codex-ui] · #15540 routed to CI/native lane (was unowned — needs an owner with NDK context) · #15513 placement prod-leg (mine, after staging soak) · #15518 decision posted (keep shared bridge; dedicated provision still ~40s). Team worked like a team tonight. 🫡 |
Promotes verified develop snapshot
89f673c618fto main — 55 checks, 0 failures on the tip (cleanest snapshot today). Final sync of tonight's launch-hardening arc; brings main even with develop.Carries (29 commits):
auth=1684mscold → warm across natural chat gaps)reuseWouldServeserver gate)After merge: CF Deploy main→production (direct-wrangler bypass ready if the scheduler wedges again per #15503) → prod probe: cold-start spike gone (first-after-idle ≤ ~2s), embeddings+chat passthrough intact, onboarding create-during-blip returns 200 reuse.
Rollbacks: all constituent fixes independently revertible (TTL constant, route-scoped, plugin-scoped).
🤖 Generated with Claude Code