feat(pilot): minimal AI review bot for Gitea Actions

Ships a working pragent pilot ahead of the framework build (design doc
deferred). Single stdlib-only reviewer script fetched at runtime by a per-repo
Gitea Action; reviews fire only on PRs with the AI-REVIEW label; model is
glm-5.2:cloud via the on-network headroom proxy; fail-open.

- pilot/ai_review.py: fetch PR diff, call model, post review as pragent-bot
- pilot/workflow-template.yml: per-repo Gitea Action gated on AI-REVIEW label
- pilot/README.md: onboarding (bot collaborator + secret + workflow + label)
- tests/pilot/test_ai_review.py: 15 unit tests for pure helpers (no network)
- README/design doc: note pilot is the bootstrap; framework build deferred

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Marcos
2026-08-17 18:18:06 +00:00
parent 8a4239a9d9
commit 6f012e9b66
7 changed files with 529 additions and 2 deletions
+21
View File
@@ -297,3 +297,24 @@ and they may be worth contributing upstream rather than shipping standalone.
- Auto-fix commits (findings and suggestions only — writing to branches is a later,
separately-gated decision)
- Web dashboard (event schema first; dashboard is a downstream consumer)
## Bootstrap: the pilot (2026-08-17)
Before the framework build, a minimal **pilot** was shipped to get a working AI
review bot live immediately (user decision 2026-08-17). It is deliberately not
this design:
- Single Python script (`pilot/ai_review.py`, stdlib only) fetched at runtime by
a per-repo Gitea Action (`pilot/workflow-template.yml`).
- One model, `glm-5.2:cloud` via the on-network headroom proxy — no tiering, no
analyzer fan-out, no shared-prefix caching, no provider matrix.
- Trigger = `AI-REVIEW` label on a PR (deterministic skip, the cheapest tier
rule, but expressed as a Gitea Actions `if` gate rather than the tier engine).
- Fail-open, comment-only review; no inline line comments, no status checks,
no analytics JSONL, no `explain`/`replay`.
- Re-posts on every push (no prior-comment synthesis — §6.1 — yet).
The pilot validates the delivery model (CI-step + bot user, not a central
webhook) and the on-network provider path. When the framework build resumes,
`pilot/ai_review.py` is replaced by `pragent review`; the per-repo workflow
stays, just calling the CLI instead of curling the script. See `pilot/README.md`.