T-VKFS-ensure-ready-disqualifier-population-dryrun
Status: closed/superseded · Impact: low · Complexity: small
Auto-generated from a /sdlc:task-work post-mortem. Review and
promote to open/ready before picking up.
When a new disqualifier rule is added to /sdlc:task-ensure-ready,
the implementer should be required to dry-run the rule against every
task under docs/planning/tasks/ and review the matches before
committing. This catches false-positive shapes (escape hatches the
rule didn’t account for) and surfaces real placeholder debt in
existing tasks. Cited by
T-KG6Y-task-ensure-ready-flags-spec-placeholders.
The contract at plugin/entities/task/implementation-ready.md lists
disqualifiers; the skill at plugin/skills/task-ensure-ready/SKILL.md
runs them. There is no checklist or automated step that says
“after adding a new disqualifier, scan the full task population and
review the hits.” During the placeholder-scanner implementation, two
real false-positive shapes (multi-line backtick spans, post-mortem
subject-matter mentions) surfaced only because the implementer
manually ran the scanner over docs/planning/tasks/*.md — neither
was listed as an explicit step in the originating task’s Approach.
Proposed
Section titled “Proposed”A small executable check that an ensure-ready disqualifier extender
invokes against the live task population. It runs every disqualifier
(or just the new one, via a --rule flag) against every task file,
prints the matches grouped by task, and exits non-zero if matches
were found in tasks whose status is open/ready or earlier. The
exit code forces the implementer to either tighten the rule or
update the existing specs before merging.
The check becomes a quality-gate-grade step that the ensure-ready test harness wires up.
Approach
Section titled “Approach”- Add a script under
plugin/skills/task-ensure-ready/(orplugin/scripts/if it grows a second caller) that walksdocs/planning/tasks/*.md, runs each disqualifier check, and reports. - Document the dry-run as an explicit step in the skill-authoring
convention at
plugin/skills/CLAUDE.md(the “extending an ensure-ready disqualifier” section, which may need to be created). - Optionally, wire the script into
sdlc.yamlquality_checks:so it runs on every task-work session — not just disqualifier extensions. Defer this decision to the implementer.
Files to touch
Section titled “Files to touch”| Location | Kind | Change |
|---|---|---|
plugin/skills/task-ensure-ready/scan_task_population.py | new | (new) — |
plugin/skills/CLAUDE.md | modify | or |
sdlc.yaml | modify | if the dry-run becomes a per-session |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: Running the new script against the current
docs/planning/tasks/reports matches for the same tasks the ad-hoc loop surfaced during the placeholder-scanner implementation (2026-05-21-spawn-from-post-mortem-stronger-dedup,2026-05-20-post-mortem-routes-cross-repo-tasks, etc.). - AC-2: The convention doc (or skill prose) states explicitly that extending an ensure-ready disqualifier requires running the script and reviewing the output before merging.
- AC-3: The script exits non-zero when any
open/ready(or earlier) task in the population matches a disqualifier.
Out of scope
Section titled “Out of scope”- Auto-fixing the matches. The script reports; resolution is per-task human work.
Dependencies
Section titled “Dependencies”- none
Discovery context
Section titled “Discovery context”Spawned by /sdlc:task-work post-mortem of T-KG6Y-task-ensure-ready-flags-spec-placeholders on 2026-05-21.