CNA-BUG-055: Stale whole-registry renderer counts survive outside check_renderer_identities.py's list: the C API's CORE.md and FEATURE_MATRIX.md say 50, core_ext.h says 46, ModuleProbes.cmake says 42, and CHANGELOG says 49 for a 50-identity release

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.

CNA has 25 public renderer identities, yet the C API's backend-classification contract, a public C header's Doxygen, a CMake test header and the alpha.1 release notes still state obsolete totals that no count gate reads.

Identifier
CNA-BUG-055
Category
Bug
Subsystem
Documentation & release tooling
Status
Narrowed (partially fixed; describes only what survives)
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
Documentation of cna_graphics_backend_get_category / cna_graphics_backend_get_maturity (docs/c-api/CORE.md, docs/c-api/FEATURE_MATRIX.md), of cna_graphics_renderer_get_is_available_ext (CNA/C/core_ext.h), and the CHANGELOG release notes

Expected behaviour

CNA has 25 public renderer identities over 21 implementation families (CNA_RENDERER_PUBLIC_IDENTITIES in cmake/RendererIdentities.cmake, held to GraphicsRendererType.hpp and CNA/C/graphics.h by scripts/check_renderer_identities.py). A statement of the whole-registry count should give that number or, as the checker's own docstring recommends, name the registry instead of a number. A released section of the changelog should state the count that release had.

Actual behaviour at TARGET

  • docs/c-api/CORE.md (Backend classification) says both classifications accept "any of the 50 public renderer identities"; the Core extensions row of docs/c-api/FEATURE_MATRIX.md repeats "for any of the 50 public renderer identities". The routes accept the 25 and refuse everything else, as tools/c-api/coverage_mappings.json, the C API's own mapping record for the same routes, says.
  • core_ext.h, Doxygen of cna_graphics_renderer_get_is_available_ext: "which of the 46 identities this particular build can actually produce".
  • cmake/Tests/ModuleProbes.cmake, file header: "RendererIdentityRegistry mechanically pins the 42 public renderer identities".
  • CHANGELOG.md, the v0.1.0-alpha.1 section: "49 renderer identities selected at compile time through CNA_GRAPHICS_RENDERER". The tag's own selection list (cmake/RendererSelection.cmake at v0.1.0-alpha.1) has 50 entries; a note added later ("That was this release's set") repeats the number instead of correcting it.

check_renderer_identities.py checks counts only in its COUNTED_DOCUMENTS list (docs/runtime-renderer-selection.md, docs/renderer-expansion-candidates.md, docs/physical-modules.md, plans/plan_platform.md, AUDIT.md, CHECKLIST.md), so none of these five is seen.

Source locations

Evidence

Checked by reading at 009d40f5; not executed. The alpha.1 count was read from the tag's cmake/RendererSelection.cmake STRINGS list (50 names). Fixed since this was first reported: docs/runtime-renderer-selection.md, which used to give a stale factory count, now states 21 families / 25 identities and is in COUNTED_DOCUMENTS, so the RendererIdentityRegistry CTest keeps it true. Documents that state older counts as dated history (validation records, NEXT.md, plans/, integration/) are not counted here. The C API's LIMITATIONS.md row "Four of the 49 renderers" is a separate entry.

Independently observed as a separate finding (merged): The generated C API limitations document carries a row saying four of 49 renderers are built and the other 45 share the surface, while a later bullet in the same file says CNA has 25 renderer identities; the stale row comes from tools/c-api/limitations.json.

Focused reproduction

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

Current tests

RendererIdentityRegistry (CTest, cmake/Tests/ModuleProbes.cmake) and multi-renderer-ci.yml run check_renderer_identities.py: registries plus the counted documents. Nothing reads docs/c-api/, public C header comments, CMake comments or the changelog.

Regression test

Add docs/c-api/CORE.md and docs/c-api/FEATURE_MATRIX.md to COUNTED_DOCUMENTS (or reword them to name the registry) and run the checker's identity-count pattern over modules/*/include and cmake/ comments too; correct the changelog's alpha.1 figure to 50.

Blast radius

Documentation only. A C binding author reading CORE.md or FEATURE_MATRIX.md is told the classification routes cover 50 identities. The routes, the constants in CNA/C/graphics.h and CNA_GRAPHICS_RENDERER_MAXIMUM (46, with retired values reserved) are correct.

Workaround

Treat cmake/RendererIdentities.cmake and CNA/C/graphics.h as the count.

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

Known issues
Bug index