[Schema Consistency] Schema Consistency Check - 2026-03-10 #20326
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it expired on 2026-03-11T10:05:36.131Z.
|
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.
-
Overview
This analysis used Strategy 23: Tool Parameter Schema Completeness Audit — targeting the same class of bug as commit
68a7f67(Fix: max-patch-size missing from tools.repo-memory JSON schema). The strategy systematically cross-references every parameter across: frontmatter JSON schema, LLM tool definition JSON files, Go compiler struct tags, and documentation.Critical Issues (New This Run)
1.
state-reasonMissing from Frontmatter JSON SchemaThe
state-reasonfield is fully implemented in Go code and documented, but absent from the JSON schema forsafe-outputs.close-issue.close_entity_helpers.go:72)StateReason string \yaml:"state-reason,omitempty"``compiler_safe_outputs_config.go:204)AddIfNotEmpty("state_reason", c.StateReason)safe-outputs.md:218, 223)main_workflow_schema.json(safe-outputs.close-issue)frontmatter-full.md(auto-generated from schema)The schema's
close-issueobject only has:required-labels,required-title-prefix,target,max,target-repo,allowed-repos—state-reasonis not present.Impact: Schema validation will reject
state-reasonwithadditionalProperties: falseenforced. Users who follow the schema for editor validation or tooling will be told the field is invalid — even though the compiler happily accepts it. Thefrontmatter-full.mdreference doc will not show this option.Fix: Add
state-reasontosafe-outputs.close-issueschema object with enum["completed", "not_planned", "duplicate"].2.
state_reasonParameter Missing frompkg/workflow/js/safe_outputs_tools.jsonThe
close_issueLLM tool definition is inconsistent between the two runtime JSON files:state_reasonparameter?actions/setup/js/safe_outputs_tools.json(line 176)COMPLETED,NOT_PLANNED,DUPLICATE)pkg/workflow/js/safe_outputs_tools.jsonThe
actions/setupversion also has a different (shorter) description forclose_issuecompared to thepkg/workflowversion.Impact: Workflows running via the
pkg/workflowcode path will not exposestate_reasonto the LLM agent, so the agent cannot set the close reason. The agent must use an unstructured approach or the default (COMPLETED) is always used.Fix: Add
state_reasonparameter toclose_issueinpkg/workflow/js/safe_outputs_tools.jsonto matchactions/setupversion.Persistent Unresolved Issues (from previous runs)
These issues have been reported in prior runs and remain unresolved:
set_issue_typetool absent fromactions/setup/js/safe_outputs_tools.jsonbut present inpkg/workflow/js/temporary_idregex mismatch:safe-outputs-specification.md:1813uses^aw_[A-Za-z0-9]{3,8}$(max 8) butsafe_outputs_tools.json:36,271uses^aw_[A-Za-z0-9]{3,12}$(max 12)mark-pull-request-as-ready-for-reviewtool not documented insafe-outputs.md(only infrontmatter-full.md)push_repo_memoryagent tool undocumented — not inrepo-memory.md,safe-outputs.md, orsafe-outputs-specification.mdset-issue-typesafe-output not documented insafe-outputs.md(only infrontmatter-full.md)deprecated: truefields in schema never trigger deprecation warnings (schema_deprecation.goonly checks top-level)assign-to-userandunassign-from-userexamples insafe-outputs.mddon't show theblockedfieldmax-continuationsmissing fromfrontmatter.mdandengines.mdstatus-commentmissing fromfrontmatter.mdreactionfield: schema declaresdefault: eyesbut compiler only applies it forcommand/slash_commandtriggers, not for regular triggersRecommendations
Add
state-reasontomain_workflow_schema.jsonundersafe-outputs.close-issue.propertieswith enum valuescompleted,not_planned,duplicate. This is the same class of fix asmax-patch-size(commit68a7f67).Sync
pkg/workflow/js/safe_outputs_tools.jsonclose_issuetool to include thestate_reasonparameter matching theactions/setupversion (enum:COMPLETED,NOT_PLANNED,DUPLICATE).Consider a sync check test that compares
pkg/workflow/js/safe_outputs_tools.jsonwithactions/setup/js/safe_outputs_tools.jsonto prevent drift. The two files have diverged on 2 tools already.Resolve
set_issue_typesync — add the missing tool toactions/setup/js/safe_outputs_tools.json.Strategy Performance
max-patch-sizeReferences:
Beta Was this translation helpful? Give feedback.
All reactions