{{ADVERSARIAL_STEP}} ### Before persisting Eng Review (Step 5.8) If this pass applied any fixes (including adversarial fixes), repeat Steps 3–5.7 against the updated diff with a new REVIEW_START. A pass converges only when it completes without edits. Allow at most 3 fix cycles; if the third still applies fixes, persist `converged:false` and stop with the remaining findings. Do not capture a new token just to log the fixed tree. Keep the invocation action list across those cycles. The final zero-edit pass verifies the resulting code; it does not replace earlier completed actions with an empty list. Merge final-pass decisions with accumulated actions once per structural identity and advisory/defect kind. An approved extraction that removed the original duplication retains its `fixed` record with the original `evidence_paths` and `helper_target`; recompute its fingerprint from that preserved metadata, not from an invented replacement candidate. Verify the resulting helper/caller behavior and tests without requiring the removed blocks to still exist. Carry a skipped advisory into the final saved findings only after re-reading all its evidence against the final snapshot and confirming the same supported proposal and decision still apply. If that cannot be established, report the earlier choice as history in the response without binding it as a reusable skipped finding. A prior fixed action never clears a recurring defect: final unresolved counts and completion still come from the current pass. For each saved skipped shared-code advisory, record `snapshot_covered_paths` from the final snapshot eligibility checks in Step 5.0, including raw-byte equality with that snapshot's blobs. Recompute this list from actual reads; never copy coverage from earlier cycles, supplied findings, or prior records. Ineligible evidence can still support fresh advice, but omit it from the coverage list so the decision cannot be reused without revalidation. Persist an empty list when no path qualifies. Fixed advisories do not need reusable skip coverage. For the Step 5.8 record, REVIEW_START is the token captured before this pass's Step 3 diff read. COMPLETED is true only if the checklist and dispatched specialists completed; missing coverage is false, never clean. CONVERGED is true only for a completed pass with zero edits. CYCLES counts fix cycles (0 for a first-pass completion). Preserve unavailable specialist/provider coverage in the summary; completion of one source does not imply completion of another. - `specialists` = the per-specialist stats object compiled in Step 4.6. Each specialist that was considered gets an entry: `{"dispatched":true/false,"findings":N,"critical":N,"informational":N}` if dispatched, or `{"dispatched":false,"reason":"scope|gated"}` if skipped. Include Design specialist. Example: `{"testing":{"dispatched":true,"findings":2,"critical":0,"informational":2},"security":{"dispatched":false,"reason":"scope"}}` - `findings` = array of per-finding records from Step 5 and the invocation action list, merged as above. For each finding (from core pass and specialists), include: `{"fingerprint":"path:line:category","severity":"CRITICAL|INFORMATIONAL","action":"ACTION"}` and preserve `advisory`, `evidence_paths`, and `helper_target` whenever present. For shared-code advisories, recompute the fingerprint with the same installed `sharedLibsFingerprint` helper from the core pass immediately before persistence; do not trust supplied or model-generated hashes. Recheck the supporting source after fixes, applying the fixed-versus-skipped rules above. ACTION is `"auto-fixed"` (Step 5b), `"fixed"` (user approved in Step 5d), or `"skipped"` (user explicitly chose Skip in Step 5c). Advisories may be `"fixed"` or `"skipped"`, never `"auto-fixed"`; silence is not a skip. If a user defers answering, preserve the pending advice in the response without inventing a saved decision. Findings suppressed from a persistent prior review in Step 5.0 are NOT included (they were already recorded); revalidated decisions from this invocation ARE included. - The review logger discards caller-supplied binding fields and constructs trusted `review_binding`, including a digest of the validated captured branch. Do not manufacture a binding or capture a fresh start token solely to obtain a matching fingerprint. Excluding advisory counts does not relax start-token, completion, convergence, or missing-reviewer rules.