fix(schema): name the 11 unnamed Automation properties, and relate versionUuid - #158
Merged
Merged
Conversation
…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.
Contributor
Quality Report — ConductionNL/openbuild @
|
| 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Measured with gate package
48c88ba1e0d049f8f38538c33e790d3e603c55d0, full-repo run.gate-51 — eleven properties shipped with no name
Nine had no title and no description at all: the notification recipient
kind/permissionpair, thenl/ensubject templates, and every field of theprovenancebookkeeping 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.versionUuidwasformat: uuidwith 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 inlib/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.templateIdIt is
format: uuidand 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$refthat 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:
$refanyway → a dangling reference, trading a real finding for a worse one._RELATION_DESC_REstops 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.