Objective
Eliminate the engine field duplication risk by changing the included schema to use $ref instead of an inline definition.
Context
Priority: CRITICAL
Category: Schema Structure / Maintenance Burden
Currently:
- Main Schema: Uses
$ref: "#/$defs/engine_config" (centralized definition)
- Included Schema: Uses inline definition with identical oneOf structure
This creates a maintenance burden where every engine schema change must be manually duplicated across two files, with risk of schema drift.
Approach
- Open
pkg/parser/schemas/included_file_schema.json
- Locate the
engine field definition (currently inline with oneOf structure)
- Replace the inline definition with:
"$ref": "#/$defs/engine_config"
- Ensure the
$defs/engine_config definition exists in the included schema (if not, copy from main schema)
- Rebuild the binary with
make build (schemas are embedded via //go:embed)
- Test with a workflow that uses included files with engine configurations
Files to Modify
- Update:
pkg/parser/schemas/included_file_schema.json
- Change engine field from inline to
$ref
- Ensure
$defs/engine_config is present
Acceptance Criteria
Testing
# Rebuild binary after schema changes
make build
# Test compilation with included file
./gh-aw compile test-workflow-with-includes.md
AI generated by Planning Assistant
Related to #7944
AI generated by Plan Command for discussion #7935
Objective
Eliminate the engine field duplication risk by changing the included schema to use
$refinstead of an inline definition.Context
Priority: CRITICAL
Category: Schema Structure / Maintenance Burden
Currently:
$ref: "#/$defs/engine_config"(centralized definition)This creates a maintenance burden where every engine schema change must be manually duplicated across two files, with risk of schema drift.
Approach
pkg/parser/schemas/included_file_schema.jsonenginefield definition (currently inline with oneOf structure)"$ref": "#/$defs/engine_config"$defs/engine_configdefinition exists in the included schema (if not, copy from main schema)make build(schemas are embedded via//go:embed)Files to Modify
pkg/parser/schemas/included_file_schema.json$ref$defs/engine_configis presentAcceptance Criteria
$ref: "#/$defs/engine_config"for engine fieldmake buildTesting