feat: live status-board comment + full-fleet dogfood (#1)
Build & push image / build-and-push (push) Successful in 6s
Build & push image / build-and-push (push) Successful in 6s
Phase 3: one consolidated, live-updating PR comment aggregating every model's per-lens progress (queued -> running -> finished + verdict), so the swarm's progress is visible at a glance and a watcher can tell when it's done. Opt-in statusWriter in the binary (atomic writes) + a background status-board.sh renderer wired through entrypoint.sh; default on, GADFLY_STATUS_BOARD=0 to disable. Also restores gadfly's dogfood swarm to the full cloud fleet (9 cloud + M5; M1 dropped as too slow) matching mort, and folds in the 3 real bugs the swarm found on its own PR (skip-binary stuck-waiting, panic-stuck lens, busy-loop on bad poll interval). All 36 findings graded via the gadfly MCP (18 real / 18 false-positive). gofmt clean, go vet quiet, go build + go test -race green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Steve Dudenhoeffer <steve@stevedudenhoeffer.com> Co-committed-by: Steve Dudenhoeffer <steve@stevedudenhoeffer.com>
This commit was merged in pull request #1.
This commit is contained in:
@@ -192,6 +192,30 @@ GADFLY_PROVIDER_LENS_CONCURRENCY: "ollama-cloud=3,m1=1"
|
||||
GADFLY_SPECIALISTS: "security,correctness,error-handling"
|
||||
```
|
||||
|
||||
### Live status board
|
||||
|
||||
When several models (each with several lenses) review a PR, the individual findings land in
|
||||
**one comment per model** — but while that's in flight all you'd see is a row of
|
||||
`⏳ Reviewing…` placeholders. So Gadfly also upserts **one consolidated status-board comment**
|
||||
that aggregates every model's per-lens progress as it happens:
|
||||
|
||||
```
|
||||
## 🪰 Gadfly — live review status
|
||||
1/3 reviewers finished · updated 2026-06-27 18:14:56Z
|
||||
|
||||
#### `glm-5.2:cloud` · ollama-cloud — ⏳ 2/4 lenses
|
||||
- ✅ security — No material issues found
|
||||
- 🔄 correctness — running
|
||||
- ⏸️ performance — queued
|
||||
…
|
||||
```
|
||||
|
||||
Each model process publishes its lenses (queued → running → finished + verdict) to a small
|
||||
JSON file, and a background renderer in `entrypoint.sh` re-renders + upserts the single comment
|
||||
every `GADFLY_STATUS_POLL_SECS` (default 12s) until the swarm finishes. It's advisory and
|
||||
best-effort — the per-model findings comments are unaffected — and entirely separate from those.
|
||||
Turn it off with `GADFLY_STATUS_BOARD=0`.
|
||||
|
||||
### Triggers
|
||||
|
||||
1. A **new/reopened/ready** non-draft PR — automatic.
|
||||
@@ -217,6 +241,7 @@ fixes. This keeps usage down.)
|
||||
```
|
||||
cmd/gadfly/ the agentic reviewer binary (majordomo + Ollama Cloud); zero deps beyond stdlib + majordomo
|
||||
scripts/run.sh fetches the PR diff, runs the reviewer, upserts one labeled comment
|
||||
scripts/status-board.sh renders + upserts the single live status-board comment (per-lens progress)
|
||||
scripts/system-prompt.txt the reviewer persona + verification discipline
|
||||
entrypoint.sh the container brains: trigger gating, clone, model loop (logic lives here, not in YAML)
|
||||
Dockerfile multi-stage; build-time module creds (BuildKit secrets) never reach the final image
|
||||
@@ -252,6 +277,8 @@ The reviewer binary reads these (the stub/entrypoint set sane defaults):
|
||||
| `GADFLY_RECHECK` | on | set `0`/`false` to skip the recheck pass |
|
||||
| `GADFLY_RECHECK_MAX_STEPS` | 16 | recheck-pass step cap |
|
||||
| `GADFLY_MAX_DIFF_CHARS` | 60000 | diff chars embedded in the prompt (full diff via `get_diff`) |
|
||||
| `GADFLY_STATUS_BOARD` | on | set `0` to disable the live status-board comment |
|
||||
| `GADFLY_STATUS_POLL_SECS` | 12 | how often the status board re-renders/upserts |
|
||||
| `GADFLY_TRIGGER_PHRASE` | `@gadfly review` | comment phrase that re-triggers |
|
||||
| `GADFLY_ALLOWED_USERS` | *(collaborators)* | comma-separated allow-list for comment triggers |
|
||||
| `GADFLY_FINDINGS_URL` | — | gadfly-reports store base URL; set to enable findings telemetry (off when empty) |
|
||||
|
||||
Reference in New Issue
Block a user