Files
msd-core/docs/features/uat-passed-predicate.md
Jakub Zych a9a7a328e6 refactor: hard-fork GSD -> MSD (Make Software Done)
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.
2026-10-06 01:47:40 +02:00

2.7 KiB

id, title, group
id title group
143 UAT-Passed Predicate v1.42.1 Features

CLI: node msd-tools.cjs phase uat-passed <N> [--require-verification]

Purpose: Provide a runtime-neutral, automatable predicate that evaluates HUMAN-UAT results for a phase and returns a structured pass/fail verdict with full diagnostic detail.

Behavior: Locates *-UAT.md and optionally *-VERIFICATION.md files for the given phase, parses UAT test blocks (heading-block parser, column-0 result lines) with a markdown-aware stripper that removes false-positive contexts (YAML frontmatter, fenced code blocks, HTML comments, and blockquotes). Returns passed: true only when at least one check exists AND all checks pass AND no blockers — fail-closed, no vacuous pass. The --require-verification flag requires at least one *-VERIFICATION.md with an allowlisted passing status; the command fails without one.

Output envelope: { passed, uat_files[], verification_files[], checks[], blockers[], no_uat_artifacts, policy: { require_verification } }

Field Type Description
passed boolean true only when ≥1 check exists AND all passing AND no blockers
uat_files string[] Filenames of *-UAT.md files evaluated
verification_files string[] Filenames of *-VERIFICATION.md files evaluated
checks[] { file, test, name, result, passing }[] Per-item results from heading blocks
blockers[] string[] Human-readable failure reasons (frontmatter, failing/missing items, policy, malformed markdown)
no_uat_artifacts boolean true when no test items were parsed; passed is always false when true
policy.require_verification boolean Whether --require-verification was active

Requirements:

  • REQ-UAT-PRED-01: The predicate MUST ignore result lines inside YAML frontmatter, fenced code blocks, HTML comments, and blockquotes.
  • REQ-UAT-PRED-02: passed: true MUST require at least one check AND all checks passing AND no blockers (fail-closed, no vacuous pass).
  • REQ-UAT-PRED-03: --require-verification MUST cause the command to fail when no *-VERIFICATION.md file with an allowlisted passing status is found.
  • REQ-UAT-PRED-04: blockers[] contains all human-readable failure reasons including frontmatter issues, policy violations, and malformed markdown — NOT limited to a subset of checks[].
  • REQ-UAT-PRED-05: The module MUST be runtime-neutral (no runtime-specific env checks or exit shortcuts).
  • REQ-UAT-PRED-06: A heading block with no column-0 result: line emits result:'missing' (blocker); test items are never silently dropped.

Reference: Phase Management Commands