Skip to content

gate-48's advisory displaces its verdict for both parsers; and 47/48 are the last two printing PASS over a zero-file delta #401

Description

@rubenvdlinde

gate-48's advisory line displaces its own verdict for both of the package's verdict parsers

On the larpingapp#298 PASS branch, gate-48 prints its advisory before its verdict, with the same prefix:

[gate-48] no CSRF signal was ADDED…
[gate-48] csrf-cochange: PASS

Both parsers in the package take the first matching line:

  • gf_verdict filters only NOTE|WARN|INFO: — this advisory matches none of those
  • the acceptance-matrix _verdict filters nothing

Consequence: the first person to author a gate-48 acceptance bundle will be told gate-48 emitted NO verdict line at alla gate defect that does not exist. They will then debug the gate rather than the parser.

This is the same class the library's own header documents for gate-61's NOTE, and which #377 repaired there — the guard simply does not reach this shape. The general form is worth stating once: a gate's advisory output and its verdict share a prefix, so any "first line wins" parser is one advisory away from reporting silence.

Correction to a claim I have been repeating — 47 and 48 do NOT pass over an empty delta

A truly empty delta is unreachable through the wrapper. --base <sha-of-HEAD> yields NOT APPLICABLE, not PASS. Anyone reporting "gates 47/48 print a bare PASS over an empty delta" — I did, in several briefs — is describing something that cannot happen.

What does reproduce is a delta containing zero inspectable files. README-only change, one run:

COVERAGE: 4 of 65 … 4 of 4 applicable gates ran

where three of the four are delta gates that opened no candidate file (16, 47, 48 — all PASS), while 19, 29 and 61 say NOT APPLICABLE and name what was excluded.

Gates 47 and 48 are the last two in this band still printing PASS over an empty scope. Gates 46, 50, 55, 56, 58, 59, 60 and 62 were all fixed for exactly this by #242 and #268 — so the remedy already exists in-tree and has been applied eight times.

Two registries of "what has been proven" disagree with the code

Found while checking whether these gates had already been exercised:

UNCOVERED.md records no-fixture-yet · Nothing blocks authoring this for gates 46 and 50. Both already have planted-defect arms inside the package: test_gate_46_tests_scope.sh, and five gate-50 FAIL arms in test_gate_45_to_55_acceptance.sh.

So two registries of proven-ness disagreed with the code, in the same direction — both understating coverage — and neither had been cross-checked against it. That is the same shape as the finding that sent two agents to re-exercise gates that had already been exercised: prior exercise recorded in a file is invisible to a search of the corpus, and vice versa.

What the re-exercise was worth, since the premise was wrong

All ten gates (46, 47, 48, 50, 55, 56, 58, 59, 60, 62) had already been exercised in findings/gate-proof-44-64.md. The re-run was still worth doing because it drove a different layer: the prior pass and both package suites drive run-hydra-gates.sh; this drove bin/hydra-gates — the layer #347 lived in, and the one gate_fixture_support.sh's own header warns a runner-level suite would miss.

88 arms, 10 gates, 0 missed predictions on the final run. All ten WORKS; nothing failed to fire.

It also verified three #379 repairs rather than inheriting them:

  • gate-50: opencatalogi FAIL — 23, split by app-id spelling = 16 variable / 0 constant / 7 literal. The 7 were always visible; the 16 are $this->appName reads of the #86 keys. softwarecatalog: 0 blocking, 64/64 demoted with the positional reason in .notes.
  • gate-60: the Tier B WARN branch is reachable (fires on Invoice, names ReceiptTextOutline, does not fail). Its 19 arms are mutation-proven — reverting _concept_labels() turns 6 of 19 red.
  • gate-62: the type:"caption" node now passes; the gate-60/62 divergence is closed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions