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
AWF config-source drift: Canonical source unavailable (degraded: true in /tmp/gh-aw/agent/awf-config-drift.json), so no AWF drift findings below should be treated as authoritative.
Critical Issues
1. max-daily-ai-credits default behavior disagrees between schema, parser, and docs
Schema/docs claim: pkg/parser/schemas/main_workflow_schema.json describes max-daily-ai-credits as omitted = disabled, and docs/src/content/docs/reference/frontmatter.md plus docs/src/content/docs/reference/cost-management.md repeat that claim.
Parser/compiler behavior: pkg/workflow/daily_aic_workflow.go enables the guardrail by default unless the workflow explicitly sets -1.
resolveMaxDailyAIC() falls back to BuildDefaultMaxDailyAICreditsExpression(constants.DefaultMaxDailyAICredits) when the field is omitted.
hasMaxDailyAICGuardrail() returns !hasWorkflowExplicitMaxDailyAICDisable(data), so omission still enables the guardrail.
Workflow reality: many workflows set max-daily-ai-credits, but the current implementation still means omission does not disable the feature.
Impact: users relying on docs/schema can accidentally get a live API-expensive guardrail they thought was off.
2. max-daily-ai-credits aggregation scope is documented as per-workflow or per-user depending on file
Frontmatter docs: docs/src/content/docs/reference/frontmatter.md says the limit is "for a single workflow, aggregated across recent runs of the same workflow in the repository."
Generated full reference: docs/src/content/docs/reference/frontmatter-full.md says "24-hour AI Credits guardrail for runs triggered by the same user."
Implementation/docs elsewhere: docs/src/content/docs/reference/cost-management.md agrees with the per-workflow aggregation model, not the per-user model.
Impact: operators may mis-estimate enforcement and API cost, especially for shared workflows run by multiple actors.
Documentation Gaps
3. secret-masking is present in schema and implementation but missing from the human frontmatter reference
Parser/compiler: pkg/workflow/secret_masking.go extracts and merges secret-masking; pkg/workflow/frontmatter_types.go has SecretMasking *SecretMaskingConfig.
Docs gap: docs/src/content/docs/reference/frontmatter.md does not have a secret-masking section, while frontmatter-full.md and imports.md do mention it.
Impact: the primary hand-written frontmatter reference is incomplete for a supported top-level field.
Schema Improvements Needed
4. max-tool-denials schema accepts templated expressions, but parser silently treats expression values as unset
Schema/docs claim: pkg/parser/schemas/main_workflow_schema.json and docs/src/content/docs/reference/frontmatter.md/frontmatter-full.md say max-tool-denials supports GitHub Actions expressions.
Parser behavior:
pkg/workflow/engine_config_parser.go routes max-tool-denials through parseIntOrExpressionValue, which preserves expressions.
But FrontmatterConfig.MaxToolDenials is *TemplatableInt32, while other runtime paths consume strings; this split is easy to misuse.
More importantly, analogous integer-only handling for max-turn-cache-misses explicitly rejects expressions by treating them as unset, so the docs need to call out where expressions are runtime-supported vs compile-time-only and keep that distinction consistent.
Impact: this is a lower-confidence but still actionable consistency risk: the family of budget/limit fields is documented inconsistently, and neighboring fields behave differently enough that users can easily misconfigure them.
Parser Updates Required
Decide the intended omitted behavior for max-daily-ai-credits, then make all three agree:
Regenerate frontmatter-full.md after fixing the source schema comments/descriptions for max-daily-ai-credits.
Add explicit frontmatter reference coverage for secret-masking in docs/src/content/docs/reference/frontmatter.md.
Audit all numeric guardrail fields for consistent expression support language, especially max-tool-denials vs max-turn-cache-misses.
Workflow Violations
No top-level workflow keys were found outside the schema (field_gaps.in_used_not_schema was empty).
Representative workflows use max-daily-ai-credits heavily, which increases the risk of the documentation drift above because users will copy those patterns.
Recommendations
Fix the max-daily-ai-credits contract first — it is the most user-visible mismatch and changes runtime behavior.
Regenerate and diff frontmatter-full.md after any schema comment updates; the generated file currently preserves stale wording about "same user" aggregation.
Add a concise secret-masking section to frontmatter.md with one example and a link to the fuller reference.
Create a guardrail-field consistency test that compares documented default/aggregation wording for max-ai-credits, max-daily-ai-credits, max-tool-denials, and max-turn-cache-misses against the implementation.
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.
🔍 Schema Consistency Check - 2026-09-02
Summary
degraded: truein/tmp/gh-aw/agent/awf-config-drift.json), so no AWF drift findings below should be treated as authoritative.Critical Issues
1.
max-daily-ai-creditsdefault behavior disagrees between schema, parser, and docspkg/parser/schemas/main_workflow_schema.jsondescribesmax-daily-ai-creditsas omitted = disabled, anddocs/src/content/docs/reference/frontmatter.mdplusdocs/src/content/docs/reference/cost-management.mdrepeat that claim.pkg/workflow/daily_aic_workflow.goenables the guardrail by default unless the workflow explicitly sets-1.resolveMaxDailyAIC()falls back toBuildDefaultMaxDailyAICreditsExpression(constants.DefaultMaxDailyAICredits)when the field is omitted.hasMaxDailyAICGuardrail()returns!hasWorkflowExplicitMaxDailyAICDisable(data), so omission still enables the guardrail.max-daily-ai-credits, but the current implementation still means omission does not disable the feature.2.
max-daily-ai-creditsaggregation scope is documented as per-workflow or per-user depending on filedocs/src/content/docs/reference/frontmatter.mdsays the limit is "for a single workflow, aggregated across recent runs of the same workflow in the repository."docs/src/content/docs/reference/frontmatter-full.mdsays "24-hour AI Credits guardrail for runs triggered by the same user."docs/src/content/docs/reference/cost-management.mdagrees with the per-workflow aggregation model, not the per-user model.Documentation Gaps
3.
secret-maskingis present in schema and implementation but missing from the human frontmatter referencepkg/parser/schemas/main_workflow_schema.jsondefines top-levelsecret-masking.steps.pkg/workflow/secret_masking.goextracts and mergessecret-masking;pkg/workflow/frontmatter_types.gohasSecretMasking *SecretMaskingConfig.docs/src/content/docs/reference/frontmatter.mddoes not have asecret-maskingsection, whilefrontmatter-full.mdandimports.mddo mention it.Schema Improvements Needed
4.
max-tool-denialsschema accepts templated expressions, but parser silently treats expression values as unsetpkg/parser/schemas/main_workflow_schema.jsonanddocs/src/content/docs/reference/frontmatter.md/frontmatter-full.mdsaymax-tool-denialssupports GitHub Actions expressions.pkg/workflow/engine_config_parser.goroutesmax-tool-denialsthroughparseIntOrExpressionValue, which preserves expressions.FrontmatterConfig.MaxToolDenialsis*TemplatableInt32, while other runtime paths consume strings; this split is easy to misuse.max-turn-cache-missesexplicitly rejects expressions by treating them as unset, so the docs need to call out where expressions are runtime-supported vs compile-time-only and keep that distinction consistent.Parser Updates Required
max-daily-ai-credits, then make all three agree:pkg/workflow/daily_aic_workflow.gofallback logic.frontmatter-full.mdafter fixing the source schema comments/descriptions formax-daily-ai-credits.secret-maskingindocs/src/content/docs/reference/frontmatter.md.max-tool-denialsvsmax-turn-cache-misses.Workflow Violations
field_gaps.in_used_not_schemawas empty).max-daily-ai-creditsheavily, which increases the risk of the documentation drift above because users will copy those patterns.Recommendations
max-daily-ai-creditscontract first — it is the most user-visible mismatch and changes runtime behavior.frontmatter-full.mdafter any schema comment updates; the generated file currently preserves stale wording about "same user" aggregation.secret-maskingsection tofrontmatter.mdwith one example and a link to the fuller reference.max-ai-credits,max-daily-ai-credits,max-tool-denials, andmax-turn-cache-missesagainst the implementation.Strategy Performance
Next Steps
max-daily-ai-creditsdefault semantics in either code or docs/schemafrontmatter-full.mdwording with actual aggregation scopesecret-maskinginfrontmatter.mdAll reactions