[Schema Consistency] π Schema Consistency Check β 2026-06-17 #39745
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by Schema Consistency Checker. A newer discussion is available at Discussion #40011. |
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
tools.*sub-object struct-vs-schema diff (NEW)This run took a fresh angle (every
tools.*sub-object withadditionalProperties:false) and re-verified all standing findings from cache.Critical Issues
1.
engine.extensionsβ triple gap (parser β / schema β / docs β) β HIGHThe parser reads and acts on
engine.extensions:But
extensionsis absent from everyengine_configschema branch. A full diff of allengineObj[...]key-reads against the union of schema engine-config properties showsextensionsis the only key the parser reads that the schema does not declare:agent, api-target, args, auth, bare, command, concurrency, config, copilot-sdk, copilot-sdk-driver, env, extensions, harness, id, max-continuations, max-turns, mcp, model, permission-mode, provider, runtime, token-weights, user-agent, versionextensions(plus structural-onlydescription, display-name, models, options, runtime-id).Because the engine-config branches are
additionalProperties:false, strict schema validation rejects a workflow that setsengine.extensions, even though it is a working feature. It is also undocumented indocs/src/content/docs/reference/.Fix: add an
extensionsproperty (arrayofstring) to the engine-config object branch(es) inpkg/parser/schemas/main_workflow_schema.json, and document it (Pi-engine usage).Schema Improvements Needed
2.
dispatch-repository(dash) alias not in schema β LOWThe parser explicitly accepts both spellings:
The schema declares only
dispatch_repository(underscore). UnderadditionalProperties:falseonsafe-outputs, the documented dash alias is schema-rejected. Fix: either adddispatch-repositoryto the schema or drop the alias from the parser.3.
dispatch_repositorynaming inconsistency β LOW (cosmetic)dispatch_repositoryis the solesnake_casekey among otherwisekebab-casesafe-output siblings (e.g.create-issue,create-pull-request,create-discussion). Cosmetic only; the dash alias above is the practical mitigation.Resolved Since Last Run β
Two standing findings from the strategy cache are now fixed in the schema β re-verified this run:
normalize-closing-keywordsβ now declared in the schema forcreate-issue,add-comment, andcreate-pull-request(exactly the three handlers that emit it:safe_outputs_handler_registry.go:29,49,472). Previously absent β rejected underadditionalProperties:false. βcreate-discussion.required-categoryβ now a direct property of thecreate-discussionschema branch (it was previously only underclose-discussion). Read bycreate_discussion.go:25and used for close-older matching. βInvestigated & Clean (this run's new approach)
tools.* sub-object struct-vs-schema diff β no gaps found
Checked every
tools.*object withadditionalProperties:false:tools.githubβ all parser-read keys (type, mode, github-token, lockdown, toolsets, allowed, allowed-repos, repos, min-integrity, version, github-app, ...) are declared in the schema.tools.repo-memoryβ parser accepts array notation where each entry has anid(repo_memory.go:48,171). The schema'srepo-memoryoneOfdoes include anarraybranch alongsideboolean/null/object, so this is correctly covered (initial extraction that only read object.propertiesproduced a false lead β branch types must be enumerated).tools.comment-memory,tools.cache-memory,tools.playwrightβ property sets align with parser usage.No inconsistencies in this category.
safe-outputs github-app per-type coverage β asymmetric but low-confidence, not reported
github-appandgithub-tokenare bothBaseSafeOutputConfigfields inlined onto every safe-output type struct. In the schema,github-tokenis declared on 41 of 55 type branches butgithub-appon only 1 (create-check-run). However,github-appis consumed at the top-levelSafeOutputsconfig (compiler_safe_outputs_job.go:427), not per-type, so the per-type asymmetry is likely not a real functional gap. Flagged for a future confidence check rather than reported as a bug.Recommendations
extensions: { type: array, items: { type: string } }to the engine-config object branch inmain_workflow_schema.jsonand document it under the engines reference.dispatch-repository(dash) to the safe-outputs schema, or remove the dash alias fromdispatch_repository.goso parser and schema agree on one spelling.dispatch_repositorysnake_case as a known naming exception (or migrate todispatch-repositoryas the canonical key once the alias is in schema).Strategy Performance
tools.*struct-vs-schema diff) β NEWNext Steps
engine.extensionsto schema + docs (HIGH)dispatch-repository/dispatch_repositoryspelling between parser and schema (LOW)github-appper-type consumption confidenceBeta Was this translation helpful? Give feedback.
All reactions