fix #405: chargen/summary preview leases never Transferred — every retail-UI window load crashed at composition

Campaign CC gate round 1, first finding. CC6b-MOUNT's chargen preview
lease and CC5's summary preview lease both rode into the published live
presentation beside the paperdoll/appraisal siblings but never got their
Transfer() calls in CompletePresentation's ladder, so the composition
scope's unpublished-resource leak guard threw on every real window load
with retail UI mounted (launcher path and dev path alike) and the client
died before connecting. Two-line fix at the ladder; verified by a live
launch reaching started/connected/characterList with a graceful close.

Also files #406: the launcher recorded this crash as exited{code:0,
reason:graceful} — the session orchestrator's exit observation is wrong
and misled the first diagnosis; the console repro showed the real
0xE0434352.

No automated suite executes the transfer ladder (needs a live GPU
window) — the coverage gap is recorded in #405's closing note.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-16 08:38:07 +02:00
parent 84d0bbd14c
commit 344d88bff7
2 changed files with 56 additions and 0 deletions

View file

@ -1535,6 +1535,17 @@ internal sealed class LivePresentationCompositionPhase
retainedGameplayLease?.Transfer();
paperdollLease?.Transfer();
creatureAppraisalLease?.Transfer();
// #405: these two Transfer calls were MISSING from CC6b-MOUNT (chargen)
// and CC5 (summary) — both leases rode into the published result at
// the paperdoll siblings' positions above, but without the Transfer
// the scope's unpublished-resource leak guard threw on every real
// window load ("Composition phase completed with unpublished
// resources: chargen preview viewport, summary preview viewport"),
// killing the client at startup whenever retail UI mounted the
// chargen screen. No automated suite executes this ladder (it needs
// a live GPU window), which is how five review rounds read past it.
chargenPreviewLease?.Transfer();
summaryPreviewLease?.Transfer();
envCellLease.Transfer();
clipFrameLease.Transfer();
portalDepthLease.Transfer();