feat(diagnostics): retain bounded local crash reports (#477)

Project the original Run failure with loaded build, cached GPU and cell context before unwind. Preserve crash status and rethrow; contain report failures and omit arbitrary messages, source paths and session data.

Focused 19/19, narrow production/privacy review and default Release 17044/0/0 pass. Preserve the wrong-package smoke failure and real emitted report; corrected recipe10 smoke exits gracefully with two provisional PNG passes. AMD initiating cause and G4 remain open; FPS deferred. No new retail behavior deviation.
This commit is contained in:
Erik 2026-09-05 19:49:22 +02:00
parent 9baef7c507
commit f9bb47ec63
10 changed files with 927 additions and 2 deletions

View file

@ -1112,6 +1112,17 @@ unsupported noncoherent allocation before wait/read (AD-121); it does not change
shared heap selection or generic buffer invalidation. There is one UI stack:
the retained tree.
Failures escaping `GameWindow.Run` retain the existing crash latch and bare
rethrow. Before unwind, the App-only `LocalCrashReportWriter` makes one
best-effort bounded JSON report in the canonical diagnostics directory, using
loaded assembly identity, original exception method/type and Vulkan result,
cached GPU capabilities and current controller cell/local coordinates. It
does not query the GPU, serialize session/chat data, upload, run per frame or
recover the device. Reporting failures cannot replace the original exception;
launcher stderr capture and crashed/graceful status remain separate unchanged
owners. Native hard termination and failures before the Run boundary are not
covered by this report.
---
## Render Pipeline (SSOT — current implementation state; OVERHAUL active)