src/bmm-skills/4-implementation/bmad-code-review/steps/step-03-triage.md
{communication_language}Normalize findings into a common format. Expected input formats:
location, trigger_condition, guard_snippet, potential_consequence fieldsIf a layer's output does not match its expected format, attempt best-effort parsing. Note any parsing issues for the user.
Convert all to a unified list where each finding has:
id -- sequential integersource -- blind, edge, auditor, or merged sources (e.g., blind+edge)title -- one-line summarydetail -- full descriptionlocation -- file and line reference (if available)Deduplicate. If two or more findings describe the same issue, merge them into one:
detail field.source to the merged sources (e.g., blind+edge).Classify each finding into exactly one bucket:
{review_mode} = "full".If {review_mode} = "no-spec" and a finding would otherwise be decision_needed, reclassify it as patch (if the fix is unambiguous) or defer (if not).
Drop all dismiss findings. Record the dismiss count for the summary.
If {failed_layers} is non-empty, report which layers failed before announcing results. If zero findings remain after dropping dismissed AND {failed_layers} is non-empty, warn the user that the review may be incomplete rather than announcing a clean review.
If zero findings remain after triage (all rejected or none raised): state "✅ Clean review — all layers passed." (Step 3 already warned if any review layers failed via {failed_layers}.)
Read fully and follow ./step-04-present.md