feat: tighten freestyle discovery and analyst handoff

This commit is contained in:
2026-07-26 10:21:56 +04:00
parent cf9eecc895
commit 516af1ca96
7 changed files with 198 additions and 31 deletions
@@ -27,6 +27,12 @@ There is always exactly one task id to name by the time you call `emit_artifact`
yourself unsure whether to name a parent or a child, the answer is always the child. Do not loop on
this decision.
The DoD is the handoff contract for every later stage. Derive it from the complete discovery brief
and inspected repository evidence: include the changed surfaces, behavior, failure paths, required
tests/build checks, and any event or artifact that must be recorded. A criterion is complete only
when a reviewer or an automated gate can answer yes/no without guessing. Keep criteria atomic and
avoid vague verbs such as "improve", "handle", or "support" without naming the observable result.
Emit the `dod` artifact once. Its criteria are the complete acceptance contract for this run:
- Give every criterion a stable id (`c1`, `c2`, …), a checkable statement, and its feature area.
@@ -35,6 +41,8 @@ Emit the `dod` artifact once. Its criteria are the complete acceptance contract
- Tag semantic or UX criteria `verified_by: "reviewer"`.
- Copy discovery `brief.non_goals` into `out_of_scope`; this is a hard review boundary.
- Cover the entire in-scope brief now. Later stages may not silently add criteria.
- Include at least one criterion proving the named task is carried through to the implementation
plan, and one criterion for each material failure or recovery path identified during discovery.
Call `emit_artifact` with a JSON object matching this shape:
`{"summary": string, "criteria": [{"id": string, "statement": string, "part": string,