Add an optional structured `coverage:` block to SUMMARY.md frontmatter and a deterministic classifier that `verify-work` consumes to route deliverables to auto-pass vs human-UAT — replacing the rejected #1598/#1599 post-hoc heuristic. - New `src/coverage.cts` (→ bin/lib/coverage.cjs) parses the nested coverage block (extractFrontmatter can't — its `-` items are scalars-only; this is a focused parser, sibling of parseMustHavesBlock), validates each entry, and classifies into auto_passed vs present. Frozen MODE/PRESENT_REASON/ERROR_CODE typed-IR surface. Exposed via `uat classify-coverage --summary <f>`. - Auto-pass is the narrow proven case only: strict-boolean human_judgment:false AND non-empty all-`pass` verification AND zero validation errors. Everything else — judgment, empty/failing verification, malformed entry — routes to the human (fail-safe). A malformed block falls back to legacy prose extraction and surfaces an error; an absent block is byte-identical to pre-#1602. - execute-plan create_summary populates the block (fail-safe default human_judgment:true); verify-work extract_tests consumes it; create_uat_file marks auto-passed entries `source: automated`. - Templates (summary + 3 variants), CONTEXT.md predicate + glossary, INVENTORY, eslint/gitignore registration, and Diataxis docs (COMMANDS reference + USER-GUIDE explanation) updated. - Behavioral tests via the CLI (no source-grep); parser-robustness regressions for the null-entry/comment-header/mis-indent cases found in adversarial review. Closes #1602 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
46 lines
1.2 KiB
Markdown
46 lines
1.2 KiB
Markdown
---
|
|
phase: XX-name
|
|
plan: YY
|
|
subsystem: [primary category]
|
|
tags: [searchable tech]
|
|
provides:
|
|
- [bullet list of what was built/delivered]
|
|
affects: [list of phase names or keywords]
|
|
tech-stack:
|
|
added: [libraries/tools]
|
|
patterns: [architectural/code patterns]
|
|
key-files:
|
|
created: [important files created]
|
|
modified: [important files modified]
|
|
key-decisions: []
|
|
# coverage: (#1602) optional per-deliverable UAT-routing block — see templates/summary.md <coverage_guidance>.
|
|
# Add live `coverage:` entries to enable deterministic UAT routing in verify-work; OMIT for legacy
|
|
# prose-only SUMMARYs. When coverage is uncertain, default human_judgment: true — never auto-skip the human.
|
|
duration: Xmin
|
|
completed: YYYY-MM-DD
|
|
status: complete
|
|
---
|
|
|
|
# Phase [X]: [Name] Summary (Minimal)
|
|
|
|
**[Substantive one-liner describing outcome]**
|
|
|
|
## Performance
|
|
- **Duration:** [time]
|
|
- **Tasks:** [count]
|
|
- **Files modified:** [count]
|
|
|
|
## Accomplishments
|
|
- [Most important outcome]
|
|
- [Second key accomplishment]
|
|
|
|
## Task Commits
|
|
1. **Task 1: [task name]** - `hash`
|
|
2. **Task 2: [task name]** - `hash`
|
|
|
|
## Files Created/Modified
|
|
- `path/to/file.ts` - What it does
|
|
|
|
## Next Phase Readiness
|
|
[Ready for next phase]
|