[Schema Consistency] Schema consistency audit - 2026-05-13 #31882
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it expired on 2026-05-14T06:36:01.362Z.
|
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.
-
Overview
Audit of
pkg/parser/schemas/main_workflow_schema.jsonagainst the canonical frontmatter reference docs and against deprecation prose found inside the schema itself. Three actionable inconsistencies surfaced; all schema fields used in.github/workflows/*.mdvalidated cleanly against the schema (initial "used-but-not-in-schema" hits were false positives from regex matching inside fenced YAML code blocks).Summary
strategy-field-doc-gap(proven) +strategy-deprecation-keyword-audit(proven)Critical issues
None. No silent schema/parser mismatches that would let invalid configs through. The issues below are documentation and tooling-marker gaps.
Documentation gaps
1.
inline-sub-agentsis not in the canonical frontmatter referenceinline-sub-agents: booleanat top level (pkg/parser/schemas/main_workflow_schema.json).docs/src/content/docs/reference/inline-sub-agents.md) but is absent from bothdocs/src/content/docs/reference/frontmatter.mdanddocs/src/content/docs/reference/frontmatter-full.md.frontmatter-full.md) cross-linking to the dedicated page.2.
max-effective-tokensis not in the canonical frontmatter referencemax-effective-tokensat top level with a default of25000000.docs/src/content/docs/reference/effective-tokens-specification.md,engines.md, andglossary.md, but 0 hits infrontmatter.mdandfrontmatter-full.md.max-runs, which has 2 hits infrontmatter-full.mddespite both being introduced together (see ADR31418-move-engine-max-runs-to-top-level-with-awf-enforcement.md).max-runssection infrontmatter-full.mdwith amax-effective-tokensentry.3.
disable-model-invocationis missing from the short frontmatter referencedisable-model-invocation: booleanand its description states it is the preferred replacement for deprecatedinfer.frontmatter.md= 0,frontmatter-full.md= 2.inferand may continue to use the deprecated field.disable-model-invocationtofrontmatter.mdalongside related custom-agent fields.Schema improvements needed
4. Deprecation marker is inconsistent: prose vs JSON-Schema
deprecatedkeywordThe schema currently uses the JSON-Schema
"deprecated": truekeyword on 6 paths. Another 6 paths declare deprecation only in the description text (DEPRECATED:/Legacy alias for.../Prefer ...). IDEs, schema validators, and editor tooling honor the keyword, not the prose - so these fields are not visually flagged.Paths described as deprecated but missing the `deprecated: true` keyword
properties.infer(description: "DEPRECATED: Use 'disable-model-invocation' instead.")properties.rate-limit(description: "Legacy alias for 'user-rate-limit'.")properties.rate-limit.properties.max(description: "Legacy maximum runs key. Prefer 'max-runs-per-window'.")properties.rate-limit.properties.max-runs(description: "Legacy maximum runs key. Prefer 'max-runs-per-window'.")properties.on.oneOf.1.properties.commandproperties.tools.properties.github.oneOf.3.properties.modePaths already correctly marked with `deprecated: true` (for reference)
$defs.stdio_mcp_tool.properties.networkproperties.safe-outputs.properties.create-agent-task.oneOf.0properties.tools.properties.github.oneOf.3.properties.reposproperties.tools.properties.github.oneOf.3.properties.toolsetproperties.tools.properties.grepproperties.tools.properties.serenaFix: add
"deprecated": trueto each of the 6 prose-only paths so tooling can render them with strikethrough / warnings.Parser updates required
None identified this run. The parser handles top-level frontmatter through dynamic map access (
frontmatter["<key>"]) and a typedWorkflowFrontmatterstruct (pkg/workflow/frontmatter_types.go), so a naive yaml-tag diff against the schema produces noise, not signal. Fields initially flagged as orphaned (e.g.resources) were confirmed to be wired through struct tags.Workflow violations
None. The pre-computed
field_gaps.in_used_not_schemalist (affected_sections,independence,model_adequacy,else,https,try,verdict, ...) was sampled and every match landed inside a fenced YAML code block in the markdown body of a workflow file (notablydaily-subagent-optimizer.mdandcontribution-check.md), not in the frontmatter itself. The detection strategy needs a frontmatter-boundary filter to be useful next run.Recommendations
inline-sub-agents,max-effective-tokens, anddisable-model-invocationentries todocs/src/content/docs/reference/frontmatter-full.md; cross-link fromfrontmatter.mdwhere space allows."deprecated": trueto the 6 schema paths listed above so editor tooling marks them visually./tmp/gh-aw/agent/schema-diff.json) to restrict its workflow-frontmatter scan to the---...---frontmatter block only - this will eliminate the false-positive flood inin_used_not_schema.rate-limit(legacy alias) should be slated for removal in a future major; the description already directs users touser-rate-limit.Strategy performance
strategy-field-doc-gap,strategy-deprecation-keyword-auditdeprecated: true/tmp/gh-aw/cache-memory/strategies.jsonstrategy-go-reference-countproduced a false lead onresources; keep with caveat that struct-tag bindings must be cross-checked.Next steps
frontmatter-full.mdwith the 3 missing fields (item 1)"deprecated": trueto the 6 schema paths (item 2)used_in_workflowsto frontmatter blocks only (item 3)rate-limitremoval timeline (item 4)References:
Beta Was this translation helpful? Give feedback.
All reactions