CNA-BUG-247: The EasyGL L7 policy and report justify zero tolerance with 'all 137 renderable assets' while the report's own fields record 140 captured, byte-identical assets

CNA snapshot 009d40f5  ·  Known Issues › Current bugs  ·  source links pinned to 009d40f5

✓

Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.

The EasyGL L7 policy's justification, copied into its report, cites 137 renderable assets while the report records 148 assets, 140 byte-identical captures and 8 rejections, and misc/FUTURE.md repeats 137 plus 8.

Identifier
CNA-BUG-247
Category
Bug
Subsystem
Documentation & release tooling
Status
Open
Verified against
CNA 009d40f5 (009d40f5dd085c4e674d3479675fac84b12b3e0a)
Severity
Low (a triage suggestion, not a project priority)
Evidence basis
Source-verified: read at TARGET, not executed
Tests touching this area
Yes: see Current tests
Affected contract
tests/gltf-l7/easygl-policy.json and docs/gltf-l7-corpus-report.json goldenComparison.justification (the OPENGLES3/EasyGL L7 tolerance rationale); misc/FUTURE.md Phase 5 row

Expected behaviour

The hand-written rationale agrees with the machine fields it justifies, as docs/gltf-conformance.md does (“148 explicit EasyGL dispositions: 140 PNGs + 8 safe rejections”). The SOFTWARE, Vulkan and DirectX11 policies phrase the same rationale without a count (“every renderable asset”).

Actual behaviour at TARGET

easygl-policy.json says two independent llvmpipe/EasyGL processes produced byte-identical PNGs “for all 137 renderable assets”; gltf-l7-corpus.py copies the policy's goldenComparison into the report, so gltf-l7-corpus-report.json carries the same sentence beside distinctAssetCount 148, capturedAssetCount 140 and rejectedAssetCount 8; its assets array has 140 capture dispositions, each with twoProcessPngByteIdentical: true, and 8 reject. misc/FUTURE.md describes the required OPENGLES3 L7 gate as “137 deterministic PNGs plus 8 deterministic safe rejections” next to “a generated 148-asset corpus”, which is 145 dispositions for 148 assets. The figure 137 matches earlier campaign rows in plans/plan_gltf.md (GLTF-390, GLTF-471), which suggests the sentence was carried over rather than regenerated.

Source locations

Evidence

Checked by reading at 009d40f5 (the JSON files were parsed to count dispositions; no capture was run). The justification sentence is identical in the policy and the report; gltf-l7-corpus.py builds the report's goldenComparison from the policy. Whether the 137 figure was ever true of this report cannot be decided from the snapshot; only its disagreement with the report's own fields is established. Hand-written prose lagging generated fields, not a rendering defect.

Focused reproduction

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

Current tests

GltfFixtureCorpusTests.cpp validates the Vulkan, Vulkan-materials, DirectX11 and SOFTWARE L7 reports for completeness and reproducibility; none of those tests reads the EasyGL report, and none compares a justification's prose with the counts.

Regression test

Drop the count from the EasyGL justification (as the other three policies do) or have gltf-l7-corpus.py refuse a justification whose stated count differs from capturedAssetCount; update misc/FUTURE.md to 140 + 8.

Blast radius

Reviewers auditing the EasyGL L7 evidence and readers of the project status note; the gate's zero tolerance and its 140 goldens are unaffected.

Workaround

Use the report's machine fields (and the site's L7 summary) rather than the justification's count.

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

Known issues
Bug index