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
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
tests/gltf-l7/easygl-policy.json— goldenComparison.justificationdocs/gltf-l7-corpus-report.json— goldenComparison.justification against distinctAssetCount, capturedAssetCount, rejectedAssetCount and assetsscripts/gltf-l7-corpus.py— the report's goldenComparison is the policy's, copieddocs/gltf-conformance.md— L7 row: 140 PNGs plus 8 safe rejectionsmisc/FUTURE.md— Phase 5 row: 137 deterministic PNGs plus 8tests/gltf-l7/software-policy.json— count-free phrasing of the same rationale
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.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- User guide
- Verification: oracles
- Tests and validation
- Test architecture: what CI runs
- Deep dives
- glTF conformance: L7
- Known issues
- Bug index