Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
d24b9e6
refactor(review): extract the toolchain adapter boundary
wenshao Aug 9, 2026
374105b
docs(review): record the toolchain adapter boundary design
wenshao Aug 9, 2026
95e5ba6
feat(review): add Maven multi-module verification
wenshao Aug 9, 2026
ece4bb6
Merge branch 'main' into review-toolchain-adapter-p0
wenshao Aug 9, 2026
83f298a
Merge branch 'review-toolchain-adapter-p0' into review-maven-toolchain
wenshao Aug 9, 2026
5969deb
Merge remote-tracking branch 'origin/main' into review-maven-toolchain
wenshao Aug 11, 2026
f508461
fix(review): close the Maven adapter's fail-open gaps from review
wenshao Aug 11, 2026
07530d9
fix(review): close the Maven toolchain's second-round fail-open gaps
qwen-code-ci-bot Aug 11, 2026
a8ad503
fix(review): close the Maven toolchain's third-round fail-open gaps
qwen-code-ci-bot Aug 11, 2026
67dfe9c
fix(review): close the Maven toolchain's fourth-round review gaps
qwen-code-ci-bot Aug 12, 2026
7ea10c4
fix(review): close the Maven toolchain's fifth-round review gaps
qwen-code-ci-bot Aug 12, 2026
f82cbb8
fix(review): close the Maven toolchain's sixth-round review gaps
qwen-code-ci-bot Aug 12, 2026
eb2263c
fix(review): close the Maven toolchain's seventh-round review gaps
qwen-code-ci-bot Aug 12, 2026
f70f82c
Merge branch 'main' into review-maven-toolchain
qwen-code-dev-bot Aug 12, 2026
cae4a9d
Merge branch 'main' into review-maven-toolchain
wenshao Aug 13, 2026
231e32a
Merge branch 'main' into review-maven-toolchain
qwen-code-dev-bot Aug 13, 2026
ca33cae
fix(review): close the Maven toolchain's eighth-round review gaps
qwen-code-dev-bot Aug 13, 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
396 changes: 374 additions & 22 deletions docs/design/review-toolchain-adapters.md

Large diffs are not rendered by default.

24 changes: 23 additions & 1 deletion packages/cli/src/commands/review/agent-prompt.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2166,8 +2166,30 @@ describe('buildRoleBrief — every agent, not just the territory ones', () => {
// send the reader to fix a prompt that is correct.
const p = buildRoleBrief(PR_PLAN, '7');
expect(p).not.toContain(PLAN.diffPathAbsolute);
expect(p).toContain('npm run build');
expect(p).toContain('`toolchain: "maven"`');
expect(p).toContain('Do not run `test-delta` for Maven in this release');
expect(p).toContain('Source: [build]');
// The only steering against hand-run full builds — the pattern the same
// paragraph records as timing out 71 times and verifying nothing. The
// prohibition is scoped to what build-test runs: the unsupported
// fallback below it is the sanctioned hand-run path, and the wording
// must not forbid it.
expect(p).toContain(
'Do **not** substitute hand-written npm or Maven commands ' +
'for what `build-test` runs — the `toolchain: "unsupported"` fallback ' +
'below is the only sanctioned hand-run path',
);
Comment on lines +2177 to +2181

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Suggestion] The pin stops right before the carve-out clause (— the toolchain:"unsupported" fallback below is the only sanctioned hand-run path) that is the only thing reconciling the prohibition with the sanctioned fallback, even though the test's own comment declares the carve-out load-bearing. — Failure scenario: Deleting or inverting the em-dash clause leaves the pinned substring intact and the test green, while Agent 7's brief flatly forbids hand-run commands at the same time as its unsupported bullet instructs one build + one test command — on any toolchain:"unsupported" report the agent is wedged between running nothing and violating the prohibition.

Suggested fix: Extend the pin across the clause: expect(p).toContain('for what build-test runs — the toolchain: "unsupported" fallback below is the only sanctioned hand-run path').

中文说明

钉住断言恰好停在 carve-out 子句之前(—— 下方 toolchain:"unsupported" 回退是唯一获准的手动运行路径),而该子句是调和解禁与获准回退的唯一内容,测试自己的注释还声明该 carve-out 是关键。 —— 失败场景:删除或反转这个破折号子句后,被钉住的子串原封不动、测试仍绿,而 Agent 7 的 brief 一边绝对禁止手写命令、一边其 unsupported bullet 又指示执行一次构建 + 一次测试 —— 任何 toolchain:"unsupported" 报告都会让 agent 在'什么都不跑'与'违反禁令'之间被夹住。

建议修复:把钉住扩展到子句:expect(p).toContain('for what build-test runs — the toolchain: "unsupported" fallback below is the only sanctioned hand-run path')。

— qwen3.8-max via Qwen Code /review (v0.21.9)

// The unsupported bullet's steering rules: a fail-closed adapter
// result must not be replaced by an ad hoc command, the mixed-root
// note names the Maven half the npm run did not verify (and forbids
// filling it ad hoc), and a CI-named command lifts neither rule.
// Reverting the bullet to the old precedence list left all tests green
// before these pins.
expect(p).toContain(
'do not replace that fail-closed result with an ad hoc Maven command',
);
expect(p).toContain('do not run Maven ad hoc to fill the gap');
expect(p).toContain('does **not** lift the two rules above');
});

it('pins Agent 7 to the PR worktree and hands it the test-efficacy probe', () => {
Expand Down
Loading
Loading