Appearance
2026-07-19 — Verified-Done: version stamping + the KNOW-it-is-done ritual
Plan 2 of 3 of ui-stability (D4). "Is production running the merged code?" and "did the behavior fire from THIS build?" become checkable facts:
service.versionis the git sha everywhere — Fly backends via aGIT_SHAbuild-arg baked into the shared image (resolveServiceVersion()in@numero/telemetry); the poker browser bundle viaVERCEL_GIT_COMMIT_SHA→NEXT_PUBLIC_APP_VERSION. Every span is now a per-build witness (previously browser spans reported0.0.0, backends a never-bumped0.0.1).- game-server serves its build identity —
GET /api/version({service, sha, environment, uptime}, sha null-not-fake) + aversionfield in/health; a faint short-sha tag renders bottom-right on deployed poker pages. - Browser
deployment.environmentis an explicit fact (NEXT_PUBLIC_DEPLOY_ENV) with the old endpoint-string heuristic as fallback only. deploy.completedun-ghosted — re-emitted fromdeploy-fly.yml's newdeploy-eventjob (the deleted VPSdeploy.yml's emission, lifted verbatim); Dash0 rule 10 and the deployment guide describe a real signal again.- Two CI-invisible suites surfaced —
apps/poker's ~580 unit tests (testalias) andpackages/telemetry's tests (new test script) now run underturbo run test. The Test job stays signal-only by documented decision. - The ritual — CLAUDE.md's Verified-Done convention + retrospective Step 4b: a user-visible change is done only when Versioned-live, Fixture-green, and Witness-fired all hold — each a query, not a memory.
Closed live 2026-07-20: all three predicates verified against the deployed builds — /api/version and browser/backend spans reporting the merge sha, and the first deploy.completed span ever actually received (getting it there surfaced three more defects no local check could see: missing repo secrets, GitHub's step-env-invisible-to-its-own-if gotcha, and a mis-parsed composite OTLP header + missing Dash0-Dataset routing — all fixed in PRs #54–#56).
Current-state pages: Verified-Done guide · Deployment → Deploy events in Dash0