Skip to content

T-C83H-leaf-parent-readiness-exemption

Status: closed/superseded · Impact: medium · Complexity: small

The implementation-ready contract now states it governs leaves — a task with children is an organizational rollup and the contract’s sections are category errors for it. Nothing in code implements that: run ensure-ready against a parent today and it fails on Files-to-touch grounds. Make the gates skip rollups.

LocationRole today
apps/sdlc/lib/model/entities/task/implementation-ready.mdCarries the “contract governs leaves” scope statement; no code reads it.
apps/sdlc/lib/model/entities/task/ops/gap-report (the deterministic composite) evaluates every task uniformly; no children check.
apps/sdlc/skills/task-ensure-ready/SKILL.mdThe gate procedure; assumes every input is a leaf.

gap-report detects a rollup (any task naming the input in parent_key, derived via the corpus loader) and returns a distinct rollup verdict instead of gaps. The ensure-ready skill surfaces it with a slug-namespaced ENSURE-READY-ROLLUP: marker and exits without mutating the file — no stamp, no downshift.

  1. Add a children lookup (corpus scan on parent_key) to gap-report; emit a rollup: true field and suppress leaf-contract gap evaluation.
  2. Branch on it in the ensure-ready skill: report, exit, mutate nothing.
  3. Tests: parent with one child skips; the same task with the child closed still skips (rollup-ness is structural, not status-dependent); a leaf is unaffected.
LocationKindChange
apps/sdlc/lib/model/entities/task/ops/modifyChildren check + rollup verdict in the gap-report composite.
apps/sdlc/skills/task-ensure-ready/SKILL.mdmodifyRollup branch + marker.
  • AC-1: ensure-ready against a task with children exits with the rollup marker and leaves frontmatter untouched.
  • AC-2: gap-report --output json carries the rollup verdict distinctly from has_gaps.
  • AC-3: Leaf behavior is unchanged.
  • none
  • Follow-up to the implementation-ready scope amendment (PR #1123).

← Back to Tasks