Add safe bank failure diagnostics for T5 and T6

Address #14 with request correlation, bounded parser reasons, startup version reporting, and rate-limited storage and settlement logs. Preserve accounting and API identity contracts, extend portable tests, and update release versions and rollout guidance.
This commit is contained in:
2026-10-13 10:02:36 -04:00
parent ab989395f7
commit 463b4bcc51
19 changed files with 804 additions and 78 deletions
+42
View File
@@ -4,6 +4,48 @@ Changes are listed newest first, with an independent version for every individua
T5/T6 script and each native plugin. Current versions are recorded in
[versions.json](versions.json); see the [version policy](README.md#versioning).
## 2026-10-13
### Bank failure diagnostics — TWS #14
| Component | Version | Affected source |
| --- | --- | --- |
| `tws_t5_bank.gsc` | `2.0.2` | `t5/scripts/tws_t5_bank.gsc` |
| `tws_t6_bank.gsc` | `2.0.2` | `t6/scripts/tws_t6_bank.gsc` |
| `t5-plugin` | `1.2.0` | `t5/plugins/tws-t5-gsc-utils/src/component/bank.cpp`, `src/utils/bank.cpp`, `src/utils/bank.hpp` |
| `t6-plugin` | `1.2.0` | `t6/plugins/tws-t6-gsc-utils/src/component/bank.cpp`, `src/utils/bank.cpp`, `src/utils/bank.hpp` |
- Both engines log startup script/loaded TWS plugin versions, effective endpoint,
safe server identity, credential format validation and pending journal count.
Add diagnostic correlation for every HTTP attempt without changing API IDs;
balance requests keep their empty acknowledgment ID contract.
- Distinguish creation, transport, HTTP, missing diagnostics, JSON/schema,
response-ID and application failures, with safe HTTP/curl/timing fields.
Native acknowledgment parsing adds fixed failure reasons without changing
existing validity rules. Only known bounded response codes reach logs; never
log credentials, headers, bodies or native exception contents.
- Log journal load/write/removal failures and settlement decision, attempts,
pending duration, next retry delay and resolution. Suppress identical failures
for 30 seconds, report suppression counts, and log reason changes and recovery
immediately. Recovered pending duration starts at this map's journal load.
Preserve points, durable decisions, retry behavior and player-facing messages.
- Compatibility: both scripts require matching plugin `1.2.0+` for the additive
`bankVersion()` native and parser reason field. No new EC/agent or third-party
dependency requirement; existing common/telemetry and migration requirements
remain. Upstream pins and native loader `plugin_version()` are unchanged.
- Deployment: build/install both DLLs and **restart the full server processes**;
install matching scripts, restarting the map if copied after process startup.
Verify installed DLL/GSC hashes against the release artifacts and startup
version logs, particularly Ascension's reported stale GSC artifact. No deployment
performed. Windows DLL builds, GSC compilation and live T5/T6 checks remain
required; see [bank diagnostics](README.md#bank-diagnostics--tws-14).
- Validation: 44 portable script fixture groups passed, including actual EC
bank service/SQLite integration at checkout `d614707`. Fixtures assert safe
startup/outcome logs, missing diagnostics, HTTP 401, timeout, malformed/schema
acknowledgments, ID mismatch, storage failures, rate limiting and recovery,
alongside existing accounting/replay tests. Native parser/storage/process-restart
and registration-adapter checks run with address/undefined-behavior sanitizers.
## 2026-10-12
### String bank identities — TWS #15