A bounded production call to /api/workbench/effect-icons/generate using inference-glm5 returned a valid, accepted SVG in 53.86 seconds. Existing telemetry showed that GLM-5 icon generation was successful but highly variable:
- Effect icons: 3/3 successful; median 146.13 seconds; maximum 261.98 seconds.
- Item icons: 15/15 successful; median 55.70 seconds; maximum 207.62 seconds.
- Some small SVG responses consumed close to 20,000 provider-reported completion tokens.
The apparent indefinite generation was caused by icon calls inheriting the generic 900-second chat timeout. Icon operations were also classified as foreground inference, and each replica's automatic worker could continue generating many missing icons in one pass. This allowed optional visual work to overlap heavily with gameplay inference.
- Repository main commit:
7606eb9a2fa89cbe1b90482f9e9a7d3e3c4ca76a
- Production image:
gitea.app.lan/eventhorizon/eventhorizon:sha-7606eb9a2fa8
- GLM-5 remains the shared text model.
- Icon calls now use a dedicated 300-second timeout, allowing high-effort generation without the former 15-minute wait.
- Effect and item icon operations are optional inference and are not part of turn completion.
- A short durable global visual-icon lease serializes generation across replicas without holding a PostgreSQL connection during inference.
- Lease acquisition defers while a game turn is queued, running, or within its post-turn grace period.
- Each worker pass may claim only one generation attempt, regardless of success, timeout, or deferral.
- A six-minute lease expiry recovers generation after pod termination or request cancellation.
Requirement REQ-0487 was refined to make the cluster-wide optional inference lane, dedicated timeout, bounded throughput, and active-turn deferral explicit.
cargo test --workspace: 346 backend tests and 8 frontend tests passed; doc tests passed.
- Kubernetes manifests rendered successfully and requirements JSONL parsed successfully.
- The exact lease SQL was executed inside a rolled-back production transaction.
- Rollout completed at 2/2 ready replicas with zero restarts.
- Mounted configuration reports
model = "inference-glm5" and visual_asset_timeout_seconds = 300.
/healthz and /readyz returned HTTP 200.
- After a terminated pod left an in-flight lease, new workers deferred until its six-minute expiry as designed.
- After expiry, exactly one replica acquired the lane; the other made one deferred attempt and did not contact GLM-5.
- Final-version production inference generated and persisted an item icon successfully in 35.92 seconds with 4,396 completion tokens.
No synthetic roleplay turn or game-session mutation was used for verification.
Revert main commits 7606eb9a2fa89cbe1b90482f9e9a7d3e3c4ca76a and 4a2b38e3ab6a74ee21fa0b9065e1c1a38cc9cfa7 through the normal repository deployment workflow. The immediately previous image is sha-4a2b38e3ab6a; the pre-correction GLM-5 image is sha-fcd30a583c33.