Skip to content

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.version is the git sha everywhere — Fly backends via a GIT_SHA build-arg baked into the shared image (resolveServiceVersion() in @numero/telemetry); the poker browser bundle via VERCEL_GIT_COMMIT_SHANEXT_PUBLIC_APP_VERSION. Every span is now a per-build witness (previously browser spans reported 0.0.0, backends a never-bumped 0.0.1).
  • game-server serves its build identityGET /api/version ({service, sha, environment, uptime}, sha null-not-fake) + a version field in /health; a faint short-sha tag renders bottom-right on deployed poker pages.
  • Browser deployment.environment is an explicit fact (NEXT_PUBLIC_DEPLOY_ENV) with the old endpoint-string heuristic as fallback only.
  • deploy.completed un-ghosted — re-emitted from deploy-fly.yml's new deploy-event job (the deleted VPS deploy.yml's emission, lifted verbatim); Dash0 rule 10 and the deployment guide describe a real signal again.
  • Two CI-invisible suites surfacedapps/poker's ~580 unit tests (test alias) and packages/telemetry's tests (new test script) now run under turbo 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