The daily GPT grind
| SCRATCH | ||
| ANTI_DRIFT_GUARDRAIL.md | ||
| ANTI_DRIFT.md | ||
| CONSTRAINTS.md | ||
| OPEN_THREADS.md | ||
| PORTAL_MIGRATION.md | ||
| README.md | ||
| SESSION_LOG.md | ||
| SESSION_START.md | ||
| UPSTREAMS.md | ||
zlh-grind
Execution workspace for ZeroLagHub (ZLH).
This repository is intentionally lightweight and is used for:
- project handovers / "where we left off" notes
- architecture decisions and rationale
- system constraints and guardrails
- scratch investigations that shouldn't live in code repos
Latest handover (2026-02-22)
System state (high confidence)
- PTY-backed consoles are stable (dev + game) and no longer depend on log tailing.
- Customer isolation is enforced end-to-end (API auth → ownership checks → per-customer data).
- Agent update system is operational (versioned, SHA-verified) with periodic checks.
- Game telemetry is now separated behind a dedicated API router (
/api/game/*).
What shipped since the prior handover
API (control plane)
- Added
src/routes/game.jsand mounted at/api/game. - Added
GET /api/game/servers/:id/players(reads Redisagent:<vmid>; returns normalized{ vmid, playerCount, players, max, timestamp }). - Extended
src/utils/agentPoller.js:- polls agent
GET /game/playersfor game containers and caches in Redis. - polls agent
GET /versionandGET /agent/update/status; derivesupdateAvailable.
- polls agent
- Added
GET /api/game/servers/:id/update-status(returns agent version + update state). - Provisioning persists engine metadata:
engineType = "minecraft"for game containersengineVersionfrom payload- dev containers set both to
null
- Rolled back API-triggered update during provisioning (back to direct
/configprovisioning flow).
Frontend (portal)
- Game console now polls:
GET /api/game/servers/:id/playersGET /api/game/servers/:id/update-status
- Player presence shows count + optional name list.
- Version context displayed as
Version: XorVersion: X -> Y. - Auth behavior unchanged (all calls through
apiClientwith JWT Bearer).
Agent (runtime)
GET /game/playershardened for reliability (port/protocol fallbacks).- Added periodic update checks:
ZLH_AGENT_UPDATE_MODE=notify|auto|offZLH_AGENT_UPDATE_INTERVAL(default30m; first check ~10s after boot)
- Added Phase 1 mod management endpoints:
GET /game/modsPOST /game/mods/installPATCH /game/mods/:mod_idDELETE /game/mods/:mod_id
- Added
GET /metrics/process(PID + memory via/proc/<pid>/status, restart_count mapped to crash count). - Added Minecraft readiness probe after start/restart + stop-wait-before-restart sync to reduce restart races.
- Logging improved with
lifecycle.logalongsideagent.log.
Artifacts
- Artifact tree expanded to include NeoForge under
.../minecraft/neoforge/<mc_version>/. - Phase 1 contract: NeoForge installer filename is normalized to
neoforge-installer.jarwithin the version directory.
Primary focus moving forward
- API proxy endpoints for mods + process metrics (to mirror agent capabilities behind auth/ownership).
- Artifact catalog + ingestion workflow (Modrinth/NeoForge local-first, approval-gated).
- Frontend Mods UI (installed mods list + enable/disable/remove + curated install; upload likely Phase 2).
- Concurrent provisioning validation (multi-user parallel create + port allocation + isolation).
See:
OPEN_THREADS.mdfor remaining workCONSTRAINTS.md+ANTI_DRIFT*.mdfor guardrailsSESSION_LOG.mdfor a chronological ledger