Files
open-wc/coordination/claims/M00-QAR-GUI-RID-SHUTDOWN-001.md
T
sindoring 09b3e87a8d fix(M00): release GUI capture render resources
Work-Package: M00-QAR-GUI-RID-SHUTDOWN-001
Agent: sindo-main-codex
Tests: render baseline dry-run; runtime cache shutdown; comparator self-test; coordination and documentation gates
Fidelity: shutdown-only ownership fix; no visual or Blizzlike335 behavior change
2026-07-13 11:08:30 +04:00

3.6 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 RefCounted diagnostic
  • 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 RefCounted whose 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