1cdda32dbc
Phase 3 of the gadfly-games build. With several models × several lenses reviewing a PR, all you'd see mid-run is a row of "⏳ Reviewing…" placeholders. Add ONE consolidated, live-updating status-board comment that aggregates every model's per-lens progress (queued → running → finished + verdict), so progress is visible at a glance and a watcher can tell when the whole swarm is done. - cmd/gadfly: opt-in statusWriter (GADFLY_STATUS_FILE) publishes this model's lenses to a JSON file, written atomically (temp+rename) as runSpecialists transitions each lens. Inert when unset — plain runs and tests are unaffected. - scripts/status-board.sh: background renderer that polls the status dir and upserts one marker comment every GADFLY_STATUS_POLL_SECS (default 12s), caching the comment id to PATCH in place. Advisory and best-effort; the per-model findings comments are untouched. - entrypoint.sh: pre-seeds every model as queued, launches the board, waits only on the review lanes, then signals .done for a final render. Default on; disable with GADFLY_STATUS_BOARD=0. - Docs: README config table + "Live status board" section, example stub note, CLAUDE.md architecture map. gofmt clean, go vet quiet, go build + go test -race green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Example consumer workflows
Each file here is a complete, copy-paste stub workflow. Pick the one that matches your
setup, copy it to .gitea/workflows/adversarial-review.yml in the repo you want reviewed, and
set the secrets/vars it references. Gadfly is advisory only — it never blocks a merge.
| File | Backend | Needs |
|---|---|---|
adversarial-review.yml |
Ollama Cloud (default) + inline notes for every provider | secret OLLAMA_CLOUD_API_KEY |
local-ollama.yml |
a local/LAN Ollama daemon | nothing (or GADFLY_BASE_URL for a remote host) |
openai-compatible.yml |
any OpenAI-compatible endpoint (local Ollama /v1, gateway, vLLM, OpenRouter…) |
GADFLY_BASE_URL (+ a key for most gateways) |
endpoint-aliases.yml |
several named backends at once (one comment each) | repo vars GADFLY_ENDPOINT_<NAME> |
.gadfly.yml |
per-repo specialist config (not a workflow — goes at your repo root) | — |
Common to all:
- Triggers: new/reopened/ready non-draft PR (auto),
@gadfly reviewcomment (allowed users), or manualworkflow_dispatchwith apr_number. GITEA_TOKENis provided automatically; comments post asgitea-actions.- Tested backends are the Ollama ones; OpenAI/Anthropic/Google are wired via majordomo but untested. See the repo README for the full config reference and the honest tested/untested status.
Gitea note: repo
vars/secretsare not auto-exposed as env — anything you reference via${{ vars.X }}/${{ secrets.X }}must appear in the step'senv:block (already wired in these examples).