chore(ai-review): the gateway review route moved #25
No reviewers
Labels
No labels
bug
discussion
enhancement
good first issue
question
idea
points
1
points
13
points
2
points
3
points
5
points
8
priority
p0
priority
p1
priority
p2
priority
p3
state
blocked
state
done
state
in-progress
state
ready
state
review
state
triage
status
declined
status
in-progress
status
planned
status
proposed
status
shipped
status
under-review
type
bug
type
epic
type
feature
type
spike
type
story
type
task
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
tti/corridor-sim!25
Loading…
Reference in a new issue
No description provided.
Delete branch "chore/ai-review-20260923"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The AI review gateway renamed its routes (nis/forgejo-stack ADR-0002) and kept no aliases, so the workflow this repo carries now gets a 404 and posts a could-not-review comment. This re-seeds the canonical ai/ai-review.yml, which calls the new route. Merge it to get AI review back on this repository. Advisory only, never a merge gate.
AI review · advisory
Verdict: 1 thing worth fixing (1 low) — 2 confirmed, near-duplicates merged.
⚑ panel: GPT-OSS 120B · Gemma 4 31B · Devstral 2 123B · Laguna S 2.1 — 3 distinct, 2 confirmed, 1 below threshold, 0 refuted · web: not used · context: 1 files under review · 39 codebase · 6 standards chunks
Panel debate — how this review was reached
Grounding — context: 1 files under review · 39 codebase · 6 standards chunks
Round 1 — independent reviews
Round 2 — cross-examination
Laguna S 2.1#2PR_NUMBER parsed as int with no validation can crash int() on empty/malformed · confirmed: GPT-OSS 120B, Gemma 4 31B, Devstral 2 123B · refuted: — · support 3Laguna S 2.1#1Body no longer carries repo/pr after route moved to path · confirmed: Devstral 2 123B · refuted: GPT-OSS 120B, Gemma 4 31B · support 1Laguna S 2.1#3Transcript URL path singular/plural now matches comment header · confirmed: GPT-OSS 120B, Gemma 4 31B, Devstral 2 123B · refuted: — · support 3Not posted (support < 2, or contested at a severity where one refutation vetoes)
Laguna S 2.1#1Body no longer carries repo/pr after route moved to path (support 1)Synthesis — Laguna S 2.1 wrote the final review from 2 confirmed findings (+1 below threshold) · promotion: support ≥ 2, and no refutation at high severity.
Transcript
rv-20260923172355-999bd2— full round outputs, web results, and model reasoning are viewable by anyone with access to this repository via the AI gateway.Advisory — never a merge gate. Findings are ordered by how well the panel's own evidence checks out, strongest first. React 👍/👎 on any inline comment to tell it whether it was worth flagging — that is the only feedback this system gets, and every threshold in it is tuned from those reactions. Transcript
rv-20260923172355-999bd2.@ -148,3 +149,3 @@md += ("\n\n<sub>Full transcript: " + os.environ["SERVER_URL"]+ "/-/ai/v1/review/" + out["review_id"] + "</sub>")+ "/-/ai/v1/reviews/" + out["review_id"] + "</sub>")except Exception as e:LOW — Transcript URL path singular/plural now matches comment header
The route changed from /-/ai/v1/review/{id} to /-/ai/v1/reviews/{id}. This is consistent with the plural 'reviews' in the BFF URL path just above (line 103) and the file header comment (line 3) which now says POST /v1/repos/{o}/{r}/pulls/{n}/reviews. The transcript link is a secondary ACL-gated UI route, so correctness here is cosmetic, but it is at least internally consistent post-change. No defect — noting for completeness against cross-codebase consistency.
Evidence: strong evidence — two or more reviewers, quote verified against the diff, anchored on a changed line (panel 4/4).
👍 if this was worth flagging · 👎 if it was not — a reaction on this comment is the whole feedback loop.
@ -103,1 +101,3 @@req = urllib.request.Request(os.environ["BFF_URL"]+"/v1/review",# Forgejo-shaped route (ADR-0002): repo and PR live in the PATH and the# gateway checks the caller can see that repo before it reads the diff.req = urllib.request.Request(os.environ["BFF_URL"] + "/v1/repos/" + os.environ["REPO"]HIGH — PR_NUMBER parsed as int with no validation can crash int() on empty/malformed
int(os.environ.get("PR_NUMBER") or 0) is robust when PR_NUMBER is unset (falls to 0 via the
or 0). However, if github.event.pull_request.number is somehow empty-but-truthy or non-numeric (e.g. a forged event payload, or the env var set to a non-int string by a misbehaving trigger), int() raises ValueError inside the urllib.request.Request URL construction — this happens BEFORE the try/except retry loop, so the whole python heredoc aborts and /tmp/review.md is left empty, which the next step tolerates (non-fatal) but loses the review entirely without the documented fallthrough. This is inconsistent with the defensive posture elsewhere in the file (e.g. theor 0guard, the retry/fallthrough design).Evidence: strong evidence — two or more reviewers, quote verified against the diff, anchored on a changed line (panel 4/4).
👍 if this was worth flagging · 👎 if it was not — a reaction on this comment is the whole feedback loop.