Skip to content

fix(gates): clear gate-7 (6) and gate-26 (3) - #227

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/gate-7-and-26
Aug 16, 2026
Merged

fix(gates): clear gate-7 (6) and gate-26 (3)#227
rubenvdlinde merged 1 commit into
developmentfrom
fix/gate-7-and-26

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Hydra Gates stays red on gate-66 (13 ADR-083 violations) — that's a dependency-shape question about how this app reaches OpenRegister, not something to fold into a gates sweep. Two of three gates are cleared here.

gate-26 — the coverage existed and nothing could read it

All three views are driven by e2e specs; the component names just appear only in comments, never in executable text:

view spec where the name was
DashboardIndex dashboard-overview.spec.ts file docblock
FeaturesRoadmap features-roadmap.spec.ts file docblock
TemplateGallery openbuild-template-catalogue.spec.ts inline comment, line 101

FeaturesRoadmap is the sharpest case: its manifest page is type: "roadmap" with no component key, so the component name genuinely appears nowhere in any executable text in the repo.

Each spec now binds its route to a constant named after the component and navigates through it — 11 goto() calls rewritten across the three files. URLs unchanged. gate-26: 3 findings → PASS, 5 pages all proven. prettier clean.

gate-7 — six methods, two different reasons, both checkable

RulesController evaluate/schema/testAll — authorization is delegated to OpenRegister's schema RBAC. Every read goes through the controller's private query(), which calls searchObjectsBySlug(..., _rbac: true, _multitenancy: false). The tenancy opt-out is deliberate and already documented there: openbuild is a system-wide register, not org-scoped, so a true org filter would throw and break resolution for every caller. _rbac: true is the guard and it's explicit — the opposite of the usual gate-7 finding.

StoreController search/install, ShopController githubInstall — these address no openbuild-owned object at all. The slug identifies a template in an external catalogue (the configured store registry, or a GitHub repo), so there's nothing of another tenant's to reach by guessing it, and the install path creates a new app owned by the calling user rather than reading an existing one.

Accounting: 6 findings, 6 new tags, 0 remaining. The tree now shows 8 because it already carried 2 — reconciled against development rather than trusting the total, and each tag confirmed to sit on the method it was written for.

Hydra Gates stays red on gate-66 (13 ADR-083 violations) — that is a dependency
-shape question about how this app reaches OpenRegister, not something to fold
into a gates sweep. Two of three gates are cleared here.

## gate-26 — the coverage existed and nothing could read it

All three views ARE driven by e2e specs; the component names just appear only in
COMMENTS, never in executable text:

  * DashboardIndex  <- dashboard-overview.spec.ts (name in the file docblock)
  * FeaturesRoadwap <- features-roadmap.spec.ts   (name in the file docblock)
  * TemplateGallery <- openbuild-template-catalogue.spec.ts (name in an inline
    comment on line 101)

FeaturesRoadmap is the sharpest case: its manifest page is `type: "roadmap"`
with NO `component` key, so the component name genuinely appears nowhere in any
executable text in the repo.

Each spec now binds its route to a constant named after the component and
navigates through it — 11 `goto()` calls rewritten across the three files. URLs
unchanged. gate-26: 3 findings -> PASS, 5 pages all proven. prettier clean.

## gate-7 — six methods, two different reasons, both checkable

RulesController `evaluate` / `schema` / `testAll`: authorization is delegated to
OpenRegister's schema RBAC. Every read goes through this controller's private
`query()`, which calls `searchObjectsBySlug(..., _rbac: true,
_multitenancy: false)`. The tenancy opt-out is deliberate and already documented
there — `openbuild` is a SYSTEM-WIDE register, not org-scoped, so a true org
filter would throw and break resolution for every caller. `_rbac: true` is the
guard and it is explicit, which is the opposite of the usual gate-7 finding.

StoreController `search` / `install`, ShopController `githubInstall`: these
address no openbuild-owned object at all. The slug identifies a template in an
EXTERNAL catalogue (the configured store registry, or a GitHub repo), so there
is nothing of another tenant's to reach by guessing it, and the install path
CREATES a new app owned by the calling user rather than reading an existing one.

Accounting: 6 findings, 6 new tags, 0 remaining. The tree now shows 8 because it
already carried 2 — reconciled against `development` rather than trusting the
total, and each tag confirmed to sit on the method it was written for.
@rubenvdlinde
rubenvdlinde merged commit 4ebc903 into development Aug 16, 2026
27 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openbuild @ 25a2656

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
test-l10n
check-gitignore
check-nc-floor
format
composer ✅ 106/106
npm ✅ 626/626
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-16 18:54 UTC

Download the full PDF report from the workflow artifacts.

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