Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD across contents and paths, upstream package/repo coordinates -> @golem15/msd-core and golem15com/msd-core. Deep links into upstream history, sibling upstream packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is. Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line, package/plugin identity, regenerated lockfile, install-tree fixtures, derived registries and benchmark baseline; migration checksum baseline re-locked (MSD keeps its own install state, so no install had applied the old sums); sort-order and regex-escaped expectations in tests adjusted.
25 lines
1.4 KiB
Markdown
25 lines
1.4 KiB
Markdown
---
|
|
id: 4273
|
|
title: TDD-Applicability Predicate
|
|
group: Quality Assurance Features
|
|
---
|
|
|
|
**Purpose:** Give the workflow engine one code-owned computation for whether TDD's RED/GREEN/REFACTOR
|
|
procedure applies to a given plan, instead of restating the same precedence logic as hand-written prose in
|
|
each dispatch backend — a restatement that had already drifted between two backends (#4264, #4265). This
|
|
is Phase 1 of epic #4272 (ADR-3473's fourth application of the single-owner-predicate pattern): it ships
|
|
the isolated `phase.tdd-applicable` query verb only. Wiring `execute-phase.md` and its
|
|
executor-isolation-dispatch step to consume the verb instead of their own inline predicates is a later
|
|
phase of the same epic.
|
|
|
|
**Command:** `msd-tools query phase.tdd-applicable <plan-file> [--cli-flag]`
|
|
|
|
**Requirements:**
|
|
- REQ-TDDA-01: System MUST resolve applicability via a fixed precedence: `--cli-flag` (explicit override) >
|
|
plan frontmatter `type: tdd` > any task in the plan carrying `tdd="true"` > project config
|
|
`workflow.tdd_mode`
|
|
- REQ-TDDA-02: System MUST report which precedence tier decided the outcome (`cli_flag`, `plan_frontmatter`,
|
|
`task_attribute`, `config`, or `none`) alongside the boolean result
|
|
- REQ-TDDA-03: System MUST emit JSON (`applicable`, `source`, `plan_type`, `config_tdd_mode`,
|
|
`cli_flag_present`) so callers can consume the decision without re-deriving it
|