You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Strategy Used: NEW β BaseSafeOutputConfig field coverage diff (strategy-27)
New Strategy: YES (day-of-year mod 10 = 7 β "try a new approach")
This run introduced a new probe: the BaseSafeOutputConfig and per-type config structs are inlined onto every safe-output type via yaml:",inline". Diffing each struct's yaml-tagged fields against that type's schema oneOf object branch (all additionalProperties: false) surfaces fields the compiler consumes but the schema rejects under strict validation.
Critical Issues
1. normalize-closing-keywords is absent from the entire JSON schema (HIGH β new)
normalize-closing-keywords is a BaseSafeOutputConfig field, so it is inlined onto every safe-output type. It is actively consumed by the compiler and documented as a user-facing feature, but it appears 0 times in main_workflow_schema.json. Because every safe-output object branch is additionalProperties: false, any workflow that sets it fails schema validation despite being a fully working, documented feature.
Consumed by handlers: pkg/workflow/safe_outputs_handler_registry.go:29 (create_issue), :49 (add_comment), :472 (create_pull_request) β each emits normalize_closing_keywords
Documented: docs/src/content/docs/experimental/safe-outputs-samples.md:102 lists it alongside max:, github-token:, github-app: as a standard safe-output feature
Net effect: a documented + implemented field is rejected by schema validation for create-issue, add-comment, and create-pull-request.
Fix: Add normalize-closing-keywords (boolean) to the schema object branches of create-issue, add-comment, and create-pull-request (or wherever the base config is meant to apply).
2. engine.extensions triple gap (HIGH β re-confirmed, still OPEN)
Re-confirmed from prior runs and still unresolved.
Evidence
Parser reads it: pkg/workflow/engine.go:469 (engineObj["extensions"]), consumed into config.Extensions (Pi engine)
Schema: extensions is absent from all engine/engine_configoneOf branches (all additionalProperties: false) β rejected under strict validation
Docs: not present in docs/src/content/docs/reference/engines.md
Fix: Add extensions (array of strings) to the engine config schema branches and document it in engines.md.
CreateDiscussionsConfig reads required-category and the compiler emits it, but the schema only declares required-category under close-discussion, not create-discussion.
Used: pkg/workflow/create_discussion.go:99 (close-older matching), emitted at pkg/workflow/safe_outputs_handler_registry.go:86 as required_category
Schema: safe-outputs.create-discussion is oneOf:[object(additionalProperties:false), null]; the object branch has norequired-category. The key exists in schema only under close-discussion (line ~5808).
Docs: frontmatter-full.md:4013 documents required-category only under close-discussion.
Fix: Either add required-category to the create-discussion schema branch (it is meaningfully used when close-older-discussions is set) or remove it from CreateDiscussionsConfig if unintended.
Lower-confidence / secondary
github-app partial schema coverage: github-app is a BaseSafeOutputConfig field (applies to all 73 safe-output types) but is declared in only 3 schema type branches (create-pull-request, create-check-run, push-to-pull-request-branch). May be intentional; flagged for review, not asserted as a defect.
Still-open low-priority (carried from prior runs)
dispatch-repository dash alias accepted by parser but only dispatch_repository (underscore) is in schema (strategy-24).
dispatch_repository is the sole snake_case key among kebab-case safe-output siblings (strategy-19).
Recommendations
Add normalize-closing-keywords to the schema branches of create-issue, add-comment, create-pull-request (highest impact: documented feature currently un-schemable).
Add engine.extensions to engine config schema branches + document in engines.md.
Add required-category to the create-discussion schema branch (or remove from the Go struct).
Decide whether github-app should be uniformly declared across safe-output schema branches or restricted; document the intent.
Strategy Performance
Strategy Used: BaseSafeOutputConfig field coverage diff (new, strategy-27)
Findings: 2 new (1 high, 1 medium) + 1 re-confirmed high
Effectiveness: HIGH
Should Reuse: YES β extend the struct-vs-schema-branch diff to all remaining safe-output types and to tools.* sub-objects next run.
Next Steps
Add normalize-closing-keywords to relevant safe-output schema branches
Add engine.extensions to schema + engines.md
Reconcile create-discussion.required-category (schema or struct)
Review github-app coverage consistency across safe-output types
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
This run introduced a new probe: the
BaseSafeOutputConfigand per-type config structs are inlined onto every safe-output type viayaml:",inline". Diffing each struct's yaml-tagged fields against that type's schemaoneOfobject branch (alladditionalProperties: false) surfaces fields the compiler consumes but the schema rejects under strict validation.Critical Issues
1.
normalize-closing-keywordsis absent from the entire JSON schema (HIGH β new)normalize-closing-keywordsis aBaseSafeOutputConfigfield, so it is inlined onto every safe-output type. It is actively consumed by the compiler and documented as a user-facing feature, but it appears 0 times inmain_workflow_schema.json. Because every safe-output object branch isadditionalProperties: false, any workflow that sets it fails schema validation despite being a fully working, documented feature.Evidence
pkg/workflow/compiler_types.go:640βNormalizeClosingKeywords *bool \yaml:"normalize-closing-keywords,omitempty"``pkg/workflow/safe_outputs_handler_registry.go:29(create_issue),:49(add_comment),:472(create_pull_request) β each emitsnormalize_closing_keywordsdocs/src/content/docs/experimental/safe-outputs-samples.md:102lists it alongsidemax:,github-token:,github-app:as a standard safe-output featuregrep -c "normalize-closing-keywords" main_workflow_schema.jsonβ0Net effect: a documented + implemented field is rejected by schema validation for
create-issue,add-comment, andcreate-pull-request.Fix: Add
normalize-closing-keywords(boolean) to the schema object branches ofcreate-issue,add-comment, andcreate-pull-request(or wherever the base config is meant to apply).2.
engine.extensionstriple gap (HIGH β re-confirmed, still OPEN)Re-confirmed from prior runs and still unresolved.
Evidence
pkg/workflow/engine.go:469(engineObj["extensions"]), consumed intoconfig.Extensions(Pi engine)extensionsis absent from allengine/engine_configoneOfbranches (alladditionalProperties: false) β rejected under strict validationdocs/src/content/docs/reference/engines.mdFix: Add
extensions(array of strings) to the engine config schema branches and document it inengines.md.Schema vs Parser Mismatches
3.
create-discussion.required-categoryschema-rejected (MEDIUM β new)CreateDiscussionsConfigreadsrequired-categoryand the compiler emits it, but the schema only declaresrequired-categoryunderclose-discussion, notcreate-discussion.Evidence
pkg/workflow/create_discussion.go:25βRequiredCategory string \yaml:"required-category,omitempty"``pkg/workflow/create_discussion.go:99(close-older matching), emitted atpkg/workflow/safe_outputs_handler_registry.go:86asrequired_categorysafe-outputs.create-discussionisoneOf:[object(additionalProperties:false), null]; the object branch has norequired-category. The key exists in schema only underclose-discussion(line ~5808).frontmatter-full.md:4013documentsrequired-categoryonly underclose-discussion.Fix: Either add
required-categoryto thecreate-discussionschema branch (it is meaningfully used whenclose-older-discussionsis set) or remove it fromCreateDiscussionsConfigif unintended.Lower-confidence / secondary
github-apppartial schema coverage:github-appis aBaseSafeOutputConfigfield (applies to all 73 safe-output types) but is declared in only 3 schema type branches (create-pull-request,create-check-run,push-to-pull-request-branch). May be intentional; flagged for review, not asserted as a defect.Still-open low-priority (carried from prior runs)
dispatch-repositorydash alias accepted by parser but onlydispatch_repository(underscore) is in schema (strategy-24).dispatch_repositoryis the sole snake_case key among kebab-case safe-output siblings (strategy-19).Recommendations
normalize-closing-keywordsto the schema branches ofcreate-issue,add-comment,create-pull-request(highest impact: documented feature currently un-schemable).engine.extensionsto engine config schema branches + document inengines.md.required-categoryto thecreate-discussionschema branch (or remove from the Go struct).github-appshould be uniformly declared across safe-output schema branches or restricted; document the intent.Strategy Performance
tools.*sub-objects next run.Next Steps
normalize-closing-keywordsto relevant safe-output schema branchesengine.extensionsto schema + engines.mdcreate-discussion.required-category(schema or struct)github-appcoverage consistency across safe-output typesReferences: Β§27600402542
Beta Was this translation helpful? Give feedback.
All reactions