Skip to content

fix(schema): name the 11 unnamed Automation properties, and relate versionUuid - #158

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/gate51-54-schema-dialect
Aug 9, 2026
Merged

fix(schema): name the 11 unnamed Automation properties, and relate versionUuid#158
rubenvdlinde merged 1 commit into
developmentfrom
fix/gate51-54-schema-dialect

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Measured with gate package 48c88ba1e0d049f8f38538c33e790d3e603c55d0, full-repo run.

gate before after
gate-51 schema-property-titles 11 0 (PASS)
gate-54 relation-dialect 2 1

gate-51 — eleven properties shipped with no name

Nine had no title and no description at all: the notification recipient kind/permission pair, the nl/en subject templates, and every field of the provenance bookkeeping arrays (notificationKeys[].schema/.key, lifecycleActions[].schema/.transition/.marker).

This is not cosmetic. These titles are what OpenRegister renders in its own object editor — an unnamed property shows up as a raw JSON key to whoever has to fill it in.

The remaining two (trigger.type, condition.type) had a title but no description, which is the same problem one step smaller: for an enum, the values are the contract and nothing said what they meant.

gate-54 — one of two fixed

Automation.versionUuid was format: uuid with a description saying it points at an ApplicationVersion, but carried no $ref, so OpenRegister had no way to resolve or render the relation. Added "$ref": "ApplicationVersion" — the canonical ADR-062 rule-7 dialect. Verified it resolves against the schema key in lib/Settings/openbuild_register.json, and verified it does not become a dangling-$ref finding (check f) when only this file is in scope.

Left red on purpose: Automation.actions.items.templateId

It is format: uuid and its description does say "UUID of the Docudesk template", so gate-54's relation-shape heuristic matches. But the object it names is a Docudesk template, fetched over Docudesk's own REST API. It is not an object in OpenBuild's register, and ADR-062 rule 7 requires a $ref that resolves to a schema key in the same register file set (check f).

So there are exactly two ways to make this gate green here, and both are worse than the finding:

  • Write some $ref anyway → a dangling reference, trading a real finding for a worse one.
  • Reword the description until _RELATION_DESC_RE stops matching → the schema is byte-for-byte as unhelpful as before and only the words moved. That is comment-satisfaction.

Rule 7 has no vocabulary for a cross-app foreign key. That is the actual gap and it belongs upstream in the gate, not in this file. Reporting it rather than dressing it up.

…rsionUuid

gate-51 schema-property-titles: 11 -> 0.
gate-54 relation-dialect: 2 -> 1 (the remaining one is not honestly fixable
here — see below).

gate-51. Eleven properties in the Automation schema shipped with no title
and, in nine cases, no description at all: the notification recipient
`kind`/`permission` pair, the `nl`/`en` subject templates, and every field of
the `provenance` bookkeeping arrays. These are the labels OpenRegister renders
in its own object editor, so an unnamed property shows as a raw JSON key to
whoever has to fill it in. The two `type` enums (trigger, condition) had a
title but no description, which is the same problem one step smaller: the
enum values are the whole contract and nothing said what they mean.

gate-54. `Automation.versionUuid` is `format: uuid` with a description that
says it points at an ApplicationVersion, but carried no `$ref` — so
OpenRegister had no way to resolve or render the relation. Added
`"$ref": "ApplicationVersion"`, the canonical ADR-062 rule-7 dialect, which
resolves against the schema key in `lib/Settings/openbuild_register.json`.

NOT FIXED, deliberately: `Automation.actions.items.templateId`.
It is `format: uuid` and its description does say "UUID of the Docudesk
template", so gate-54's relation-shape heuristic matches. But the object it
names is a DOCUDESK template, fetched over Docudesk's own REST API — it is
not an object in OpenBuild's register, and ADR-062 rule 7 requires a `$ref`
that resolves to a schema key IN THE SAME REGISTER FILE SET (check f). Any
`$ref` I could write here would be a dangling one, trading a real finding for
a worse one. The alternative — rewording the description until the regex
stops matching — would leave the schema unchanged and only move the words,
which is exactly the comment-satisfaction this programme forbids. Rule 7 has
no vocabulary for a cross-app foreign key; that is the gap, and it belongs
upstream rather than in this file.
@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openbuild @ b534049

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
test-l10n
check-gitignore
composer ✅ 101/101
npm ✅ 654/654
PHPUnit
Newman ⏭️
Playwright
Hydra gates

Quality workflow — 2026-08-09 14:56 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit d4e6408 into development Aug 9, 2026
30 of 32 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.

2 participants