B-TBDS-gap-report-passes-untouched-spawn-stubs
Status: promoted/task
sdlc task gap-report returned has_gaps: false on an untouched /sdlc:spawn-task-pr stub whose
every required body section was _TBD — receiver to fill before promoting from planning/draft._.
Two blind spots compound: (1) scan-placeholders matches whole-word TBD, but the spawn template
italicizes it as _TBD — underscore is a word character, so \bTBD\b never matches after it;
(2) required-section presence checks headers only, and files_to_touch_kind: "prose" is not
treated as a gap, so the table-only Files-to-touch contract is unenforced at this layer. Net: a
completely empty spawn stub sails through the deterministic readiness composite, leaving only the
LLM thin-section judgment in /sdlc:task-ensure-ready between an empty spec and a readiness stamp.
Fix ideas: strip markdown emphasis before the placeholder scan (or add the spawn-stub sentence as
an explicit placeholder pattern), and treat a prose or missing Files-to-touch as a disqualifier in
gap-report itself. Observed 2026-07-04 while auto-defining T-QX1Q in markdown-contract — the
untouched stub reported gaps=0 sections=... placeholders=0 touchpoints=0 claims=0.
2026-08-01 corpus audit: pre-existing task
T-2GR5-gap-report-detects-emphasis-wrapped-placeholders already tracks both
blind spots; recorded as the tracking artifact via result (the backlog status
vocabulary has no “duplicate of an existing task” — closed/duplicate only
accepts a backlog wikilink).