* fix(#950): emit status: complete in quick-task SUMMARY frontmatter
Add `status: complete` to all four SUMMARY templates (summary.md,
summary-minimal.md, summary-standard.md, summary-complex.md), to the
executor agent's documented frontmatter field list, and to the quick.md
executor constraints block. The audit-open milestone-close scanner
(scanQuickTasks) reads this field to decide whether a quick task is done;
without it the scanner falls back to `[unknown]` and false-flags finished
tasks as open. Writer-side fix; the scanner is correct and unchanged.
Blast-radius: no other scanner reads `status:` from phase-plan SUMMARY
files. Phase disk_status is derived from file-count heuristics only.
Adding the field to the shared template is therefore safe and the value
`complete` is semantically accurate for a finished plan.
Regression test: tests/bug-950-quick-summary-status-complete.test.cjs
- RED: 4 template-contract tests fail before fix, behavioral tests pass
- GREEN: all 8 tests pass after fix
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore: add changeset for fix/950-quick-summary-status-complete (#951)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* test(#950): assert writer-path contract + scope template checks to YAML frontmatter (adversarial review)
- Add `// allow-test-rule: source-text-is-the-product` at file top (before block comment)
- Add `extractFrontmatter()` helper that handles both leading-frontmatter files
(summary-minimal/standard/complex.md) and fenced-frontmatter files (summary.md,
whose frontmatter is embedded inside a ```markdown fence) — assertions now
target the actual YAML block, not the whole file
- Scope all four [TEMPLATE CONTRACT] tests through extractFrontmatter() so a stray
`status: complete` in prose/examples cannot produce a false green; error messages
now print the extracted block to aid diagnosis
- Add [WRITER-PATH] quick.md test: asserts the <constraints> block instructs the
executor to write `status: complete` in SUMMARY frontmatter
- Add [WRITER-PATH] gsd-executor.md test: asserts the Frontmatter spec documents
`status: complete` as a required field
- Sanity-checked: guards fail when `status: complete` is removed from a template
or from quick.md, and pass once restored
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>