Skip to content

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.

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.

  1. Add a script under plugin/skills/task-ensure-ready/ (or plugin/scripts/ if it grows a second caller) that walks docs/planning/tasks/*.md, runs each disqualifier check, and reports.
  2. 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).
  3. Optionally, wire the script into sdlc.yaml quality_checks: so it runs on every task-work session — not just disqualifier extensions. Defer this decision to the implementer.
LocationKindChange
plugin/skills/task-ensure-ready/scan_task_population.pynew(new) —
plugin/skills/CLAUDE.mdmodifyor
sdlc.yamlmodifyif the dry-run becomes a per-session
  • 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.
  • Auto-fixing the matches. The script reports; resolution is per-task human work.
  • none

Spawned by /sdlc:task-work post-mortem of T-KG6Y-task-ensure-ready-flags-spec-placeholders on 2026-05-21.


← Back to Tasks