T-DN76-pr-check-schema-promote
Status: closed/done · Impact: medium · Complexity: small
Auto-generated from a /sdlc:task-work post-mortem. Review and
promote to open/ready before picking up.
plugin/scripts/run_quality_checks.py validates sdlc.yaml against
plugin/schemas/sdlc-yaml.schema.json before reading any
schema-owned key. This project’s sdlc.yaml carries a pr_check:
block (consumed by /sdlc:pr-check), but the bundled schema doesn’t
declare it and uses additionalProperties: false. The validator
rejects the file with Additional properties are not allowed ('pr_check' was unexpected), which trips every /sdlc:task-work run
at Step 4 (worktree_init) and Step 7 (quality_checks).
Promoting pr_check into the schema closes the gap once for every
consuming project, not just this repo.
plugin/schemas/sdlc-yaml.schema.jsondeclaresquality_checks,worktree_init, andorchestrator. Top-leveladditionalPropertiesisfalse.plugin/scripts/run_quality_checks.py:128-145routes any schema-owned-key request through_validate_against_schema, which shellsplugin/validators/validate_sdlc_yaml.py --quiet.- The project’s
sdlc.yamlat/Users/sksizer/Developer/dev/sdlc.yamldeclarespr_check.author_comments: actionable(consumed by/sdlc:pr-check). - The originating post-mortem flagged the symptom:
sdlc.yaml schema violation in <path>: at <root>: Additional properties are not allowed ('pr_check' was unexpected).
Proposed
Section titled “Proposed”plugin/schemas/sdlc-yaml.schema.json declares a pr_check object
property with the documented sub-keys (today: author_comments with
enum actionable / ignored). The shared validator accepts
sdlc.yaml files that declare pr_check, and run_quality_checks.py
no longer trips on it at Step 4 / Step 7.
Approach
Section titled “Approach”- Read
plugin/skills/pr-check/SKILL.mdand anyplugin/conventions/sdlc-yaml.mdtext onpr_check:to recover the canonical sub-key shape. - Add a
pr_checkproperty to the schema, mirroring theorchestratorblock’s style (object, additionalProperties false, per-sub-key descriptions). Default behavior when missing must match whatever/sdlc:pr-checkdoes today with no config. - Update
plugin/conventions/sdlc-yaml.mdif the prose doesn’t already documentpr_check:. - Verify by running
plugin/validators/validate_sdlc_yaml.py <project-root>/sdlc.yamlin this repo (which carriespr_check:) and confirming exit 0. - Run the existing
validate_sdlc_yaml.pyeval suite (if present) andplugin/skills/orchestrate/tests/run_evals.pyfor regression coverage of the orchestrator wiring.
Files to touch
Section titled “Files to touch”plugin/schemas/sdlc-yaml.schema.json— addpr_checkproperty block.plugin/conventions/sdlc-yaml.md— documentpr_check:if not already covered.plugin/validators/tests/...(maybe) — extend whatever fixtures exist for validate_sdlc_yaml to coverpr_checkaccept/reject.
Acceptance criteria
Section titled “Acceptance criteria”- AC-1:
plugin/validators/validate_sdlc_yaml.py /Users/sksizer/Developer/dev/sdlc.yamlexits 0 (and the file is left unchanged). - AC-2:
plugin/scripts/run_quality_checks.py --config /Users/sksizer/Developer/dev/sdlc.yaml --key quality_checks --lineno longer reportssdlc.yaml schema violation. - AC-3: A new schema fixture (or unit test) asserts that
pr_check.author_comments: actionableis accepted and an unknownpr_check.<bogus>:key is rejected.
Out of scope
Section titled “Out of scope”- Refactoring
/sdlc:pr-check’s own consumption of the key. - Promoting any other ad-hoc keys that may exist in downstream
projects’
sdlc.yamlfiles.
Dependencies
Section titled “Dependencies”- none
Discovery context
Section titled “Discovery context”Spawned by /sdlc:task-work post-mortem of T-6ZNY-headless-bases-syntax-parser-for-eval on 2026-05-21.