Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
241a332
feat(review): back pr-context on Aone Code targets
wenshao Aug 21, 2026
b85f998
fix(review): keep Aone ledger carriers out of the blocker re-check (#…
qwen-code-dev-bot Aug 21, 2026
2f275ae
Merge remote-tracking branch 'origin/main' into feat/review-aone-pr-c…
qwen-code-dev-bot Aug 21, 2026
19c2ee7
fix(review): refuse pr_number spellings that do not round-trip (#9621)
qwen-code-dev-bot Aug 21, 2026
bf898d4
Merge remote-tracking branch 'origin/main' into HEAD
wenshao Aug 21, 2026
47a2392
docs(review): align Aone docs with the landed no-ancestry anchor rule…
wenshao Aug 21, 2026
0e39252
Merge remote-tracking branch 'origin/main' into feat/review-aone-pr-c…
wenshao Aug 21, 2026
cbcac22
docs(review): annotate #9616 as landed and define the report-less re-…
wenshao Aug 22, 2026
c07a1af
Merge branch 'main' into feat/review-aone-pr-context
wenshao Aug 22, 2026
6a8e8b3
Merge remote-tracking branch 'origin/main' into HEAD
wenshao Aug 22, 2026
446b03b
Merge remote-tracking branch 'origin/main' into feat/review-aone-pr-c…
wenshao Aug 22, 2026
0111f5d
Merge remote-tracking branch 'origin/feat/review-aone-pr-context' int…
wenshao Aug 22, 2026
c02eb91
fix(review): route the context head through aoneHeadSha and close the…
wenshao Aug 22, 2026
d8575e3
fix(review): shape-check the Aone comment listing in getReviewContext
wenshao Aug 22, 2026
48af1a3
test(review): pin getCommentBody's body-field fallback (mutant-checked)
wenshao Aug 22, 2026
c435cce
Merge remote-tracking branch 'origin/main' into feat/review-aone-pr-c…
wenshao Aug 22, 2026
9c238b1
fix(review): union resolved comments into the Aone context bundle
wenshao Aug 22, 2026
2ead284
Merge remote-tracking branch 'origin/main' into feat/review-aone-pr-c…
wenshao Aug 22, 2026
6cc7476
fix(review): serve resolved comments and guard the envelope in getCom…
wenshao Aug 22, 2026
a76c8fc
Merge remote-tracking branch 'origin/main' into feat/review-aone-pr-c…
wenshao Aug 22, 2026
99fe7df
ci: correct qwen-autofix.yml size baseline to its actual post-migrati…
wenshao Aug 22, 2026
61f9c20
Merge remote-tracking branch 'origin/main' into feat/review-aone-pr-c…
wenshao Aug 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/.size-baseline
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
6495 pr-self-report-label.yml
9646 qwen-autofix-fork-bridge.yml
5942 qwen-autofix-fork-signal.yml
392111 qwen-autofix.yml
397656 qwen-autofix.yml
7061 qwen-ci-flaky-rerun.yml
151937 qwen-code-pr-review.yml
79041 qwen-fleet-shepherd.yml
Expand Down
17 changes: 17 additions & 0 deletions docs/design/2026-08-13-review-platform-provider-abstraction.md
Original file line number Diff line number Diff line change
Expand Up @@ -493,6 +493,23 @@ Enterprise paragraph.
dedup backing for Aone, cleanup audit, the ai_comment marking flag
(a1-side), the render-adjudication carve-out.

- **Phase 3b — Aone `pr-context` backing (this change).** The reader gains
`getReviewContext` + `getCurrentUser` (D1's `getContext` + `self`,
synchronous). `pr-context` routes through the platform reader; the
normalized bundle keeps ALL rendering and security logic platform-neutral.
GitHub's implementation EXTRACTS pr-context's existing gh calls
unchanged — the existing suite passing unmodified is the no-regression
evidence. On Aone: metadata from `mr view` (stats degrade), one flat
comment list split by `path`, no verdicts, ledger carriers = the
thread-level comments (the posted summaries); refetch commands bake
`--pr` (Aone addresses every comment body per-MR) and bake only an
explicit `--host` (never the ambient GH_HOST). The forced
context-unavailable cap leaves submit (the reads are backed now), so an
Aone run that read its context can APPROVE and the wired
`a1 repo mr approve` fires. Agent 0 becomes runnable on Aone (its gate
is pr-context success; its welded `issue-context` command is already
backed). Design: `2026-08-21-review-aone-pr-context.md`. Still open: the
Phase-3 open items above, unchanged.
- **Phase 4 — semantic gaps.** Incremental-cache ancestry fallback, build-test
repo-config escape hatch, publish-assets gating polish, generic-GitLab
(glab) evaluation.
Expand Down
280 changes: 280 additions & 0 deletions docs/design/2026-08-21-review-aone-pr-context.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/users/features/code-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,7 @@ The deterministic halves of the pipeline — argument parsing (`qwen review pars

**GitHub Enterprise:** reviewing a PR URL on a non-`github.com` host routes every GitHub call at that host — the review subcommands (`match-remote`, `meta`, `fetch-pr`, `pr-context`, `comment-status`, `issue-context`, `fetch-diff`, `comment-body`, `plan-diff`, `test-plan`, `presubmit`, `compose-review`, `submit`, `publish-assets`) accept `--host` and set it in code, so a forgotten host cannot silently retarget the review at `github.com`.

**Aone Code:** for a clone whose origin is on `gitlab.alibaba-inc.com`, run `/review` from inside that clone — the platform is detected from the remote and the subcommands work, backed by the `a1` CLI (at least 0.1.90 — an older install is refused at authentication time with an upgrade message) — the target number is the global MR id. `fetch-pr` fetches `refs/merge-requests/<id>/head` and builds the worktree + diff, so the agent review of the worktree is unchanged, and `test-plan` works too — it reads the MR description through the same reader. Every Aone run is context-unavailable and several flows are skipped (rather than hitting github.com's same-named repo): `pr-context`/`comment-status` have no Aone backing (the context-unavailable cap keeps an Approve verdict at Comment), `presubmit` is backed only for self-PR detection (the `a1 auth whoami` account vs the MR author) and head drift — its CI and existing-comment checks come back neutral — Agent 0 is skipped, and the `publish-assets` write is skipped. `--comment` **posts** the review through the `a1` CLI: one comment per inline finding, then the summary comment. Aone has no native request-changes state — on that verdict the summary comment carries a blocking header, and any inline Criticals that were actually posted block the merge through the discussion gate while their discussions stay unresolved (when no inline Critical posted, the header is advisory and nothing mechanically blocks the merge). The posted comments carry no AI-comment flag — `a1` cannot set one — so a repo's dedicated `ai_comment` merge gate does not track them. The native `a1 repo mr approve` is wired for an Approve verdict but does not fire this phase: the context-unavailable cap keeps an Approve verdict at Comment (a Request-changes verdict still posts its blocking summary). Incremental re-review follows the AGit-Flow update model: an update AMENDS the single CR commit in place, orphaning the head the previous round reviewed — so the cached anchor is ruled WITHOUT ancestry (the anchor-behind-head test would fail for every update), and the re-review scopes the PR's own diff to the files the update touched instead of falling back to a full review; an update that also rebased onto newer master keeps that scope only while the rebase's drift stays within the CR's files — drift touching any other file falls back to the full review, and no drift byte enters the published scope either way. One caveat for repeat rounds: there is no dedup backing yet, so a second `--comment` round re-posts every still-valid finding as a new comment (self-PR detection IS backed: reviewing your own MR gets the same verdict downgrade as on GitHub). See `docs/design/2026-08-15-review-aone-provider.md`.
**Aone Code:** for a clone whose origin is on `gitlab.alibaba-inc.com`, run `/review` from inside that clone — the platform is detected from the remote and the subcommands work, backed by the `a1` CLI (at least 0.1.90 — an older install is refused at authentication time with an upgrade message) — the target number is the global MR id. `fetch-pr` fetches `refs/merge-requests/<id>/head` and builds the worktree + diff, so the agent review of the worktree is unchanged, and `test-plan` works too — it reads the MR description through the same reader. `pr-context` is backed too: it reads the MR's metadata, discussion threads, and previously posted qwen summaries (the machine ledger recovers from them), so an Aone run sees the MR's existing discussion exactly as a GitHub run sees a PR's. Several flows are still skipped or reduced (rather than hitting github.com's same-named repo): `comment-status` has no Aone backing, `presubmit` is backed only for self-PR detection (the `a1 auth whoami` account vs the MR author) and head drift — its CI and existing-comment checks come back neutral — and the `publish-assets` write is skipped. `--comment` **posts** the review through the `a1` CLI: one comment per inline finding, then the summary comment. Aone has no native request-changes state — on that verdict the summary comment carries a blocking header, and any inline Criticals that were actually posted block the merge through the discussion gate while their discussions stay unresolved (when no inline Critical posted, the header is advisory and nothing mechanically blocks the merge). The posted comments carry no AI-comment flag — `a1` cannot set one — so a repo's dedicated `ai_comment` merge gate does not track them. The native `a1 repo mr approve` fires for an Approve verdict when the run read the MR's context (the same gate as GitHub; a context-unavailable run stays capped at Comment). Incremental re-review follows the AGit-Flow update model: an update AMENDS the single CR commit in place, orphaning the head the previous round reviewed — so the cached anchor is ruled WITHOUT ancestry (the anchor-behind-head test would fail for every update), and the re-review scopes the PR's own diff to the files the update touched instead of falling back to a full review; an update that also rebased onto newer master keeps that scope only while the rebase's drift stays within the CR's files — drift touching any other file falls back to the full review, and no drift byte enters the published scope either way. One caveat for repeat rounds: there is no dedup backing yet, so a second `--comment` round re-posts every still-valid finding as a new comment (self-PR detection IS backed: reviewing your own MR gets the same verdict downgrade as on GitHub). See `docs/design/2026-08-15-review-aone-provider.md`.

Every run ends with one machine-readable line (`Review complete: <target> — <disposition>`), so scripts and CI wrappers can detect completion and outcome with a single `^Review complete: ` match.

Expand Down
Loading
Loading