[Schema Consistency] Schema Consistency Check — 2026-06-15 #39335
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by Schema Consistency Checker. A newer discussion is available at Discussion #39506. |
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.
-
🔍 Schema Consistency Check — 2026-06-15
Summary
Critical Issues
🔴 HIGH —
engine.extensionsis a triple gap (parser ↔ schema ↔ docs)The Pi engine supports an
engine.extensionsarray, but it is only implemented in the parser. It is absent from both the JSON schema and the documentation, so any workflow that uses it is rejected by strict schema validation despite being a working runtime feature.engineObj["extensions"]atpkg/workflow/engine.go:469(handles both[]anyand[]string)pkg/workflow/pi_engine.go:202to emitpi install <extension>stepsengine_confighas 6oneOfbranches (union = 28 props), alladditionalProperties: false; none declaresextensionsdocs/.../reference/engines.mdnor auto-generatedfrontmatter-full.md(only the unrelated safe-output keyallowed-extensionsappears)Impact: Because every
engine_configbranch isadditionalProperties: false, a frontmatter such aswill fail schema validation, even though the compiler would otherwise emit the install steps correctly. The feature is effectively unreachable through the validated path and invisible to users.
Evidence
pkg/workflow/engine.go:468-488— extraction ofengine.extensionspkg/workflow/pi_engine.go:175,202—pi installstep generationpkg/parser/schemas/main_workflow_schema.json:11419—engine_config$def; 6 oneOf branches, union of properties does not includeextensionsdocs/.../reference/engines.md— noextensionsmention (only "agent file" / "bare command" extension references)Suggested fix: Add
extensions(array of strings) to the relevantengine_configbranch(es) — at minimum the object branch that carriesid/providerfor the Pi engine — and document it inengines.md.Schema ↔ Parser Mismatches (low priority)
🟡 LOW —
dispatch-repository(dash) alias accepted by parser but not in schemaThe parser accepts both spellings for the safe-output key:
The schema only declares
dispatch_repository(underscore) atmain_workflow_schema.json:9120, under asafe-outputsobject withadditionalProperties: false. A workflow using the dash spelling works at compile time but fails schema validation.Suggested fix: Either add
dispatch-repositoryas a schema alias property, or drop the dash alias from the parser to keep a single canonical spelling.Schema Naming Consistency (low priority)
🟡 LOW —
dispatch_repositoryis the sole snake_case key among kebab-case safe-output siblingsAll other
safe-outputskeys use kebab-case (create-pull-request,create-issue,add-comment, ...);dispatch_repositoryis the lone snake_case key. Cosmetic, but inconsistent. Aligning todispatch-repository(and treating the underscore form as the alias) would resolve this and the item above together.Recommendations
extensionsto the Piengine_configschema branch and document it inengines.md, OR explicitly gate/remove the parser support if the feature is not intended to be public.dispatch_repository/dispatch-repositoryspelling between parser and schema — pick one canonical form and declare any alias in the schema.Strategy Performance
Next Steps
engine.extensionsto schema (engine_configbranch) andengines.mddispatch_repositoryvsdispatch-repository(parser ↔ schema)safe-outputsentry sub-objects andtools.*sub-objects (note: those parsers use struct unmarshalling rather than map-key reads, so a different probe is required)References: §27529660516
Beta Was this translation helpful? Give feedback.
All reactions