CNA-VGAP-015: CNA records and checks no easy-gl or meta-gl revision, although the snapshot needs meta-gl 20c8b2dc or later and easy-gl deda7a42 or later

CNA snapshot 3b43bd86  ·  Known Issues › Verification gaps  ·  source links pinned to 3b43bd86

✓

Evidence basis: source-verified at the pinned commit. Claims on this page were checked by reading the CNA source at commit 3b43bd86; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.

EasyGLRenderer.cpp needs meta-gl's InternalFormat::Rgba16 (from 20c8b2dc) and RendererSelection.cmake relies on easy-gl's exception-model variable (from deda7a42), yet nothing pins or checks either sibling revision.

Identifier
CNA-VGAP-015
Category
Verification gap
Subsystem
Build & CI
Status
Open
Verified against
CNA 3b43bd86 (3b43bd8687ed46523d873f9bec4b32bd8481dcb5)
Evidence basis
Source-verified: read at TARGET, not executed
Tests touching this area
None
Affected contract
GL-family builds (OPENGLES3, OPENGL33, WEBGL2) consuming ../easy-gl and ../meta-gl

Expected behaviour

A build that depends on sibling features records the sibling revision it needs, or fails clearly at configure time when given an older one.

Actual behaviour at TARGET

EasyGLRenderer.cpp names ::easygl::InternalFormat::Rgba16 in several SurfaceFormat mappings (Rg32, Rgba64 and their sibling paths), unguarded by any feature test; easygl::InternalFormat is an alias of metagl::InternalFormat, whose Rgba16 enumerator first appears in meta-gl 20c8b2dc (2026-09-03), before CNA began using it on 2026-09-08. Under Emscripten RendererSelection.cmake sets EASYGL_EMSCRIPTEN_EXCEPTION_MODEL=JS with FORCE; easy-gl before deda7a42 (2026-08-22) ignores that variable and applies -fwasm-exceptions unconditionally, to itself and to meta-gl, which would mix exception ABIs with CNA's JS-lowered ABI. The build adds whatever sits at ../easy-gl and ../meta-gl; CI clones branch heads through clone_siblings.sh. The integration records that once named sibling SHAs (the newest, meta-gl 571d3a62 and easy-gl 0b46d35c of 2026-07-19, predated both requirements) were deleted on 2026-10-11 (96c6e77be), so no CNA document now records the sibling revisions a build needs; resolution stays sibling-path based, not a branch, commit pin, FetchContent revision or submodule.

Source locations

Evidence

Checked by reading at 3b43bd86 and the easy-gl (develop @ deda7a42) and meta-gl (develop @ 20c8b2dc) histories in the local checkouts; nothing built. Not established: the concrete failure of a build against the recorded revisions.

Focused reproduction

No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.

Current tests

No configure check or test verifies a sibling revision or feature.

Regression test

Configure-time feature probes (for example check_cxx_source_compiles on metagl::InternalFormat::Rgba16, and a check that easy-gl honours EASYGL_EMSCRIPTEN_EXCEPTION_MODEL), or a recorded sibling lock that CI consumes.

Blast radius

GL-family builds from a stale sibling checkout: a compile failure (meta-gl) or, on the web, silently mixed exception ABIs (easy-gl). Builds from current sibling heads are unaffected.

Workaround

Update ../easy-gl and ../meta-gl to their develop heads before building.

The same subject is explained at several altitudes. These are the neighbouring pages at each one.