[Schema Consistency] Schema Consistency Analysis Report #26978
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by Schema Consistency Checker. A newer discussion is available at Discussion #27145. |
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
This is a comprehensive analysis of schema consistency across the gh-aw project, examining 4 areas: Schema vs Parser implementation, Schema vs Documentation, Schema vs Actual Workflows, and Parser vs Documentation.
Schema Fields (top-level)
The
main_workflow_schema.jsondefines 53 top-level frontmatter fields:Trigger & Activation Fields:
on(required, complex nested structure)command(string, for /command triggers)import-schema(object, for validating import inputs)imports(array/object, for workflow imports)Configuration Fields:
name,description,source,redirect,tracker-id,labels,metadata,private,resourcesengine(default: copilot)strict(boolean)features(object, feature flags)runtimes(runtime version overrides)Execution Fields:
run-name,runs-on,runs-on-slim,timeout-minutes,if,concurrencyenvironment,container,servicescache,checkoutsteps,pre-steps,pre-agent-steps,post-steps,jobsTools & Permissions:
tools(tool configuration)permissions(GitHub token scopes)network(network access control)mcp-servers(MCP server definitions)mcp-scripts(custom MCP tools)sandbox(sandbox configuration)Output & Advanced:
safe-outputs(automated output routes)cache-memory,repo-memory(memory/persistence)secrets,envobservability(OTLP configuration)rate-limit(trigger rate limiting)secret-masking(secret masking config)check-for-updates(version check toggle)inlined-imports(inline imports at compile time)run-install-scripts(npm/pip install behavior)disable-model-invocation(custom agent flag)infer(DEPRECATED: use disable-model-invocation)dependencies(DEPRECATED: use imports)Note: The schema uses
required: ["on"], so only theon:field is strictly required.Parser/Workflow Go Struct Fields
The main
WorkflowDatastruct in/pkg/workflow/compiler_types.go(lines 382-494) contains these fields:Core Fields:
Name,WorkflowID,Description,Source,Redirect,TrackerIDFrontmatterName,FrontmatterYAML,FrontmatterHashOn,Permissions,Network,RunName,Env,EnvSourcesIf,TimeoutMinutesExecution Fields:
CustomSteps,PreSteps,PreAgentSteps,PostStepsRunsOn,RunsOnSlim,Environment,Container,ServicesJobs(map of custom jobs)Tools(map),ParsedTools(structured)Advanced Fields:
EngineConfig(extends Engine)NetworkPermissions(parsed)SandboxConfig(parsed)SafeOutputs(parsed)MCPScripts(parsed)SecretMasking(parsed)CacheMemoryConfig,RepoMemoryConfigFeatures(map)Runtimes(map)Roles,Bots,RateLimitCheckoutConfigs,CheckoutDisabled**Flags & Meta(redacted)
TrialMode,TrialLogicalRepoHasExplicitGitHubTool,InlinedImportsStrictMode,UpdateCheckDisabled,StaleCheckDisabledRunInstallScriptsDocumentation matches: All major schema fields have corresponding Go struct fields.
Documented Fields
The frontmatter documentation at
/docs/src/content/docs/reference/frontmatter.mdcovers (in order):on:) — complete section with reactions, status-comment, stop-after, manual-approval, skip-if-match, skip-if-no-match, roles, bots, skip-roles, skip-bots, steps, permissions, github-token, github-appdescription:)source:)private:)resources:)labels:)imports: - uses: shared/apm.md)runtimes:)permissions:)on.roles:)on.bots:)on.skip-roles)on.skip-bots)strict:)features:)features.action-mode)features.byok-copilot)features.awf-diagnostic-logs)features.integrity-reactions)tools.github.integrity-proxy)engine:)network:)mcp-scripts:)safe-outputs:)run-name:,runs-on:,runs-on-slim:,timeout-minutes:)concurrency:)env:)secrets:)environment:)container:)services:)if:)checkout:)steps:)pre-agent-steps:)post-steps:)jobs:)cache:)Inconsistencies Found
Critical (potential bugs)
1. Missing Documentation:
disable-model-invocationfieldFrontmatterConfigbut no explicit mention in main WorkflowDatapkg/parser/frontmatter_includes_test.go:5shows usage2. Deprecated
inferfield handlingdisable-model-invocationinstead (type: boolean)disable-model-invocationis preferredpkg/parser/include_processor.go:line ~205 handles both3. Deprecated
dependenciesfieldimports: - uses: shared/apm.mdpkg/workflow/compiler_orchestrator_tools.go:172)4.
commandfield type mismatchCommandis[]string(multiple command names)properties.command,pkg/workflow/compiler_types.go:435(Command []string)5.
botsfield vs top-level vson.botsfieldbotsfield (array of strings) for allowing bot identifierson.bots:in documentationdata.Botswhich is populated fromon.botsin frontmatter parsingon:properties.bots, docs "Bot Filtering",pkg/workflow/compiler_types.go:4626.
check-for-updatesdefault behaviorpkg/workflow/compiler_activation_job.go:~3807.
timeout-minutesexpression handlingDocumentation Gaps
1.
observabilityfieldpkg/workflow/compiler_types.go:478(OTLPEndpoint)2.
rate-limitfieldpkg/workflow/compiler_types.go:463(RateLimit)3.
redirectfieldgithubnext/agentics/workflows/ci-doctor-v2.md@main4.
secret-maskingfieldpkg/workflow/compiler_types.go:475(SecretMasking)5.
run-install-scriptsfieldpkg/workflow/compiler_types.go:493(RunInstallScripts)6.
inlined-importsfieldpkg/workflow/compiler_types.go:483(InlinedImports)Schema Gaps
1. Schema doesn't define nested
on.*field structureproperties.botsas top-level, but actual structure is nestedon.botson:section$refto defineon:properties as a separate schema2. Schema doesn't validate
tools.*nested structuretools:field maps to complex nested tools configuration (github, bash, edit, etc.)Tools map[string]anythenParsedTools *Toolswith structured parsingadditionalProperties: truefor tools (too permissive)$defsfor tool schemas and use$refin tools property3. Missing enum validation for
runs-onandruns-on-slim4. Missing enum for
enginefieldpkg/constants/engine_constants.gohas engine list5.
on.skip-rolesandon.skip-botsnot in schemaonproperty definitionproperties.skip-rolesandproperties.skip-botsexist at top level, but docs show them ason.skip-rolesandon.skip-botson:in parseron:schema definitionWorkflow Violations
No runtime violations found in checked workflow files. The
.github/agents/files are custom agent configs (not triggered workflows), and they correctly use fields like:disable-model-invocation: true(field exists in schema)description:(field exists in schema)Example from
.github/agents/agentic-workflows.agent.md(lines 1-4):Summary Table
Recommendations
Priority 1 (Critical)
commandfield - Change schema from string to array, or update code to match single stringdisable-model-invocationandinferfields - Add clear migration guidance from deprecatedinferto newdisable-model-invocationPriority 2 (Important)
observability,rate-limit,secret-masking,run-install-scripts,inlined-imports,redirectonproperties - Nestskip-roles,skip-bots,botsunderonin schema definitionengine,runs-on,runs-on-slimPriority 3 (Nice to have)
$defsfortools.*schema - Enable proper validation of tool configurationsWarning
The following domain was blocked by the firewall during workflow execution:
proxy.golang.orgTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.
Beta Was this translation helpful? Give feedback.
All reactions