58c46db695
Build & push image / build-and-push (pull_request) Successful in 6s
From PR #17's own adversarial review (now running on the Phase-1 image — note the much cleaner, less-fragmented findings). Graded in gadfly-reports. - Never lose output (advisory invariant): run.sh writes a stub findings file when a model fails/skips under consolidation, so a failed model still shows (as failed) and an all-models-fail run still posts a comment. - Errored models excluded from the agreement denominator (modelFindings.Errored + allErrored); shown folded as "reviewer failed", not counted as clean. - Sliding cluster window: span [line,maxLine] widened by tolerance on both edges, so chains of nearby findings merge instead of splitting (fixes agreement under-counting). Clustering is now per-file (no global O(n²) scan). - Lone-finding headline threshold raised high -> critical (matches the docs); only consensus or a lone critical earns the headline, the rest fold. - findings_file_for appends a cksum so foo:bar vs foo/bar can't collide. - mdCell escapes the location cell + neutralizes backticks (table-injection); "No material issues" no longer shown when folded findings exist. - Removed dead cluster.detail; named findingRef type; single partition/agreed pass; writeFindingsOut MkdirAll; captureStdout defer-restore + close. Tests added: sliding-window chain merge, errored-denominator exclusion, lone HIGH folds. gofmt/vet/bash -n clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>