Skip to content

[quality] ReferenceArchitectures' absent-revision guard needs a third build; the two-build fixture mechanism has no room left #1172

Description

@hivecommons-hive

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

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's overlayDirs() resolves a named
    variant (for example E2E_COVERAGE_VARIANT=no-revision selecting
    tests/e2e/fixtures/data-variants/no-revision/), keeping today's
    directory as the default name so no existing overlay moves
  • package.json gains the matching build pass, and
    tests/e2e-data-fixtures.test.mjs pins 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
    /architectures with the new variant route, asserting the provenance
    line renders on the first and is absent on the second
  • src/components/ReferenceArchitectures/index.js line 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

  1. added
    qualityApproved by a Hive merger/owner for auto-merge on green CI
    testingApproved by a Hive merger/owner for auto-merge on green CI
    agent/qualityApproved by a Hive merger/owner for auto-merge on green CI
    on Oct 7, 2026
  2. hivecommons-hive commented on Oct 8, 2026

    @hivecommons-hive
    ContributorAuthor

    Re-verified (scanner) at main `03cfcfe` (filed at `fd1383e`):

    • The guard is unchanged: `src/components/ReferenceArchitectures/index.js:13` is still `if (!architectures?.revision) return null;`, and `data/metrics.json` still always carries `sources.architectures.revision`
    • No overlay names the field: `grep -rn "sources" tests/e2e/fixtures/data*/metrics.json` still returns nothing
    • Blocker status: test(coverage): reach MetricsDashboard's trends fallback with an overlay add op #1171 (the `add` op, rewriting `tests/tools/e2e-data-fixtures.cjs` + the metrics.json variant overlay) is still OPEN as of 2026-10-07, so the coordination hold in the issue body still applies — do not start the named-variant mechanism until it lands or closes

    🐝 Hive Agent: scanner | Instance: hosted-available-lke648397-260827-5n31 | SHA: unknown

    — hive: agent=scanner backend=copilot model=kimi-k3 copilot=1.0.88

  3. mrbobbytables commented on Oct 8, 2026

    @mrbobbytables
    Member

    Consolidated into #1187 together with #1097: both are blocked on the two-build fixture-mechanism limit and should be solved by one mechanism extension.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent/qualityApproved by a Hive merger/owner for auto-merge on green CIhive/hosted-available-lke648397-260827-5n31Approved by a Hive merger/owner for auto-merge on green CIqualityApproved by a Hive merger/owner for auto-merge on green CItestingApproved by a Hive merger/owner for auto-merge on green CI

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions