CNA-VGAP-028: Several XNB runtime readers are never exercised with externally produced files, although genuine XNA 4.0 outputs for some of them are already in the tree
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.
Texture3D, Curve, Video, DXT1/DXT5 Texture2D, container-version-4 textures and four of the five stock effects are read in tests only from CNA-written or hand-built bytes; the XNA-built differential corpus is used only by pipeline tests.
- Identifier
CNA-VGAP-028- Category
- Verification gap
- Subsystem
- Testing & evidence
- Status
- Open
- Verified against
- CNA
009d40f5(009d40f5dd085c4e674d3479675fac84b12b3e0a) - Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- The XNB type readers for Texture3D, Curve, Video, Texture2D (DXT1/DXT5, version 4) and AlphaTestEffect, DualTextureEffect, EnvironmentMapEffect and SkinnedEffect
Expected behaviour
Reader behaviour is best evidenced by files a genuine producer wrote: an XNA 4.0 or MonoGame pipeline output decoded by CNA's runtime reader and checked against known values.
Actual behaviour at TARGET
The externally produced runtime fixtures are the MonoGame files under tests/assets/xnb/monogame (textures, a DXT1 cube, a Dxt3 font, a BasicEffect model, audio, a song) and two XNA 4.0 files under tests/assets/xnb/xna40. The CNA corpus under tests/assets/xnb/cna (Texture3D, Curve and others) was written by CNA's own writer and, per its fixtures.json, has not been validated against a real XNA runtime. tests/reference/xna40/differential holds 130 XNA 4.0 outputs, including a Curve (xml_framework_curve.xnb), volume textures and DXT1/DXT5 textures, but the tests use them as byte references for the content pipeline (and DxtUtilTests.cpp as the source of hard-coded texel values); no runtime reader test loads them.
Source locations
tests/assets/xnb/cna/windows/uncompressed/fixtures.json— CNA-written corpus: 'Nothing here has been validated against a real XNA 4.0 runtime'tests/reference/xna40/differential/differential-oracle.json— the XNA 4.0 differential corpus, consumed by content-pipeline testsmodules/content-pipeline/tests/CNA/Content/Pipeline/XnaXmlSourceRouteTests.cpp— uses xml_framework_curve.xnb as a pipeline byte referencetests/assets/xnb/monogame/windows/uncompressed/SampleCube64DXT1Mips.xnb.manifest.json— the only external DXT1 fixture is a cube map
Evidence
Checked by listing and reading the fixture manifests and grepping the tests at 009d40f5 for loads of the differential files; not executed.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
Runtime reader tests load the MonoGame and XNA fixtures named above and the CNA-written corpus; content-pipeline tests compare CNA output bytes with the differential corpus.
Regression test
Runtime Load<T> tests over the existing XNA differential files for Curve, a volume texture and the DXT1/DXT5 textures, asserting the decoded values (the expected texels already exist in DxtUtilTests.cpp); an externally produced file for each remaining stock effect.
Blast radius
Evidence only: the readers exist and are tested with CNA-written bytes; whether they accept every variant real producers emit is not established.
Workaround
No workaround is known.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- User guide
- XNB content pipeline
- Deep dives
- XNB type readers: evidence
- Known issues
- Verification gap index