ba81098797
Work-Package: M00-QAR-INTEGRATOR-CLOSEOUT-001 Agent: sindo-main-codex Tests: post-merge render baseline dry-run; comparator self-test; coordination and documentation gates Fidelity: records seven build-12340 reference categories and measured gaps without claiming parity
3.7 KiB
3.7 KiB
M00-QAR-GUI-RID-SHUTDOWN-001 — GUI capture RID shutdown
Ownership
- Target: M00
- Program: QAR
- Owner/Agent ID: sindo-main-codex
- Branch:
work/sindo-main-codex/m00-gui-rid-shutdown - Lease expires UTC: 2026-07-15
- Integrator: milestone integrator
Outcome
Identify ownership of GUI render-baseline shutdown leaks and apply the smallest regression-covered fix that lets queued world resources release before engine teardown.
Non-goals
- Renderer architecture decomposition.
- Hiding or filtering Godot leak diagnostics.
- Changing M00 status, Evidence or
OPENWC_TARGET_DONE.
Paths
- Exclusive: capture shutdown sequencing and its regression diagnostic
- Shared/hotspots:
src/tools/capture_render_checkpoints.gd, renderer module shutdown documentation - Generated/ignored: GUI capture output and verbose logs under
user://
Contracts and data
- Public API/events: unchanged
- Schema/format version: unchanged
- Migration/compatibility: capture images and report schema remain unchanged
- Consumers: M00 baseline runner and milestone integrator
Dependencies
- Requires: merged seven-reference evidence audit
- Blocks: integrator disposition of the final GUI renderer leak risk
- External state: proprietary references are not required for the focused shutdown regression
Verification
- Commands: focused GUI single-checkpoint capture with verbose shutdown, headless project load, manifest/self-tests, repository gates
- Fixtures: existing non-proprietary render-baseline manifest and local extracted corpus
- Fidelity evidence: no visual behavior change; focused PNG hash/report remains valid
- Performance budget: shutdown-only change
Documentation deliverables
- Inline public API docs: shutdown method semantics if introduced
- Module specification: shutdown ownership and observed leak status
- Data-flow diagram: unchanged
- Sequence/state/dependency diagrams: update shutdown sequence only if behavior changes
- Source map/status updates: capture tool if changed
Simplicity and naming
- Important names introduced:
_release_runtime_caches_for_shutdown,_free_detached_node_cache,_queue_free_streamed_node - Simplest considered solution: explicitly release capture-owned scene references and drain deferred deletion
- Rejected complexity/abstractions: global RID registry or suppressed engine diagnostics
- Unavoidable complexity and justification: async streaming jobs must finish before resource ownership can drain
- Measured optimization evidence: not applicable
Status
- State: ready-for-review
- Done: reproduced the focused leak; assigned detached prototype/resource caches and empty liquid roots to explicit owners; added a headless regression; verified zero Node/resource/RID leak lines in focused and seven-checkpoint GUI captures
- Next: integrator review and disposition of the residual engine-level zero-reference
RefCounteddiagnostic - Blocked by:
Handoff
- Commit: this work-package commit
- Results: before the fix the focused capture retained 6 mesh, 6 material, 4 shader, 6 texture, 6 instance and RenderingDevice RIDs (30 resources); after the fix focused and seven-checkpoint captures retained none
- Remaining risks: D3D12 descriptor fallback remains unrelated; Godot can report a timing-dependent anonymous
RefCountedwhose reference count is already zero, without retained Node/resource/RID ownership - Documentation updated:
RENDER.md,docs/modules/world-renderer.md,docs/M00_FINAL_PAIRED_EVIDENCE.md; existing renderer shutdown sequence updated, no new diagram required