Repository navigation
[quality] ReferenceArchitectures' absent-revision guard needs a third build; the two-build fixture mechanism has no room left #1172
Description
Finding
src/components/ReferenceArchitectures/index.js line 13 is the guard that
drops the whole provenance line when the architectures source carries no
revision:
11 function SyncStatus() {
12 const architectures = metrics?.sources?.architectures;
13 if (!architectures?.revision) return null;
14 const shortRevision = architectures.revision.slice(0, 7);No build reaches it, and — unlike the trends fallback in #1170 — no overlay
operation can be added that would. This is the first branch in the repository
that genuinely proves the two-build ceiling the fixture mechanism was
designed around.
Why the existing mechanism cannot reach it
data/metrics.json always carries a revision:
$ python3 -c "import json;print(json.load(open('data/metrics.json'))['sources']['architectures'])"
{'repository': 'https://github.com/cncf/architecture',
'revision': '3ddf917facd0aea9694cc9c12c52e583fd2f86cb',
'sourceUrl': '.../content/en/architectures'}
sources.architectures.revision is a single document-level field on the one
file the one /architectures page reads, so it is a swap, not an addition —
the shape tests/e2e/fixtures/data-variants/ exists for. But the variant build
is already spent on a conflicting state for this very component:
| build | generatedAt |
revision |
what SyncStatus covers |
|---|---|---|---|
| ordinary | present | present | lines 14–33 and the ` on ${syncDate}` arm at 34 |
| variant | cleared | present | lines 14–33 and the '' arm at 34 |
| nothing | — | cleared | the return null at line 13 |
Clearing revision in the variant build would make SyncStatus return at line
13 and take lines 14–34 with it, including the '' arm at 34 that the variant
is currently the only build to reach. It trades one region for another rather
than adding a case — the same swap the variant build was introduced to avoid,
one level up.
Nor does the add operation proposed in #1170 help here. add works for the
trend grid because that collection is keyed, so a fixture record can render
beside the real ones. sources.architectures.revision is a scalar on a
singleton: there is nothing to add it beside.
Evidence and provenance
-
Unit — covered.
npm run test:unit:coverage
(TZ=UTC node tests/tools/coverage-report.mjs, node v26.10.0) run locally on
2026-10-07 at03cfcfereportssrc files | 100.00 | 99.92 | 8984/8984 lines | 2545/2547 regions; the only sub-100% files in the run are
scripts/lib/architecture-content.mjsandscripts/lib/svg-active-content.mjs.
src/components/ReferenceArchitectures/index.jsis at 100% of both. -
E2E — not covered. CI artifact
e2e-coverage, id11492367935, from run
37641752914,
workflowValidate repository, jobEnd-to-end coverage, head
03cfcfeb9ea28e9b1cdb55ef0a9514daccfe747e— the same revision as the unit
run.report.txt:src/components/ReferenceArchitectures/index.js | 100.00 | 88.46 | | 13 34Region 34 is the
''arm the variant build already takes; it is counted
uncovered for the region-attribution reason tracked in [quality] e2e region union does not fold single-line '||' fallback arms across the real and variant builds, so correct variant tests lower the gate #1066 / [quality] e2e region union still counts three demonstrably-executed single-line arms uncovered; their covered twin differs in START column, which #1066's proposed key would miss #1079 and is
not what this issue is about. Region 13 is reached by no build. -
No overlay names the field.
grep -rn 'sources' tests/e2e/fixtures/data*/metrics.json
returns nothing at03cfcfe. -
Covered by unit tests but not end-to-end tests, so priority 2 under the
coverage-evidence rules.
Recommendation
The mechanism needs to generalise from "the variant build" to "a variant
build", so a second overlay directory compiles a third site under its own base
URL the way build:e2e:coverage:variant compiles the second:
-
tests/tools/e2e-data-fixtures.cjs'soverlayDirs()resolves a named
variant (for exampleE2E_COVERAGE_VARIANT=no-revisionselecting
tests/e2e/fixtures/data-variants/no-revision/), keeping today's
directory as the default name so no existing overlay moves -
package.jsongains the matching build pass, and
tests/e2e-data-fixtures.test.mjspins that each named variant is built
before the e2e run and served under its own base URL - an overlay clears
sources.architectures.revision, and a spec pairs
/architectureswith the new variant route, asserting the provenance
line renders on the first and is absent on the second -
src/components/ReferenceArchitectures/index.jsline 13 leaves the
end-to-end report's uncovered-region list
Scoping note: the third and fourth boxes are the coverage this exists for, but
they cannot land without the first two, and the first two are not independently
useful — a named-variant mechanism with no second variant is dead weight. They
are therefore one deliverable and one PR, not four issues.
Coordination — blocked on #1171
This must not start until #1171
(hold-gated, for #1170) lands or closes. That PR rewrites
tests/tools/e2e-data-fixtures.cjs (the add operation),
tests/e2e/fixtures/data-variants/metrics.json and
tests/e2e-data-fixtures.test.mjs — the same three files the first two boxes
above edit. Two PRs over overlayDirs() and the same overlay would conflict on
every merge.
It is disjoint from the other open hold-gated PRs: not
tests/tools/e2e-coverage-report.mjs (#1163), not scripts/audit-gate.mjs
(#1161), not tests/architecture-content-mirror.test.mjs (#1165), not
CONTRIBUTING.md (#1166). No workflow file is involved — build:e2e:coverage
is a package.json script, and the e2e gate is --check-source-regions 91
(.github/workflows/ci.yml:256), which only rises.
Priority
- Impact: medium (one uncovered region, but it is the first proof that the
two-build mechanism has a ceiling; every future branch keyed on a scalar
singleton that conflicts with an existing variant lands in the same place) - Effort: medium
🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5n31 | SHA: fd1383e
— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88
Activity
hivecommons-hive commentedon Oct 8, 2026
Re-verified (scanner) at main `03cfcfe` (filed at `fd1383e`):
🐝 Hive Agent:
scanner| Instance:hosted-available-lke648397-260827-5n31| SHA:unknown— hive: agent=scanner backend=copilot model=kimi-k3 copilot=1.0.88
mrbobbytables commentedon Oct 8, 2026
Consolidated into #1187 together with #1097: both are blocked on the two-build fixture-mechanism limit and should be solved by one mechanism extension.