907b83388b577880375e14d3ab7528efe9f5ba3b
Heartbeat dropped: a Docker healthcheck badge restarts nothing under this container's setup, spark-control's tile would need its own change to read it, and serial per-room polling (a review may run 10 min) makes any staleness threshold either too loose to be timely or noisy mid-review. No wedge has ever been observed. Reopens on an observed wedge plus confirmation the tile already renders Docker health. Replaced by a fold-in, since the realistic failure is a hang rather than a crash: bound the two unbounded awaits in src/bot.py and stop the process if the poll task ever dies, letting restart: unless-stopped and the existing spark-control tile cover it. AGENTS.md Current state reconciled to match. Phase 3's onboard-3-repos verify item stands (inside the 14-day skip window).
gitea-review-bot
A thin Matrix bot that reviews and merges your Gitea pull requests, one review room per repo.
Separate from matrix-bridge (which runs interactive Claude Code sessions) — this bot's only job
is PR review.
How it works
- Create a Matrix room named like a repo and invite the bot. It auto-joins and maps the room to
<owner>/<repo>(and~/Projects/<repo>on the Mac), then posts an onboarding message. - It polls that repo's open PRs and posts each as a thread: a headless
claude -preview (with an optional subagent panel) run on the Mac over SSH. - In the thread:
merge(thenyes) orreject. A merge auto-deploys (if enabled) and then redacts the thread, so the room shows only open PRs; if the deploy fails, the thread still clears and a standalone "deploy manually" warning stays in the room.clearredacts an orphaned thread without touching the PR.
Pick which review agents run per room in chat: agents +reviewer +security -adjudicator.
Run (on the Spark)
- Copy
config.example.toml→config.tomland.env.example→.env; fill them in (Matrix creds,GITEA_TOKEN, the[mac]SSH alias + reused matrix-bridge wrapper paths,[gitea]). docker compose up -d --build. Logs:docker compose logs -f.
See AGENTS.md for the full design, placement, and decisions.
Languages
Python
93.5%
Shell
3.7%
Dockerfile
2.8%