# Agent changelog ## 2026-10-17 ### 1.12.0 — Recover AFK reservations before teardown (EC #151) - Advertise `afk.settlement` and drain durable AFK decisions only after confirming the game process has stopped. Removal, rebuild and creation cancellation retain runtime storage until the controller acknowledges every recovery decision. - Authenticate recovery with the assigned host and unfinished teardown operation; never follow a journal URL or use a retired game credential. Keep uncertain crash durations distinct from confirmed consumption. - Deploy before enabling the matching AFK scripts/plugins. Package and offline-sign the release before publication; no deployment or signing is performed here. ## 2026-10-15 ### 1.11.0 — Private player moderation configuration - Advertise `moderation.configure` and accept separate generation-bound game credentials through private create/rebuild configuration or the typed `instance.configure-moderation` operation. Existing servers preserve startup through a fixed include in their verified private bank configuration; servers without a verified bootstrap require rebuilding. - Keep moderation credentials out of file reads, logs, manifests, staged changes, shared recipes and operation receipts. Configure loads only the fixed private file, never restarts gameplay, and does not replay RCON after an unknown result. - Controller coverage remains unavailable until the game moderation runtime connects and reports its capabilities. Older agents retain normal launches. - Package release artifacts for offline signing before publication; do not publish unsigned artifacts. ## 2026-10-14 ### 1.10.1 — Retain verified rebuild artifacts (EC #154) - Retain the complete verified replacement file set before stopping the current container, including inline files and private bank configuration, within the existing 64 MiB operation limit. Staged-file comparison, replacement validation and writing reuse those bytes without further artifact downloads. - Keep prepared bytes local to the operation. Failed and held attempts discard their files; later operations prepare a fresh set. Immutable specifications, journal requests and container identity labels remain unchanged. - Preserve checksum, path, per-file size, player-safety, bank-settlement and generation checks. Add regressions for preflight failures, lost connectivity after preflight, file-set limits and operation isolation. - Package release artifacts for offline signing before publication. No protocol change or controller migration is required. ## 2026-10-13 ### 1.10.0 — Host temperature telemetry - Read supported Linux hwmon CPU package/core, AMD physical die/CCD, NVMe and Intel PCH temperatures with the Python standard library. Sensor failures, faults and disabled inputs are skipped independently; unsupported hosts report an empty list. AMD Tctl control offsets are excluded from physical readings. - Include labeled, bounded sensors in heartbeats with the `host.temperatures` capability. Physical device/channel identities survive hwmon renumbering. - The controller shows current CPU readings and expandable sensor details, and adds temperature history to Capacity. Fleet history has one CPU line per host; individual hosts can add NVMe composite and chipset lines. History retains minute peaks using the host-resource retention setting; missing data stays unavailable and no thermal alerts or placement rules are introduced. - Adds database migration 23. Existing agents remain compatible. Release artifacts are packaged and the stale signature is removed. Offline signing and host rollout are still required; neither was performed here. ## 2026-10-12 ### 1.9.3 — Protect private bank configuration (EC #152) - Exclude the generated bank config from file manifests and reject file reads, staged changes, stale activations, rollback snapshots and log reads targeting it. Creation and rebuilding still inject the private instance credential. - Package and offline-sign this release, then update agents before resuming drift recovery. Old private-file stages fail safely and require a fresh plan. ### 1.9.1 — Public game-bank endpoint - Companion to [TWS scripts #13](https://gitea.thewrightserver.net/josh/tws-zombies-scripts/issues/13). In `agent/ec_agent.py`, stop generating `tws_bank_url` in `electric_cherry_bank.cfg`; continue injecting the private per-instance token. Launch configuration still supplies `tws_server_id`. The host's enrolled controller address and authentication remain unchanged. - Recognize journals for `https://ec.thewrightserver.net/api/bank` and the legacy bank URL derived from the enrolled controller. Reject other URLs and preserve unresolved storage. Settlement still goes only through the enrolled controller's authenticated, operation- and instance-scoped API. Original transaction IDs and commit/cancel decisions are preserved across lost replies and retries. - Compatibility: pair with T5/T6 bank scripts `2.0.0` and existing TWS plugins `1.1.0+`. No new Python dependency, controller migration or protocol change. Old scripts still fall back to the public endpoint when the dvar is absent. - Deployment: package and offline-sign the release, update/restart host agents, then rebuild through EC when a server's bank endpoint changes. Rebuild stops the game and drains old decisions before starting the replacement or deleting storage. An endpoint that already matches needs only a map restart for the script update. Follow the [bank rollout procedure](../docs/guides/bank.md#upgrading-from-a-controller-derived-game-endpoint). Packaging refreshes `static/agent/ec-agent.py` and `manifest.json` and removes the old signature; a new offline signature is required before publishing. No signing or deployment was performed. - Regression coverage in `agent/tests/test_agent.py`: generated credentials, public and legacy journals for both games, rebuild/removal, lost replies, agent restart, unchanged identities and rejection of untrusted endpoints. Live Windows/Plutonium endpoint migration and signed host rollout remain to be validated.