MosswartOverlord/go-services/tracker-go
Erik 5ade47dc64 feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes
Completes the Go backend so it can fully replace Python in production:

tracker-go website layer (serves the unchanged frontend):
- static file serving + SPA fallback + /icons (website.go)
- login/logout with itsdangerous cookie ISSUING (bcrypt, Python-interop) and the
  /me handler (auth.go issueSessionCookie + website.go)
- admin user CRUD (website_admin.go) and the issue-board write side (website_issues.go)
- request-scoped user context + requireAdmin (auth.go)

cutover ingest (gated off during the parallel run, required for a clean cutover):
- inventory forwarding: full_inventory -> /process-inventory, inventory_delta ->
  item POST/DELETE, per-character serialized, fire-and-forget (inventory_forward.go)
- death/idle Discord alerts via DISCORD_ACLOG_WEBHOOK (aclog.go)
- SKIP_SCHEMA_INIT so write mode against the prod DBs runs no DDL (tracker-go + inventory-go)

two bugs found live and fixed:
- coerceNum: the plugin sends kills_per_hour/deaths/total_deaths/prismatic_taper_count
  as STRINGS; pydantic coerced them, Go's number helpers wrote null/0 (reads.go/ingest.go)
- telemetry is broadcast TYPELESS so the browser ignores it and uses the /live poll;
  broadcasting it typed flapped the per-player counters 0<->value (ingest.go stripType)

docker-compose.cutover.yml: reversible override flipping the Go services to write
mode against the production DBs and repointing the Discord bot at the Go /ws/live.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 19:46:40 +02:00
..
aclog.go feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes 2026-06-24 19:46:40 +02:00
auth.go feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes 2026-06-24 19:46:40 +02:00
charstats.go feat(go-services): Phase 2 — combat_stats accumulator (cross-language exact) 2026-06-24 10:42:15 +02:00
combat.go feat(go-services): Phase 2 — combat_stats accumulator (cross-language exact) 2026-06-24 10:42:15 +02:00
combat_test.go feat(go-services): Phase 2 — combat_stats accumulator (cross-language exact) 2026-06-24 10:42:15 +02:00
Dockerfile feat(go-services): Phase 2 — combat_stats accumulator (cross-language exact) 2026-06-24 10:42:15 +02:00
go.mod feat(go-services): tracker-go Phase 0/1 — /live + /trails read parity 2026-06-24 09:24:22 +02:00
ingest.go feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes 2026-06-24 19:46:40 +02:00
inventory_forward.go feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes 2026-06-24 19:46:40 +02:00
live.go feat(go-services): tracker-go Phase 0/1 — /live + /trails read parity 2026-06-24 09:24:22 +02:00
main.go feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes 2026-06-24 19:46:40 +02:00
memstate.go feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes 2026-06-24 19:46:40 +02:00
proxy.go feat(go-services): tracker-go — complete the Phase 1 read API 2026-06-24 09:38:10 +02:00
reads.go feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes 2026-06-24 19:46:40 +02:00
schema.go feat(go-services): Phase 2 foundation — isolated shadow DB + schema 2026-06-24 10:18:30 +02:00
shadow.go feat(go-services): tracker share_* handlers (complete ingest) + shadow tuning 2026-06-24 11:27:25 +02:00
share.go feat(go-services): tracker share_* handlers (complete ingest) + shadow tuning 2026-06-24 11:27:25 +02:00
store.go feat(go-services): Phase 2 foundation — isolated shadow DB + schema 2026-06-24 10:18:30 +02:00
totals.go feat(go-services): tracker-go — complete the Phase 1 read API 2026-06-24 09:38:10 +02:00
website.go feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes 2026-06-24 19:46:40 +02:00
website_admin.go feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes 2026-06-24 19:46:40 +02:00
website_issues.go feat: Go backend production cutover — website layer, ingest forwarding, alerts, live fixes 2026-06-24 19:46:40 +02:00
wslive.go feat(go-services): tracker WS servers (/ws/position + /ws/live) + robust shadow 2026-06-24 11:15:05 +02:00
wsposition.go feat(go-services): tracker share_* handlers (complete ingest) + shadow tuning 2026-06-24 11:27:25 +02:00