Shared Viewport / Viewport2 Release

2026-09-22. The Viewport2 Release entry now aliases the byte-identical Viewport implementation. The shared interface spec and API table retain both public identities, with no change to IDs, hashes, vtable order or cleanup size. The Viewport3 implementation remains separate.

The common handler still performs specialized final-release teardown: d3dim_viewport_release_lights before dx_free. It must not be replaced with the generic COM release helper, which would lose attached-light ownership.

The existing viewport/light runtime suite now enters all three Release APIs through public dispatch. Additional cases for versions 1 and 2 test:

Exact-duplicate baseline: 127 groups / 501 members to 126 / 499. The removed wrapper and its now-single canonical body leave the duplicate inventory. The quiet-handler count remains 247 manual + 22 metadata.

The first shared-worktree runtime attempt failed before tests, compiling an unrelated in-progress GL rasterizer call (gl_mtx_untrusted: expected two arguments, got zero). The owner was notified. The isolated test run overlays only main.watx, 09a8c-gl-encoder.wat, and 00-regions.wat with committed HEAD contents in memory; it does not revert or write shared files. Validation does not certify that in-progress GL integration or a full release build.

That isolated runtime suite passes, including the new ownership cases. The 211-method interface consistency test and dispatch, API hash, ESP/epilogue, fragment, tier, quiet-handler and whitespace checks also pass.