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 3b43bd86; 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.
- Identifier
CNA-BUG-247- Category
- Bug
- Subsystem
- Documentation & release tooling
- Status
- Open
- Verified against
- CNA
3b43bd86(3b43bd8687ed46523d873f9bec4b32bd8481dcb5) - 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)
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 policy phrases 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. A planning document that repeated “137 deterministic PNGs plus 8” was deleted on 2026-10-11 (96c6e77be). 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 rejectionstests/gltf-l7/software-policy.json— count-free phrasing of the same rationale
Evidence
Checked by reading at 3b43bd86 (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 SOFTWARE L7 report for completeness and reproducibility (SoftwareCorpusL7ReportIsCompleteExactAndReproducible); no test 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 SOFTWARE policy does) or have gltf-l7-corpus.py refuse a justification whose stated count differs from capturedAssetCount.
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