35 lines
2.4 KiB
Markdown
35 lines
2.4 KiB
Markdown
# gitea-review-bot — ROADMAP
|
|
|
|
Phases beyond the first milestone (threaded single-flow review + merge/reject/deploy; see AGENTS.md
|
|
`## Current state`).
|
|
|
|
## Phase 3 — Multi-repo at scale
|
|
- Onboard ≥3 repos to their own rooms; confirm independent polling, no cross-talk. **Exit:** three
|
|
repos reviewed from three rooms in one run. *(adjudicated 2026-07-18: verify — needs no new code;
|
|
rooms are already independent (per-room heads/threads/agents are namespaced, merge-confirm state is
|
|
keyed by room+PR). Check plan, when a real 2nd/3rd repo is onboarded: watch one poll cycle in
|
|
`docker compose logs -f`. Note the exit criterion is mis-stated — reviews run **serially** (one async
|
|
task walks the rooms in turn), so "no interleaving" is trivially satisfied; the thing actually worth
|
|
watching at 3+ repos is a long review **head-of-line-blocking** the next room's poll, i.e. the latency
|
|
problem the deferred poll→webhook item anticipates.)*
|
|
- **Status 2026-08-18: 2 of 3 onboarded** — ten31-site and ten31-brand. Mapping a room mid-run needed
|
|
no restart. The head-of-line-blocking watch above is now possible but still unobserved: it needs open
|
|
PRs in both rooms at the same time.
|
|
|
|
## Fold-ins — do opportunistically, never a session of their own
|
|
- *(fold-in, not a session of its own)* Next time `src/bot.py`'s SSH or Matrix-send path is edited:
|
|
bound the two unbounded awaits (`await proc.wait()` after the timeout kill in `ssh_run`;
|
|
`client.room_send` in `say()`), and attach a done-callback to the poll task that stops the process
|
|
if it ever dies, so the existing `restart: unless-stopped` + spark-control tile cover it. No hang
|
|
has been observed; this is "unbounded is not a defensible default in a loop with no supervisor",
|
|
not a fix for a diagnosed bug. *(adjudicated 2026-07-29: fold-in only)*
|
|
|
|
## Deferred / non-goals
|
|
- Not a Claude-session bot (that's matrix-bridge); not Maubot (revisit at ~6+ bots or web-UI mgmt);
|
|
no GitHub/non-Gitea; no Gitea account/permission management; E2EE deferred (private LAN transport).
|
|
- A shared "bot kit" library (extract the common matrix-nio + SSH plumbing across the three bots)
|
|
once duplication bites — the lighter step before ever considering Maubot.
|
|
- Poll → webhook upgrade if 60s latency ever matters.
|
|
- Ops/dashboard tile lives in **spark-control**, not here — its Bots tab has shipped a gitea-review-bot
|
|
tile since v0.28.0 (status badge, Update, Start/Restart/Stop, View logs), confirmed live.
|