Skip to content

fix(gates): manifest-l10n-coverage is gate-102 — 101 was already taken - #620

Merged
rubenvdlinde merged 3 commits into
mainfrom
fix/gate-101-collision
Aug 28, 2026
Merged

fix(gates): manifest-l10n-coverage is gate-102 — 101 was already taken#620
rubenvdlinde merged 3 commits into
mainfrom
fix/gate-101-collision

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

run-hydra-gates.sh declares GATE 101 twice:

line 10818:  # GATE 101 — manifest-l10n-coverage
line 10997:  # GATE 101 — demo-data-coverage

Both call _pass / _fail / _skip with 101 under different names.

How it got here

Both gates were introduced as gate-99, fourteen minutes apart:

f066a5c2 20:57 feat(gates): gate 99 — demo data for every schema
22e53a4f 21:11 feat(gates): gate-99 manifest-l10n-coverage

#615 fixed that collision by moving l10n from 99 to 101 — a number demo-data-coverage
already held. The collision moved rather than closing.

Why it is not obvious

There is no duplicate-number warning. The symptom is a different gate's test failing:

FAIL — expected FAIL on planted, got:
  [gate-101] manifest-l10n-coverage: NOT APPLICABLE — no user-visible manifest string …

test_gate101_demo_data_scope.sh greps for [gate-101] and reads the other gate's verdict. It
reports its own gate as broken while that gate is fine. Every PR touching hydra-gates is red on
this, including #614.

The fix

manifest-l10n-coveragegate-102 (102 was free; 101 is now uniquely demo-data-coverage).

l10n moves rather than demo-data because demo-data has a test file whose name pins its number
(test_gate101_demo_data_scope.sh) and l10n has none — so this is the change with no rename in it.

Verified: exactly one GATE 101 and one GATE 102 remain, the surviving 101 is demo-data-coverage,
no 101 is left anywhere in the l10n block, and the script parses (bash -n).

The runner declared GATE 101 twice: manifest-l10n-coverage and
demo-data-coverage, each calling _pass/_fail with the same number under
different names.

Both gates were introduced as gate-99 within 14 minutes of each other, and the
fix for THAT collision (#615) moved l10n from 99 to 101 - onto a number
demo-data-coverage already held. The collision moved rather than closing.

The symptom is not a duplicate-number warning. test_gate101_demo_data_scope.sh
fails with 'expected FAIL on planted, got: [gate-101] manifest-l10n-coverage:
NOT APPLICABLE' - the demo-data test greps for its own gate number and reads
the OTHER gate's verdict. Any PR touching hydra-gates is red on it.

l10n moves rather than demo-data because demo-data has a test file whose NAME
pins its number (test_gate101_demo_data_scope.sh) and l10n has none, so this is
the change with no rename in it.
test_gate_acceptance_matrix.sh keys a fixture to its gate by NUMBER, so moving
manifest-l10n-coverage off the duplicated 101 orphaned its own acceptance
bundle: 'gate-102 is DECLARED by the runner but has neither a planted/clean
fixture nor a reasoned row in UNCOVERED.md'.

The fixture, its two arms and its reasoning are unchanged - only the number it
is filed under.
The note explained the first collision and stopped there, so it read as closed.
It was not: moving l10n 99 -> 101 landed on the number this gate had just
taken, and the identical failure reappeared hours later.

Both times the tell was this suite failing while the gate it names was fine,
because a test that greps [gate-N] reads whichever gate printed that number
last. Recording the second occurrence is the part that stops a third.
@rubenvdlinde
rubenvdlinde merged commit 663e50c into main Aug 28, 2026
39 checks passed
@rubenvdlinde
rubenvdlinde deleted the fix/gate-101-collision branch August 28, 2026 10:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant