[Schema Consistency] Schema Consistency Audit Report #28663
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by Schema Consistency Checker. A newer discussion is available at Discussion #28849. |
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.
-
Comprehensive Schema Consistency Analysis
This audit examines all four critical areas: schema structure, parser key handling, documentation fields, and workflow file usage.
Area 1: Schema Structure
Source:
/home/runner/work/gh-aw/gh-aw/pkg/parser/schemas/main_workflow_schema.jsonTop-Level Properties Summary (53 fields total)
REQUIRED FIELDS (1):
on- object - Workflow triggers (MUST be present)METADATA & TRACKING FIELDS (6):
name- string, 1-256 chars - Workflow display namedescription- string - Workflow description rendered in lock filesource- string - Origin tracking (format: owner/repo/path@ref)redirect- string - Update location redirecttracker-id- string, 8-128 chars, pattern:^[a-zA-Z0-9_-]+$- Asset tagging identifierlabels- array of strings - Workflow categorizationCONFIGURATION & CONTROL FIELDS (12):
permissions- object - GitHub token read permissionsengine- string|object - AI engine config (default: 'copilot')strict- boolean|object - Strict mode validationtimeout-minutes- number|string - Job timeout durationconcurrency- string|object - Concurrency controlenvironment- object|string - Protected environment referenceif- string - Conditional execution expressionrun-name- string - Custom run name with expression supportprivate- boolean - Private workflow markercheck-for-updates- boolean - Version update check controlrate-limit- object - Rate limiting configurationfeatures- object - Feature flags and experimental featuresCUSTOM METADATA (2):
metadata- object with key (1-64 chars) / value (max 1024 chars) pairsimport-schema- object - Schema for import-time validationIMPORTS & RESOURCES (3):
imports- oneOf [array, object] - Workflow import specificationsresources- array - Additional files to fetch on 'gh aw add'inlined-imports- boolean - Inline imports at compile timeRUNNER & EXECUTION (4):
runs-on- string|array|object - GitHub runner configurationruns-on-slim- string - Framework job runner (default: 'ubuntu-slim')jobs- object - Job definitionssteps- object|array - Custom workflow stepsGITHUB ACTIONS INTEGRATION (5):
env- object - Environment variablescontainer- object - Container specificationsservices- object - Service containerscheckout- object|array|boolean - Checkout configurationcommand- string - Command name for triggersSECURITY & SANDBOX (4):
network- object - Network access control (ecosystems + domain allowlists)sandbox- object - Sandbox configuration for AI enginessecret-masking- object - Secret redaction behaviorgithub-app- object - GitHub App token configurationAI & RUNTIME CONFIGURATION (8):
tools- object - Tools and MCP server definitionsmcp-servers- object - MCP server definitionsmcp-scripts- object - MCP Scripts tool definitionsruntimes- object - Runtime version overridesrun-install-scripts- boolean - Allow npm install scripts globallydisable-model-invocation- boolean - Disable model callsinfer- boolean - DEPRECATED (replaced by disable-model-invocation)dependencies- array|object - APM package referencesOBSERVABILITY & SAFE OUTPUTS (2):
safe-outputs- object - Safe output processing configurationobservability- object - Observability output settingsMISCELLANEOUS (3):
bots- array of strings - Bot allowlistsecrets- object - Secret values (string or {value, description})pre-steps- object - Pre-initialization stepspre-agent-steps- object - Pre-AI execution stepspost-steps- object - Post-AI execution stepscache- object - Cache configurationArea 2: Parser/Compiler Key Handling
Analysis of frontmatter key accesses across 32 non-test Go files
Frontmatter Keys Directly Accessed (30 keys):
on- 57 accesses (highest frequency) - Trigger configurationimports- 5 accesses - Import specificationsif- 5 accesses - Conditional executionsafe-outputs- 4 accesses - Output configurationengine- 3 accesses - AI engine selectionconcurrency- 3 accesses - Concurrency controlpermissions- 2 accesses - Token permissionsname- 2 accesses - Workflow namefeatures- 2 accesses - Feature flagstracker-id- 1 access - Tracking identifiertools- 1 access - Tool configurationstrict- 1 access - Strict modesteps- 1 access - Custom stepssource- 1 access - Source metadatasecret-masking- 1 access - Secret redactionsandbox- 1 access - Sandbox configruns-on-slim- 1 access - Framework runnerruns-on- 1 access - Main runnerrun-install-scripts- 1 access - Install script controlredirect- 1 access - Redirect metadatarate-limit- 1 access - Rate limitingobservability- 1 access - Observability confignetwork- 1 access - Network controlmcp-servers- 1 access - MCP serversmcp-scripts- 1 access - MCP scriptsgithub-app- 1 access - GitHub App configdescription- 1 access - Workflow descriptioncheck-for-updates- 1 access - Update checkFiles with Highest Key Access Density:
compiler_orchestrator_workflow.go- safe-outputs accesscompiler_pre_activation_job.go- on, rate-limitschedule_preprocessing.go- on, if (preprocessing logic)role_checks.go- on, rate-limit (permission validation)frontmatter_extraction_yaml.go- on, permissions, if (main extraction)Key Pattern Analysis:
High-Impact Keys (>5 accesses):
on- Deeply integrated into activation, pre-activation, filtering, schedulingModerate Access (2-5):
imports,if,safe-outputs,engine,concurrency- Core workflow featuresLow Access (1):
Notable Observations:
description,metadata,labels,resources,inlined-imports,private,checkout,dependencies,import-schema,pre-steps,pre-agent-steps,post-steps,container,services,env,secrets,environment(these are handled by higher-level parsing)Area 3: Documentation Fields
Sources:
/home/runner/work/gh-aw/gh-aw/docs/src/content/docs/reference/frontmatter.md(main)/home/runner/work/gh-aw/gh-aw/docs/src/content/docs/reference/frontmatter-full.md(comprehensive)Documented Frontmatter Fields (47+ fields):
Core Workflow Definition:
on:)description:)name:- implicit in examples)labels:)Configuration & Control:
permissions:)engine:)strict:)features:)rate-limit:)check-for-updates:)Execution Environment:
runtimes:)runs-on:,runs-on-slim:)timeout-minutes:)concurrency:)Security & Access Control:
on.roles:)on.bots:)on.skip-roles)on.skip-bots)network:)sandbox:)secret-masking:)github-app:)Tools & Integrations:
tools:)mcp-servers:)mcp-scripts:)Advanced Features:
safe-outputs:)imports:,inlined-imports:)imports:)observability:)cache:)pre-steps:,pre-agent-steps:,post-steps:)Trigger-Specific Features:
on.status-comment:)on.reaction:)on.stop-after:)on.manual-approval:)on.skip-if-match:,on.skip-if-no-match:)on.steps:,on.permissions:,on.needs:,on.github-token:,on.github-app:)Documentation Completeness Check:
Fields in schema BUT not prominently documented as standalone sections:
run-install-scripts- Mentioned in context, not a main sectiondisable-model-invocation/infer- Not detailed, only mentioned as deprecatedimport-schema- Mentioned in passingcheckout- Not prominently featureddependencies- Deprecated (replaced by imports)command- Not documented as separate sectionenvironment- Standard GitHub Actions fieldcontainer/services- Standard GitHub Actions fieldssecrets- Standard GitHub Actions fieldenv- Standard GitHub Actions fieldjobs- Standard GitHub Actions fieldCoverage: ~40 of 53 schema fields are prominently documented
Gap: Some standard GitHub Actions fields and specialized options not fully detailed
Area 4: Workflow File Usage (Sample Analysis)
Sampled 10 workflow files from 275+ available
Frontmatter Keys Found in Real Workflows:
All 10 workflows use:
on- Trigger configuration (100%)name- Workflow identifier (80%)description- Workflow description (100%)engine- AI engine selection (90%)permissions- Token permissions (100%)timeout-minutes- Execution timeout (100%)strict- Strict mode enabled (100%)Common in 6-9 workflows:
tools- Tool/MCP configuration (80%)imports- Workflow imports (70%)safe-outputs- Output configuration (70%)In 3-5 workflows:
features- Feature flags (40%)network- Network restrictions (40%)sandbox- Sandbox config (20%)tracker-id- Asset tracking (30%)runtimes- Runtime customization (10%)steps- Custom steps (10%)runs-on- Runner selection (10%)Rarely used (1-2):
if- Conditional execution (10%)post-steps,pre-steps- Step customizationcache-memory- In-memory cachingNever observed in sample:
private,redirect,resources,checkout,dependencies,environment,container,services,secrets,env,jobs- Typically handled at lower levels or not used in this codebaseTypical Workflow Pattern:
Key Findings & Consistency Analysis
CONSISTENCY CHECKS:
✓ PASS: All 30 frontmatter keys accessed in code are defined in schema
✓ PASS: All 47 documented fields exist in schema
✓ PASS: Required field (
on) is correctly enforced✓ PASS: Type information matches between schema and code
✓ PASS: Workflow files use documented fields correctly
OBSERVATIONS:
Field Access Patterns:
onis deeply integrated (57 accesses) across multiple systemsDocumentation Gaps:
infer,disable-model-invocationnot fully documentedimport-schemadocumented minimallyReal-World Usage:
Type Safety:
POTENTIAL INCONSISTENCIES FLAGGED:
disable-model-invocationexists in schema but deprecated fieldinferstill accepted (backward compatibility intentional)Summary Statistics
on)Recommendations
inferfieldOverall Assessment: Schema is CONSISTENT across all four areas with excellent alignment between definition, implementation, and real-world usage.
Beta Was this translation helpful? Give feedback.
All reactions