You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Audit of pkg/parser/schemas/main_workflow_schema.json against 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/*.md validated cleanly against the schema (initial "used-but-not-in-schema" hits were false positives from regex matching inside fenced YAML code blocks).
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-agents is not in the canonical frontmatter reference
Schema defines inline-sub-agents: boolean at top level (pkg/parser/schemas/main_workflow_schema.json).
It has a dedicated page (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.
Impact: users browsing the canonical frontmatter reference will not discover the field.
Fix: add an entry under the frontmatter reference (at minimum in frontmatter-full.md) cross-linking to the dedicated page.
2. max-effective-tokens is not in the canonical frontmatter reference
Schema defines max-effective-tokens at top level with a default of 25000000.
It is mentioned in docs/src/content/docs/reference/effective-tokens-specification.md, engines.md, and glossary.md, but 0 hits in frontmatter.md and frontmatter-full.md.
Asymmetric with its sibling max-runs, which has 2 hits in frontmatter-full.md despite both being introduced together (see ADR 31418-move-engine-max-runs-to-top-level-with-awf-enforcement.md).
Fix: mirror the max-runs section in frontmatter-full.md with a max-effective-tokens entry.
3. disable-model-invocation is missing from the short frontmatter reference
Schema defines disable-model-invocation: boolean and its description states it is the preferred replacement for deprecated infer.
Impact: users following the short reference (the default landing page for many) will not discover the canonical replacement for infer and may continue to use the deprecated field.
Fix: add disable-model-invocation to frontmatter.md alongside related custom-agent fields.
Schema improvements needed
4. Deprecation marker is inconsistent: prose vs JSON-Schema deprecated keyword
The schema currently uses the JSON-Schema "deprecated": true keyword 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'.")
Fix: add "deprecated": true to 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 typed WorkflowFrontmatter struct (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_schema list (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 (notably daily-subagent-optimizer.md and contribution-check.md), not in the frontmatter itself. The detection strategy needs a frontmatter-boundary filter to be useful next run.
Recommendations
Add inline-sub-agents, max-effective-tokens, and disable-model-invocation entries to docs/src/content/docs/reference/frontmatter-full.md; cross-link from frontmatter.md where space allows.
Add "deprecated": true to the 6 schema paths listed above so editor tooling marks them visually.
Update the schema-diff generator (/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 in in_used_not_schema.
Consider whether rate-limit (legacy alias) should be slated for removal in a future major; the description already directs users to user-rate-limit.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
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