Phase 2 of the gadfly-games build.
- Bump majordomo to the latest build and wire its new **llamaswap**
provider into gadfly's endpoint switches (GADFLY_PROVIDER=llamaswap +
GADFLY_BASE_URL, and GADFLY_ENDPOINT_<NAME>="llamaswap|url[|key]"),
mirroring the ollama provider. Wired but untested (no llama-swap here).
- Dogfood the Phase-1 claude-code engine: add `claude-code/sonnet` to
gadfly's own review swarm as a competitor alongside the 9 cloud models
+ M5, pin the workflow to :sha-86f12c1 (the image that bundles the
claude CLI), and map CLAUDE_CODE_OAUTH_TOKEN. Its own provider lane
(claude-code=1), parallel with the cloud and m5 lanes.
- Document the alternate Claude Code backends: Pro/Max (default), and —
EXAMPLE ONLY, not wired — running Ollama models THROUGH the CC harness
via ANTHROPIC_BASE_URL pointed at an Anthropic-compatible proxy
(claude-code-router / LiteLLM). The subprocess env already forwards
ANTHROPIC_*/CLAUDE_*, so no code change is needed for that path.
- README: llamaswap row in the providers table + a Claude Code
"alternate backends" note; examples/claude-code.yml shows the proxy env.
gofmt clean, go vet quiet, go build + go test -race green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Phase 1: a second review engine alongside the majordomo agent loop. For
each lens, shell out to the Claude Code CLI (`claude -p --output-format
json`) inside the checked-out repo so it verifies findings with its own
read tools, then reuse gadfly's verdict-parse + recheck + consolidate +
emit pipeline. Select via GADFLY_MODELS `claude-code`/`claude-code/<model>`;
auth via CLAUDE_CODE_OAUTH_TOKEN (no --bare) else ANTHROPIC_API_KEY;
read-only by default; GADFLY_CLAUDE_* knobs. Dockerfile bundles Node +
@anthropic-ai/claude-code. Also bumped the dogfood pin to the status-board
image (PR #2 was the first dogfood with the live board + full fleet).
Folded in the swarm's own review findings: minimal subprocess env (no
GITEA_TOKEN leak to the CLI), runPass robustness (ctx/empty-result/runErr),
process-group cleanup on timeout, rune-safe error truncation, and
engine-neutral prompts (also de-mort-ified the recheck prompt). 66 findings
graded via the gadfly MCP.
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>
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>
Adds the adversarial-review workflow to gadfly itself (copied from mort: 3 cloud + m1/m5 via foreman, findings telemetry, sha-d7f364d). Future gadfly PRs get reviewed by the swarm.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>