Question
scripts/live-smoke.mts returns success as soon as the search API answers with an existing fresh snapshot:
const result = createSearchResponseSchema.parse(await response.json());
if (result.kind === "character") return;
kind: "character" means the reservation found a snapshot inside FRESHNESS_HOURS and no job was created. The polling loop below it — the part that proves the queue, worker, discovery, and snapshot write all function — is then never entered.
The first successful run (31436175780, after the missing configuration was added) finished in 5.6 seconds for exactly this reason. It verified the web service, /health, /ready, bot authentication, and a database read. It did not touch the worker.
That matters because production runs FRESHNESS_HOURS=24 against a daily cron, so the smoke run sits right on the freshness boundary and will take the early-return path much of the time. The failure modes it cannot see are the ones that actually occurred: five faults on test tonight (#32, #34, #35, #36, #38) all lived in the worker and its upstream gateways, downstream of the point where this script stops.
To decide how the smoke test reaches the worker without abusing the service:
- Assert the job path is exercised. Treat
kind: "character" as a skip rather than a pass, so a run that never reaches the worker reports as inconclusive instead of green. Cheapest change, and it stops the tick from overstating what was verified.
- Rotate the smoke character so at least one is always outside its freshness window. Costs a search per run and picks more real players into nightly searching.
- Time the cron against freshness — run just over 24 hours apart so the snapshot is always stale. Fragile, since it breaks the moment
FRESHNESS_HOURS changes.
- Expose a read-only worker health probe the smoke test can assert against — worker readiness, last successful run age, queue depth — instead of manufacturing work. Cannot leak provenance or fingerprint material, per the existing constraints.
Note the interaction with promotion: once fingerprint discovery reaches prod, a nightly search that does reach the worker triggers a weekly sweep of the smoke character, around 1100 Blizzard requests, publishing inferred links for a real player as a side effect of monitoring. A worker-health probe avoids that; forcing a real search does not.
Related: #30 (live smoke as a promotion gate), #39 (fixtures encode guessed upstream shapes).
Question
scripts/live-smoke.mtsreturns success as soon as the search API answers with an existing fresh snapshot:kind: "character"means the reservation found a snapshot insideFRESHNESS_HOURSand no job was created. The polling loop below it — the part that proves the queue, worker, discovery, and snapshot write all function — is then never entered.The first successful run (
31436175780, after the missing configuration was added) finished in 5.6 seconds for exactly this reason. It verified the web service,/health,/ready, bot authentication, and a database read. It did not touch the worker.That matters because production runs
FRESHNESS_HOURS=24against a daily cron, so the smoke run sits right on the freshness boundary and will take the early-return path much of the time. The failure modes it cannot see are the ones that actually occurred: five faults ontesttonight (#32, #34, #35, #36, #38) all lived in the worker and its upstream gateways, downstream of the point where this script stops.To decide how the smoke test reaches the worker without abusing the service:
kind: "character"as a skip rather than a pass, so a run that never reaches the worker reports as inconclusive instead of green. Cheapest change, and it stops the tick from overstating what was verified.FRESHNESS_HOURSchanges.Note the interaction with promotion: once fingerprint discovery reaches
prod, a nightly search that does reach the worker triggers a weekly sweep of the smoke character, around 1100 Blizzard requests, publishing inferred links for a real player as a side effect of monitoring. A worker-health probe avoids that; forcing a real search does not.Related: #30 (live smoke as a promotion gate), #39 (fixtures encode guessed upstream shapes).