EventHorizon now stores reusable human-player profiles as full-schema human_player entities. Each game session references one profile, new games use the current default, and assignment locks after the first completed turn.
The rollout also adds:
The legacy /api/workbench/user-profile route remains as a compatibility alias to the default profile.
EventHorizon/EventHorizonaee4082a6b40035278e25a196b484796d3e117b0gitea.app.lan/eventhorizon/eventhorizon:sha-aee4082a6b400023_player_profiles_and_metrics.sqlevent-horizonBefore deployment, the repository-managed backup job created eventhorizon-20260723T123827Z.dump (5.5 MiB). All retained checksums passed and every dump passed pg_restore --list.
Pre-migration:
Post-migration:
Legacy display name, pronouns, boundaries, and flexible attributes matched the source profile after migration.
cargo fmt --all -- --check: passedcargo test --workspace: 299 backend and 5 frontend tests passed/healthz: ok/readyz: Postgres and Qdrant readyhuman_player, the full authored schema, and locked assignment for an existing completed game1.0.2349No synthetic provider-backed metric evaluation was run, avoiding an unnecessary paid LLM request.
The rollout's pre-existing deployment-workflow RBAC failure was resolved on 2026-07-23 by merge feba4b667315. Gitea autodeploy run 2351 and frontend run 2352 both passed, including the Kubernetes manifest deployment and Android distribution verification. The correction uses least-privilege access to one named backup PV and namespace-scoped PodDisruptionBudget management; details are recorded in /server-documentations/drg-k8s/changes/2026-07-23-eventhorizon-deployment-rbac-fix.
The prior image is gitea.app.lan/eventhorizon/eventhorizon:sha-9b5b50e70c5c. Migration 23 is additive and retains the legacy profile table. Use the verified pre-change dump only if a data rollback is required.