feat(ultraplan-local): teach ultraplan-local to consume type:ultrareview
This commit is contained in:
parent
b4e58e3fc2
commit
7dc643ec52
2 changed files with 56 additions and 0 deletions
|
|
@ -168,6 +168,46 @@ Project: {project_dir or "-"}
|
||||||
Research: {N local briefs, M extra via --research}
|
Research: {N local briefs, M extra via --research}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### When the input is type:ultrareview (Handover 6)
|
||||||
|
|
||||||
|
The brief input may be a `review.md` produced by `/ultrareview-local`
|
||||||
|
instead of a `brief.md` produced by `/ultrabrief-local`. Both files
|
||||||
|
share the same handover slot — `type` is the discriminator.
|
||||||
|
|
||||||
|
If `fm.type === 'ultrareview'`:
|
||||||
|
|
||||||
|
1. Skip the `research_status` gate above (review.md has no
|
||||||
|
`research_topics` and no Research Plan section).
|
||||||
|
2. Extract the `findings` array from the frontmatter — this is the
|
||||||
|
list of 40-char hex finding-IDs the review surfaced.
|
||||||
|
3. Read the body's last fenced ```json``` block to recover the full
|
||||||
|
finding objects (the frontmatter only has IDs; the JSON has the
|
||||||
|
`severity`, `file`, `line`, `rule_key`, `title`, `detail`,
|
||||||
|
`recommended_action` payload).
|
||||||
|
4. Filter findings to severity ∈ `{BLOCKER, MAJOR}`. MINOR and
|
||||||
|
SUGGESTION are skipped for v1.0 plan-input — they are advisory
|
||||||
|
only and would inflate the plan with low-priority churn.
|
||||||
|
5. Treat each remaining finding as a plan goal:
|
||||||
|
- `recommended_action` → step intent
|
||||||
|
- `file` → primary `Files:` target
|
||||||
|
- `id` → goes into the plan's `source_findings:` frontmatter list
|
||||||
|
6. When writing `plan.md`, populate the frontmatter field
|
||||||
|
`source_findings: [<id1>, <id2>, ...]` containing exactly the IDs
|
||||||
|
of the BLOCKER + MAJOR findings consumed. The list provides the
|
||||||
|
audit trail back to `review.md`.
|
||||||
|
7. Use **block-style YAML** for the `source_findings:` list. The
|
||||||
|
frontmatter parser at `lib/util/frontmatter.mjs` does not support
|
||||||
|
flow-style arrays; `source_findings: [a, b]` is broken — use:
|
||||||
|
```yaml
|
||||||
|
source_findings:
|
||||||
|
- 0123456789abcdef0123456789abcdef01234567
|
||||||
|
- fedcba9876543210fedcba9876543210fedcba98
|
||||||
|
```
|
||||||
|
|
||||||
|
`source_findings:` is **additive and optional** — plans produced from a
|
||||||
|
`type: brief` input simply omit the field. No `plan_version` bump is
|
||||||
|
required for this addition (backwards compatible).
|
||||||
|
|
||||||
## Phase 1.5 — Export (runs only when mode = export)
|
## Phase 1.5 — Export (runs only when mode = export)
|
||||||
|
|
||||||
**Skip this phase entirely unless mode = export.**
|
**Skip this phase entirely unless mode = export.**
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,19 @@
|
||||||
|
<!--
|
||||||
|
Optional YAML frontmatter — include ONLY when the plan was generated from a
|
||||||
|
`type: ultrareview` input (Handover 6). Lists the 40-char hex IDs of the
|
||||||
|
BLOCKER + MAJOR findings consumed from `review.md`. Use block-style YAML;
|
||||||
|
the frontmatter parser does not support flow-style arrays.
|
||||||
|
|
||||||
|
Plans generated from a `type: brief` input omit this block entirely. No
|
||||||
|
plan_version bump — the field is additive and backwards compatible.
|
||||||
|
|
||||||
|
---
|
||||||
|
source_findings:
|
||||||
|
- 0123456789abcdef0123456789abcdef01234567
|
||||||
|
- fedcba9876543210fedcba9876543210fedcba98
|
||||||
|
---
|
||||||
|
-->
|
||||||
|
|
||||||
# {Task Title}
|
# {Task Title}
|
||||||
|
|
||||||
> **Plan quality: {grade}** ({score}/100) — {APPROVE | APPROVE_WITH_NOTES | REVISE | REPLAN}
|
> **Plan quality: {grade}** ({score}/100) — {APPROVE | APPROVE_WITH_NOTES | REVISE | REPLAN}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue