[Schema Consistency] Schema Consistency Check — 2026-05-29 #35656
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by Schema Consistency Checker. A newer discussion is available at Discussion #35882. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
strategy-18—additionalProperties:falseconsistency on object subschemasmain(f3e4f74)Critical Issues
1.⚠️ Schema silently accepts typos in
workflow_call/dispatch_repositoryinput definitions (NEW)Three user-input subschemas in
pkg/parser/schemas/main_workflow_schema.jsondeclarepropertiesbut omitadditionalProperties: false, so typos pass validation silently:properties.on.oneOf[1].properties.workflow_call.oneOf[1].properties.inputs.additionalPropertiestype, description, required, defaultproperties.on.oneOf[1].properties.workflow_call.oneOf[1].properties.secrets.additionalPropertiesdescription, requiredproperties["safe-outputs"].properties.dispatch_repository.additionalProperties.properties.inputs.additionalPropertiestype, description, options, required, defaultThe sibling input def under
safe-outputs.actions.*.inputs.*does setadditionalProperties: false, making the inconsistency a clear oversight. Fix: add"additionalProperties": falseto each.2.⚠️ Legacy
rate-limitfield has NO user-visible deprecation warningpkg/workflow/role_checks.go:301only emitsroleLog.Print("Extracted legacy rate-limit configuration")(debug-level, hidden from users).compiler_validators.go:344emits an experimental warning for the newuser-rate-limitkey but nothing for the legacy alias, even though the schema description says"Legacy alias for 'user-rate-limit'. Prefer ...". Fix: replace the debug log with a user-facing compile warning.Documentation Gaps
3. Three top-level schema fields have ZERO curated docs
check-for-updates,disable-model-invocation,run-install-scriptsappear only in the auto-generateddocs/src/content/docs/reference/frontmatter-full.md. No curated page references them.4. Schema descriptions link to non-existent doc anchors
Schema descriptions for
check-for-updatesandrun-install-scriptsend withSee: .../reference/frontmatter/#check-for-updatesand.../#run-install-scripts. Neither anchor heading exists indocs/src/content/docs/reference/frontmatter.md. Fix: add the headings or drop the deadSee:links.5.
IgnoredFrontmatterFields(user-invokable) is undocumentedpkg/constants/constants.go:309shipsIgnoredFrontmatterFields = []string{"user-invokable"}as a Copilot custom-agent interop hint (comment at line 308). The name appears nowhere indocs/, the schema, or any workflow file. Users have no way to discover this escape hatch.6.
applyToaccepted by parser but undocumented and falsely claimed to be schema-validatedpkg/parser/include_processor.go:267keeps"applyTo": trueinvalidFields.pkg/parser/schema_utilities.go:14comment says"all previously ignored fields (description, applyTo) are now validated by the schema"— butapplyTois not a property inmain_workflow_schema.json, andgrep -rn applyTo docs/src/content/docs/returns zero hits.Fix: either add
applyToas a real schema property + document it, or remove the stale comment and thevalidFieldsentry.Schema Improvements Needed
7. Deprecated/legacy fields lack the JSON Schema
deprecated: trueflagVerified via
jq:deprecatedx-deprecation-messageinline-sub-agents"Deprecated switch for inline sub-agent support..."nullnullrate-limit"Legacy alias for 'user-rate-limit'..."nullnullIDE hovers and validators that surface JSON Schema 2019-09+
deprecatedcannot detect either. Fix: add"deprecated": trueand"x-deprecation-message"to both.8.
$defs.templatable_integeris defined but never$ref'dmain_workflow_schema.json:10438definestemplatable_integer; no$refin the file points to it. Sibling$defs.templatable_booleanis referenced 5+ times. Several integer fields (max-runs,max-effective-tokens,timeout-minutes) inline duplicateoneOfpatterns that the dead$defsentry was presumably meant to centralize. Fix: delete the def or wire it up.9.
engine.idlists valid values in prose only — no JSON Schemaenumengine.iddeclarestype: stringwith valid values in the description only (noenum). The compiler additionally handles acustomid that is not in the prose enumeration. Fix: add anenumconstraint.Parser Updates Required
10.
SharedWorkflowForbiddenFieldscontains dead entriescommandandrolespkg/constants/constants.go:328lists"command"and line 336 lists"roles". Neither is a top-level property in the schema (jq -r '.properties | keys[] | select(test("role|command"; "i"))'→ empty). Because the top-level schema isadditionalProperties: false, any top-level use ofcommand:/roles:is already rejected by schema validation — these are dead allowlist entries. Fix: delete both entries (or comment why they're reserved).Workflow Violations
No systematic violations detected.
field_gaps.in_used_not_schemais noisy because nested keys are flattened (model,task,verdict, etc. live deep insidesafe-outputs.*/experiments.*subtrees); spot-checks of the suspicious entries did not reveal real top-level schema violations.Recommendations (priority order)
additionalProperties: falseto the three subschemas in finding rejig docs #1 — ~6 lines of JSON, prevents typo traps.rate-limit(finding Add workflow: githubnext/agentics/weekly-research #2) — small parser change, prevents silent migration breakage.See:links.deprecated: truetoinline-sub-agentsandrate-limit(finding Weekly Research Report: AI Workflow Automation Landscape and Market Opportunities - August 2025 #7).applyTo(finding add cli flag to guard dropping a agentic workflow instructinos file #6) — promote to real schema field or remove.command/rolesentries fromSharedWorkflowForbiddenFields(finding Remove ai-inference, opencode, genaiscript agentic engines for now #10) and resolvetemplatable_integer(finding Add workflow: githubnext/agentics/weekly-research #8).Strategy Performance
strategy-18(NEW): 3 high-confidence findings on first run → high effectiveness, cached for re-use.strategy-7,strategy-8,strategy-9,strategy-10,strategy-12,strategy-13,strategy-16,strategy-17— all still firing because last week's findings haven't merged.Next Steps
additionalProperties: falseto workflow_call/dispatch_repository input/secret subschemasdeprecated: true+x-deprecation-messagetoinline-sub-agentsandrate-limit$defs.templatable_integerenumconstraint toengine.idpkg/workflow/role_checks.go:301command/rolesfromSharedWorkflowForbiddenFields(pkg/constants/constants.go:328,336)check-for-updates,disable-model-invocation,run-install-scriptstoreference/frontmatter.md(or drop deadSee:links)user-invokableescape hatch for Copilot interopapplyTo; fix stale comment inpkg/parser/schema_utilities.go:14References:
f3e4f74(docs: Measuring Impact docs: Measuring Impact #35651)Beta Was this translation helpful? Give feedback.
All reactions