PLATE9 1.2.7 — DEEP AUDIT
11 October 2026

This review covers the current unpublished 1.2.7 build. Version remains 1.2.7.
No PyPI upload was performed.

REPRODUCED ISSUES AND FIXES

1. Cancelled background Circuit calculations could change a cached referee
   without changing the checkpoint it claimed to represent. Retrying could
   continue an unsaved round. Cache entries are now removed before mutation
   and republished only after a successful chunk. Cancellation at several
   internal checkpoints now reproduces a fresh worker's exact saved result.

2. An unsuccessful move save was not reliably marked for retry, and play
   could continue. Failed writes now pause play, cancel pending workers,
   pause market updates, preserve the successful file, and retry at most
   once per second. Recovery remains paused for explicit resumption.
   Circuit UI exposes the error and a Retry saving progress action.
   Prize accounting was checked through a failed write, retry and restart
   without duplicate credits. Temporary files are cleaned after either result.

3. A restored Circuit could start its other tables while the visible table
   remained paused. Background progression now waits for explicit resume.
   Spectator stages have an enabled Resume action; reopened completed events
   correctly offer Finish & return to lounge.

4. Some unreadable or malformed saves could raise uncaught startup exceptions.
   Invalid envelopes, table replays, opponent notebooks, Circuit standings,
   advancement, results and receipts now fail safely while preserving the file.
   Prior Circuit saves and legacy save migrations remain supported.

5. Circuit standings omitted the funded draft reserve. Public standings now
   display all pockets: free chips, pot, reserve and side-contract escrow.
   Older standings recover the exact reserve through the 600-chip invariant.

PERFORMANCE

The benchmark uses the same seeded state: a 360-command table plus all 14,400
retained market chart bars, with warmups and repeated median measurements.
Measurements were taken in this Linux environment, not as Windows frame-rate
claims or guarantees for other hardware.

  Atomic Circuit/market save: 17.8685 ms before; 10.2221 ms after (about 43% less).
  Reading 8 new observations after a 10,009-event history:
                             0.1923 ms before; 0.0147 ms after (about 92% less).

Saving now serializes the full envelope once and snapshots the live Circuit
table once. Checksum verification and atomic replacement are retained.
Background checkpoints refresh bracket rows without rebuilding the ordinary
table, re-emitting its audio state or refreshing unrelated market/insight data.
AI diagnostic receipts are capped at 200. Graph history, public signals,
market charts, transaction receipts and Circuit history retain their bounds.

VALIDATION

- 169 automated regression tests cover game rules, supply conservation,
  saves, economy, purchases, public information boundaries, stock orders,
  Circuit transitions, audio recovery logic and the new failure paths.
- 160 additional legal-play stress tables: 120 capped and 40 ordinary.
  12,974 commands and 433 exact replay checkpoints; permitted views and
  opponent observation histories matched after restore.
- 1,500 additional stock trades and 300 market updates preserved exact cash,
  cost-basis, realized-result and fee accounting.
- A complete 13-match Circuit ran with actual authored AI and a spawned
  background worker. All tables settled 600 chips, restart succeeded, entry
  and prizes applied once, and no fallback moves were needed.
- Real Qt interface checks cover entry, bracket controls at 1024x768 and
  860x540, free Circuit graphs, save-error recovery, exit, withdrawal,
  spectator resume, championship and completion. No QML warnings were recorded.
- Release packaging verifies wheel integrity, bundled file hashes, README
  metadata, source archive contents and unchanged artwork/AI program bytes.
  The installed wheel runs its dependency, numerical runtime and two-worker
  integrity check. Exact results and hashes accompany the release.

PACKAGING AND DOCUMENTATION

All existing portraits, bicycle artwork, gold faces/backs, sculpture images,
audio and authored opponent programs keep their original bytes. There are no
new runtime dependencies. Compression changes are lossless, and unchanged
wheel members reuse their existing compressed streams. Both distributions
retain a 34,000,000-byte size gate.

README now introduces Plate9's current identity and features, explains Circuit
fairness and prizes, purchases, line graphs, trading confirmation and local
installation. Root README, wheel README and package-index description match.
Its sole link is the exact approved Cloudinary gameplay screenshot.

VALIDATION ENVIRONMENT

Runtime and UI verification used Linux, Qt software rendering and Python 3.12.
Windows sound recovery tests exercise the Windows API boundary using test
doubles; native Windows audio devices and Windows display scaling were not
available here. A Windows playtest checklist is included.
