Skip to content

fix(gates): port gates 62 and 63 into the package — they were about to be lost - #136

Merged
rubenvdlinde merged 1 commit into
mainfrom
feat/port-gates-62-63
Aug 3, 2026
Merged

fix(gates): port gates 62 and 63 into the package — they were about to be lost#136
rubenvdlinde merged 1 commit into
mainfrom
feat/port-gates-62-63

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

hydra#512 makes hydra delegate to this package (runner: 3,599 lines → a 53-line shim). It conflicts with hydra's development in exactly one file — the runner it replaces — and the conflict is substantive.

e30cd435 (ADR-079 settings-surface + ADR-080 store plane, with gates 62/63) added 36 lines to hydra's runner while that runner was being deleted. Taking the shim drops both gates; taking hydra's undoes the delegation.

So the gates come here, where the implementation now lives:

gate
62 store-plane ADR-080 — store / templates / catalogue are three distinct concepts
63 settings-surface ADR-079

scripts/lib/check_store_and_settings_surface.py was also absent from the package and is ported with them. A gate whose helper is missing doesn't fail loudly — it fails however the shell happens to, which is the defect class this package exists to remove.

Declared count 61 → 63 in the summary line only. That number must not live in prose: it read 61 while 59 actually reported, because gates 24 and 33 skip silently.

Proved both directions

violating tree  ->  FAIL … menu entry 'Store' names the STORE concept but
                    renders 'WrongIcon' — Tier A requires 'StoreOutline'
                ->  exit 1
clean tree      ->  0 failure(s), exit 0

A gate only ever observed passing is indistinguishable from one that cannot fail.

⚠️ This unblocks hydra#512, which unblocks openbuild#104 — currently the only place the gates would actually run.

…o be lost

hydra#512 makes hydra delegate to this package and reduces its own
run-hydra-gates.sh from 3,599 lines to a 53-line shim. It conflicts with hydra's
`development` in exactly one file: the runner it replaces.

The conflict is SUBSTANTIVE, not mechanical. Commit e30cd435 ("ADR-079
settings-surface placement + ADR-080 store plane, with gates 62/63") added 36
lines to hydra's runner while that runner was being deleted. Taking the shim
drops both gates; taking hydra's undoes the delegation. Neither mechanical
resolution is correct.

So the gates come here, where the implementation now lives:

  gate 62  store-plane        (ADR-080) — store / templates / catalogue are
                                          three distinct concepts
  gate 63  settings-surface   (ADR-079)

Both are driven by scripts/lib/check_store_and_settings_surface.py, which was
also absent from the package and is ported with them. A gate whose helper is
missing does not fail loudly — it fails in whatever way the shell happens to
produce, which is the class of defect this package exists to remove.

The declared count moves 61 → 63 in the summary line. That number should not
live in prose anywhere else: it read 61 while only 59 gates actually reported,
because gates 24 and 33 skip silently, and a hard-coded count in a document is
exactly how that went unnoticed for as long as it did.

PROVED both directions, not just that it runs:

    violating tree (a menu entry naming the STORE concept with the wrong icon)
      -> FAIL src/manifest.json: menu entry 'Store' names the STORE concept but
         renders 'WrongIcon' — Tier A requires 'StoreOutline'
      -> exit 1
    clean tree
      -> checked 1 manifest(s): 0 failure(s)
      -> exit 0

A gate only ever observed passing is indistinguishable from one that cannot
fail, so the failing case is the half that matters.

bash -n and py_compile clean.
@rubenvdlinde
rubenvdlinde merged commit 847f0a3 into main Aug 3, 2026
7 checks passed
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