Context
The r3.1 release-review validation (run) reports 29 warnings + 61 hints (0 errors). These originate from the release-review Spectral profile (.spectral-r4.yaml), which is stricter than the PR-time profile — so the implementation PRs were green while these surface only at release time.
The warnings are not release-blocking, but we are treating them as a gate for a clean RC and clearing them on main before re-cutting the snapshot. Rather than documenting any of these as deferred, all 29 warnings are being fixed (including the invasive UUID rename).
Warnings to fix (29 findings → 24 unique source locations)
S-011 — property/example missing description (19)
modules/NAM_Common.yaml: ResourceIdentifier.id, ResourceAudit.createdAt, ResourceAudit.modifiedAt
modules/Services/Services.yaml: ServiceSite.id
modules/RebootRequests/RebootRequests.yaml: RebootRequestUpdate.atTime; examples RebootRequestCreateImmediateDefaultDevice, RebootRequestCreateScheduledMultipleDevices
modules/TrustDomains/TrustDomains.yaml: TrustDomainUpdate.expiration (description is nested in allOf — lift it to the property); examples TrustDomainCreateWpa2Personal, TrustDomainCreateInferredSsid, TrustDomainCreateThreadStructured, TrustDomainCreateEphemeral, TrustDomainCreateQoSPolicies
modules/TrustDomainDevices/TrustDomainDevices.yaml: BootstrappingInfo.selectedProtocol, GenerateDeviceCredential.selectedType, TrustDomainDeviceUpdate.bootstrappingInfo; examples TrustDomainDeviceCreateIoT, TrustDomainDeviceCreateMinimal, TrustDomainDeviceCreateMatter
S-031 — array items missing description (2)
modules/TrustDomains/TrustDomainCapabilities.yaml: WiFiAccessTypeProperties.supportedSecurityModes.items, EgressPolicyCapability.supportedDestinationTypes.items
S-015 — schema name not PascalCase (1) — rename
modules/NAM_Common.yaml: rename schema UUID → Uuid. Invasive but in scope: 1 definition + 10 $refs across 7 module files (NAM_Common.yaml, NetworkAccessDevices.yaml, TrustDomains.yaml, TrustDomainDevices.yaml, Services/Services.yaml, Services/ServiceSites.yaml, RebootRequests.yaml). Update the definition and every $ref together.
S-030 — required property not defined in properties (2)
modules/TrustDomains/TrustDomains.yaml: TrustDomainCreate.required: [name, ...]
modules/TrustDomainDevices/TrustDomainDevices.yaml: TrustDomainDeviceCreate.required: [deviceName, ...]
Both are allOf-inheritance findings: the property is defined in the parent *Update schema and inherited via allOf, which the linter does not resolve. Fix by restructuring so the required properties resolve within the schema the linter evaluates.
Hints — not fixing (61)
All 61 are S-313 (owasp:api4:2023-string-restricted): free-form strings without format/pattern/enum. These are the documented "acceptable / no fix needed" set and are intentionally left as-is.
Verification
Reproducible locally by bundling each spec (redocly bundle) and running the camaraproject/tooling .spectral-r4.yaml ruleset (plus its lint_function/ checks) against the bundle — the same engine the release review uses. Done when the release-review run reports 0 warnings.
Context
The r3.1 release-review validation (run) reports 29 warnings + 61 hints (0 errors). These originate from the release-review Spectral profile (
.spectral-r4.yaml), which is stricter than the PR-time profile — so the implementation PRs were green while these surface only at release time.The warnings are not release-blocking, but we are treating them as a gate for a clean RC and clearing them on
mainbefore re-cutting the snapshot. Rather than documenting any of these as deferred, all 29 warnings are being fixed (including the invasiveUUIDrename).Warnings to fix (29 findings → 24 unique source locations)
S-011 — property/example missing
description(19)modules/NAM_Common.yaml:ResourceIdentifier.id,ResourceAudit.createdAt,ResourceAudit.modifiedAtmodules/Services/Services.yaml:ServiceSite.idmodules/RebootRequests/RebootRequests.yaml:RebootRequestUpdate.atTime; examplesRebootRequestCreateImmediateDefaultDevice,RebootRequestCreateScheduledMultipleDevicesmodules/TrustDomains/TrustDomains.yaml:TrustDomainUpdate.expiration(description is nested inallOf— lift it to the property); examplesTrustDomainCreateWpa2Personal,TrustDomainCreateInferredSsid,TrustDomainCreateThreadStructured,TrustDomainCreateEphemeral,TrustDomainCreateQoSPoliciesmodules/TrustDomainDevices/TrustDomainDevices.yaml:BootstrappingInfo.selectedProtocol,GenerateDeviceCredential.selectedType,TrustDomainDeviceUpdate.bootstrappingInfo; examplesTrustDomainDeviceCreateIoT,TrustDomainDeviceCreateMinimal,TrustDomainDeviceCreateMatterS-031 — array
itemsmissingdescription(2)modules/TrustDomains/TrustDomainCapabilities.yaml:WiFiAccessTypeProperties.supportedSecurityModes.items,EgressPolicyCapability.supportedDestinationTypes.itemsS-015 — schema name not PascalCase (1) — rename
modules/NAM_Common.yaml: rename schemaUUID→Uuid. Invasive but in scope: 1 definition + 10$refs across 7 module files (NAM_Common.yaml,NetworkAccessDevices.yaml,TrustDomains.yaml,TrustDomainDevices.yaml,Services/Services.yaml,Services/ServiceSites.yaml,RebootRequests.yaml). Update the definition and every$reftogether.S-030 — required property not defined in
properties(2)modules/TrustDomains/TrustDomains.yaml:TrustDomainCreate.required: [name, ...]modules/TrustDomainDevices/TrustDomainDevices.yaml:TrustDomainDeviceCreate.required: [deviceName, ...]Both are
allOf-inheritance findings: the property is defined in the parent*Updateschema and inherited viaallOf, which the linter does not resolve. Fix by restructuring so the required properties resolve within the schema the linter evaluates.Hints — not fixing (61)
All 61 are S-313 (
owasp:api4:2023-string-restricted): free-form strings withoutformat/pattern/enum. These are the documented "acceptable / no fix needed" set and are intentionally left as-is.Verification
Reproducible locally by bundling each spec (
redocly bundle) and running thecamaraproject/tooling.spectral-r4.yamlruleset (plus itslint_function/checks) against the bundle — the same engine the release review uses. Done when the release-review run reports 0 warnings.