Skip to content

fix(pr-review): one visible review per pull request, and a confidence that holds a known bug below safe - #1973

Merged
Makisuo merged 3 commits into
mainfrom
fix/pr-review-signal
Oct 30, 2026
Merged

Makisuo merged 3 commits into
mainfrom
fix/pr-review-signal

Conversation

@Makisuo

@Makisuo Makisuo commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Why

The review bot's comments were tiring to read, and its confidence number was off. I measured both on the 201 reviews it posted on #1915 to #1969:

What changes

  • One visible review. Once a summary is posted, the App's earlier review comments on the PR are minimized as outdated (hideEarlierComments → GraphQL minimizeComment). This is best effort: a refusal is logged and the review still posts.
  • A leaner comment. "What was checked", the coverage table, production traffic and the list of added and removed telemetry now appear only on the check run, and the comment's footer points there. The confidence header is one line. Open errors with the same title are grouped into one row.
  • Confidence rules:
    • A correctness or performance warning caps the score at 6 ("needs attention").
    • A security warning caps it at 4.
    • Defects fixed in earlier rounds of the same PR cap later reviews at 8, because a re-review reads only what changed. This counts correctness, security and performance findings of any severity, notes included: on the corpus that made a 9 or 10 rarer before a review that found another bug.
  • Shorter findings. record_finding refuses a body over 60 words or a suggestion over 35, up to 4 times per pass. submit_review refuses once. A close-out is never refused. The prompt gains a severity rubric with examples taken from these reviews, and the fix now goes only in suggestion or replacement.

Verification

review-signal.corpus.test.ts snapshots every review summary and inline note from 47 real PRs (__fixtures__/review-signal/). It refreshes with bun run --cwd apps/ai review:signal MapleTechLabs/maple <first> <last>.

The test reads each summary back into its report. For all 201 reviews, the recomputed score breakdown matches the published one. It then renders and scores each review with the current code and holds these bars:

On the 201 real reviews Before After
Text a reader sees (collapsed sections folded) 336k chars 119k (36%)
Scored 7+ with a defect open 59 0
Next push found a new defect after a 9 or 10 14% (10/73) 4% (1/26)
Labelled misses all 10 all 8

Mutation check: putting back the old defect cap fails the "never reads safe with a defect open" bar. Putting back the old cap and turning off history fails three bars.

Typecheck passes in domain, backend and ai. These suites pass: domain pr-review (37 tests), backend pr-review + vcs (500), ai chat (292). Lint is clean on the changed files.

Not verified

  • Whether the App may minimize its own comments shows only once this runs in prd. The GraphQL query shape was checked against GitHub with read-only calls, and the request sequence is covered by tests.
  • The corpus measures rendering and scoring, not the model. The effect of the prompt and length limits will show in the next reviews.
  • The generic "Before merge" items ("Migration · Check it is safe on production data", "Infra · Check every environment…") are unchanged. They have their own labelled eval, which counts migration steps as expected.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

… that holds a known bug below safe

Measured on the 201 reviews Maple posted on #1915 to #1969:

- Each push posted a new summary and none were folded, so #1915 carried 20 of them. Once a review's
  summary is posted, the App's earlier ones are minimized as outdated (GraphQL minimizeComment,
  best effort). What was checked, the coverage table, production traffic and the telemetry
  inventory move to the check run; the comment points there. Open errors group repeated titles.
- 59 reviews read 7 or more ("likely safe to merge") with a correctness, security or performance
  warning open. Such a warning now holds confidence at 6, a security warning at 4.
- A 10 was followed by a new defect on the next push 14% of the time. A pull request whose earlier
  reviews found defects that are now fixed is held at 8: a re-review reads only what changed.
- Finding bodies ran a median of 74 words and restated the fix printed under them. record_finding
  and submit_review refuse a body over 60 words or a suggestion over 35 (bounded retries), and the
  prompt gets a severity rubric with examples from these reviews.

review-signal.corpus.test.ts is the check: it reads every published summary back into its report
(the recomputed factors line matches all 201), renders and scores it with the current code, and
holds bars on the visible text (36% of before), on a safe number beside an open defect (59 to 0),
on five heads labelled as misses (all 10 before, 8 now) and on the top band (next-push defects after
a 9 or 10: 14% to 4%). Refresh with `bun run --cwd apps/ai review:signal <owner/repo> <first> <last>`.
@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 23 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c206d895-6b01-4cf0-bd2d-b10d14272234
Commits

Reviewing files that changed from the base of the PR and between 3f2cc48 and 346cd13.

Files selected for processing: 69
  • apps/ai/package.json
  • apps/ai/scripts/pr-review-signal.ts
  • apps/ai/src/chat/prompts.ts
  • apps/ai/src/chat/tools.test.ts
  • apps/ai/src/chat/tools.ts
  • apps/landing/src/content/docs/code-review/overview.md
  • docs/pr-review-agent-plan.md
  • packages/backend/src/services/integrations/vcs/VcsProviderClient.ts
  • packages/backend/src/services/integrations/vcs/vendor/github/GithubAppClient.ts
  • packages/backend/src/services/integrations/vcs/vendor/github/GithubProvider.ts
  • packages/backend/src/services/integrations/vcs/vendor/github/__tests__/GithubProvider.pulls.test.ts
  • packages/backend/src/services/pr-review/PrReviewConversationService.test.ts
  • packages/backend/src/services/pr-review/PrReviewPostMergeService.test.ts
  • packages/backend/src/services/pr-review/PrReviewService.test.ts
  • packages/backend/src/services/pr-review/PrReviewService.ts
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/labels.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1915.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1916.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1918.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1919.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1920.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1922.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1923.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1924.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1925.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1926.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1927.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1928.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1929.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1930.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1932.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1933.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1934.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1935.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1936.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1937.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1938.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1940.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1941.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1943.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1944.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1945.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1946.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1947.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1948.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1950.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1951.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1952.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1953.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1954.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1955.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1956.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1957.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1958.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1959.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1960.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1961.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1962.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1965.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1966.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1967.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1968.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1969.json
  • packages/backend/src/services/pr-review/review-signal-corpus.ts
  • packages/backend/src/services/pr-review/review-signal.corpus.test.ts
  • packages/backend/src/services/pr-review/telemetry/render.test.ts
  • packages/backend/src/services/pr-review/telemetry/render.ts
  • packages/domain/src/http/pr-review.test.ts
  • packages/domain/src/http/pr-review.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@maple-review-bot

maple-review-bot Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Maple review

🟡 Confidence 6/10 · needs attention
Confidence and publication logic is sound and pinned by the domain and service tests; only the telemetry rendering change and one exemption branch ship untested. The 46 corpus fixture JSONs and `apps/…
3 warnings −3 · 1 note · tests partial −1 · risk medium · 1/1 new units observable · 48 files not read

Folds earlier review summaries away with GitHub minimizeComment, trims the posted comment (evidence moves to the check run), and caps confidence for open defect warnings and for pull requests whose defects were fixed. The logic is sound. The 46 corpus fixture JSONs and apps/ai/package.json were not read line by line.

  • hideEarlierComments minimizes the App's older review comments as outdated after each publish
  • The comment keeps the confidence line and findings; checked, coverage and telemetry detail move to the check run
  • An open correctness or performance warning caps confidence at 6, a security warning at 4
  • Each defect fixed on the pull request holds later reviews at 8

Before merge

  • Manual · Confirm the prd GitHub App installation grants pull_requests: write, so minimizeComment is allowed; a refusal only leaves earlier comments open

Findings

🟠 Warning · F1 · The close-out exemption of the new submit-review length refusal (`partial

tests · apps/ai/src/chat/tools.test.ts:471

refusedLong` in `tools.ts:501`) has no test
🟠 Warning · F2 · The new groupIssues summation, the (N issues) row suffix and the details no longer being open have no test

tests · packages/backend/src/services/pr-review/PrReviewService.test.ts:1765

every linkedIssues fixture in the suite is empty (telemetry/render.test.ts:70,312, PrReviewService.test.ts:316), so two fingerprints sharing title, service and file could render as two rows again, or sum occurrences wrongly, with the suite green

render a report whose telemetry has two linked issues with the same title/service/path and assert one row, `(2 issues)` and the summed `occurrences` on the check summary
🟠 Warning · F3 · Brief rendering of telemetry (renderTelemetryMarkdown brief early return) is untested: no assertion covers the comment dropping the traffic table, added/removed spans and log cost notes while the …

tests · packages/backend/src/services/pr-review/PrReviewService.test.ts:1781

the comment assertions only use a report with coverage, no hotFiles/added/removed/costNotes, so the brief branch could be deleted or a ### Production impact section could start appearing in the comment undetected

add a telemetry fixture with hot files, added spans and a `log` cost note, then assert the check contains them and the comment does not
🔵 Note · F4 · renderTelemetryMarkdown's brief cut is asserted against no telemetry

tests · packages/backend/src/services/pr-review/PrReviewService.test.ts:1781-1786

Nothing asserts that a log cost note, the traffic table or added/removed spans disappear from the comment while staying on the check run, so dropping a brief guard would silently put the noise back and nothing fails.

Render one input with hot files, an added span and a `log` cost note through both `renderCheckSummary` and `renderSummaryComment`, and assert those sections appear only in the check.
🤖 Prompt to fix all 4 findings with an AI agent
Findings from an automated review of commit af21af75022035591881b44173a3364df455f0c4. Verify each one against the current code before changing anything, fix only those that still apply, and keep each fix to the lines it names.

---

F1 · Warning · tests · apps/ai/src/chat/tools.test.ts:471
The close-out exemption of the new submit-review length refusal (`partial
Suggested fix: refusedLong` in `tools.ts:501`) has no test

---

F2 · Warning · tests · packages/backend/src/services/pr-review/PrReviewService.test.ts:1765
The new `groupIssues` summation, the `(N issues)` row suffix and the `details` no longer being `open` have no test
every `linkedIssues` fixture in the suite is empty (`telemetry/render.test.ts:70,312`, `PrReviewService.test.ts:316`), so two fingerprints sharing title, service and file could render as two rows again, or sum occurrences wrongly, with the suite green
Suggested fix: render a report whose telemetry has two linked issues with the same title/service/path and assert one row, `(2 issues)` and the summed `occurrences` on the check summary

---

F3 · Warning · tests · packages/backend/src/services/pr-review/PrReviewService.test.ts:1781
Brief rendering of telemetry (`renderTelemetryMarkdown` `brief` early return) is untested: no assertion covers the comment dropping the traffic table, added/removed spans and log cost notes while the …
the comment assertions only use a report with `coverage`, no `hotFiles`/`added`/`removed`/`costNotes`, so the `brief` branch could be deleted or a `### Production impact` section could start appearing in the comment undetected
Suggested fix: add a telemetry fixture with hot files, added spans and a `log` cost note, then assert the check contains them and the comment does not

---

F4 · Note · tests · packages/backend/src/services/pr-review/PrReviewService.test.ts:1781-1786
`renderTelemetryMarkdown`'s `brief` cut is asserted against no telemetry
Nothing asserts that a `log` cost note, the traffic table or added/removed spans disappear from the comment while staying on the check run, so dropping a `brief` guard would silently put the noise back and nothing fails.
Suggested fix: Render one input with hot files, an added span and a `log` cost note through both `renderCheckSummary` and `renderSummaryComment`, and assert those sections appear only in the check.

Production impact

Production traffic of the changed files (last 7 days)
File Calls/day Busiest operations
packages/backend/src/services/integrations/vcs/vendor/github/GithubAppClient.ts 112 GithubAppClient.listReviewComments 82/day, 0.0% err
POST /graphql 15/day, 0.0% err
POST /api/graphql 15/day, 0.0% err
Telemetry this change adds and removes (4)
  • ➕ attribute maple.pr_review.overlong_findings · apps/ai/src/chat/tools.ts:507
  • ➕ attribute maple.pr_review.record_outcome · apps/ai/src/chat/tools.ts:590
  • ➕ span name GithubAppClient.minimizeEarlierComments · packages/backend/src/services/integrations/vcs/vendor/github/GithubAppClient.ts:1461
  • ➕ attribute maple.pr_review.earlier_comments_hidden · packages/backend/src/services/pr-review/PrReviewService.ts:2893
What was checked
  • Arr.chunksOf keeps nodes(ids:) under GitHub's 100-id limit, and isMinimized === false skips comments already hidden
  • priorDefects counts only resolved or this-round-fixed defects; dismissed findings are excluded (PrReviewService.ts:2626)
  • The hide step cannot lose the review: it runs after publish and its failure is a logged warning (PrReviewService.ts:2873–2893)
Observability coverage: 1 of 1 changes observable
Change Kind Observable Evidence
GithubAppClient.minimizeEarlierComments (issue-comment list, comment states, minimizeComment mutations) outbound call yes Effect.fn("GithubAppClient.minimizeEarlierComments") span; the caller records maple.pr_review.earlier_comments_hidden and logs a warning on refusal (PrReviewService.ts:2880)
Files not reviewed (48)

The review ended before it read these diffs, so nothing above vouches for them.

  • apps/ai/package.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/labels.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1916.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1918.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1919.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1920.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1922.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1923.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1924.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1925.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1926.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1927.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1928.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1929.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1930.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1932.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1933.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1934.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1935.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1936.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1937.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1938.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1940.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1941.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1943.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1944.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1945.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1946.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1947.json
  • packages/backend/src/services/pr-review/__fixtures__/review-signal/maple-1948.json
  • and 18 more

af21af7 · Updated on every push. Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.

@maple-review-bot maple-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

3 inline notes from Maple's review. The score and summary are in the review comment above.

Comment thread apps/ai/src/chat/tools.test.ts Resolved
CodeQL read visibleText's single-pass tag and comment removal as an incomplete HTML sanitizer.
It only counts characters for the eval, but repeating each removal to a fixpoint is what the
measure means anyway.
@maple-review-bot

maple-review-bot Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Maple review

🟡 Confidence 6/10 · needs attention
The late corpus change measures identically (329,544 chars either way); the three earlier warning findings on tools.ts and PrReviewService.test.ts stay open.
3 warnings −3 · 1 note · tests partial −1 · risk medium

The head commit keeps the corpus text measure repeating each markup strip until the text stops changing; I re-ran it over all 280 fixture comments and every count is identical. The one file changed since the last round is clean, but the three test-gap warnings from that round are still open.

  • visibleText repeats each strip until the text stops changing

Before merge

  • Manual · Confirm on a real pull request that the App may minimize its own comments; hideEarlierComments only logs a refusal

Still open from earlier reviews

Production impact

Production traffic of the changed files (last 7 days)
File Calls/day Busiest operations
packages/backend/src/services/integrations/vcs/vendor/github/GithubAppClient.ts 112 GithubAppClient.listReviewComments 82/day, 0.0% err
POST /graphql 15/day, 0.0% err
POST /api/graphql 15/day, 0.0% err
Telemetry this change adds and removes (4)
  • ➕ attribute maple.pr_review.overlong_findings · apps/ai/src/chat/tools.ts:507
  • ➕ attribute maple.pr_review.record_outcome · apps/ai/src/chat/tools.ts:590
  • ➕ span name GithubAppClient.minimizeEarlierComments · packages/backend/src/services/integrations/vcs/vendor/github/GithubAppClient.ts:1461
  • ➕ attribute maple.pr_review.earlier_comments_hidden · packages/backend/src/services/pr-review/PrReviewService.ts:2893
What was checked
  • Ran old and new visibleText over all 280 fixture comments: both 329,544 chars, so the recursive strip changes nothing
  • Grepped every test for brief: true and (N issues): neither is asserted, so F2–F4 still stand
  • scoreCase still reads every published summary back; the corpus's own factors-drift test covers it

da0abe9 · Updated on every push. Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.

…e close-out length exemption

Addresses F1 to F3 of the review: open errors with one title fold into a summed row and are no
longer expanded, the comment keeps only breaks and open errors while the check keeps traffic, the
telemetry inventory and log costs, and a close-out is never refused for length.
@maple-review-bot

maple-review-bot Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Maple review

🟢 Confidence 10/10 · safe to merge
Test-only diff; every assertion matches the code it pins (MAX_LENGTH_REFUSALS = 4, overlongFinding wording, formatCount rounding).
no findings · tests covered · risk low

Third commit adds the tests the earlier rounds asked for: the length-refusal cap, the close-out exemption and the once-only submit refusal, plus issue grouping and the brief comment section. Test-only, no production code touched.

Fixed since the last review

  • ✅ F1 · The close-out exemption of the new submit-review length refusal (`partial
  • ✅ F2 · The new groupIssues summation, the (N issues) row suffix and the details no longer being open have no test
  • ✅ F3 · Brief rendering of telemetry (renderTelemetryMarkdown brief early return) is untested: no assertion covers the comment dropping the traffic table, added/removed spans and log cost notes while the …
  • ✅ F4 · renderTelemetryMarkdown's brief cut is asserted against no telemetry

Production impact

Production traffic of the changed files (last 7 days)
File Calls/day Busiest operations
packages/backend/src/services/integrations/vcs/vendor/github/GithubAppClient.ts 112 GithubAppClient.listReviewComments 82/day, 0.0% err
POST /graphql 15/day, 0.0% err
POST /api/graphql 15/day, 0.0% err
Telemetry this change adds and removes (4)
  • ➕ attribute maple.pr_review.overlong_findings · apps/ai/src/chat/tools.ts:507
  • ➕ attribute maple.pr_review.record_outcome · apps/ai/src/chat/tools.ts:590
  • ➕ span name GithubAppClient.minimizeEarlierComments · packages/backend/src/services/integrations/vcs/vendor/github/GithubAppClient.ts:1461
  • ➕ attribute maple.pr_review.earlier_comments_hidden · packages/backend/src/services/pr-review/PrReviewService.ts:2893
What was checked
  • overlongFinding builds path:line "title": its body is N words, over 60, so tools.test.ts:450-451,492 pin the real message
  • MAX_LENGTH_REFUSALS = 4 in tools.ts:379 matches the four refusals then success at tools.test.ts:467
  • groupIssues sums 3×4,600 to 14k and 1,500 to 1.5k per formatCount (analyze.ts:414)

346cd13 · Updated on every push. Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.

@Makisuo
Makisuo merged commit 3a5ccb7 into main Oct 30, 2026
36 checks passed
@Makisuo
Makisuo deleted the fix/pr-review-signal branch October 30, 2026 15:32
@maple-review-bot

Copy link
Copy Markdown

Maple: after this shipped

✅ Shipped clean. Nothing this change touches got worse in the hour after it deployed.

Deployed to electric-sync (production) at 2026-10-30 15:43 UTC as 3a5ccb7. Compared the 60 minutes before and after.

Operation Calls/h Errors p95
GithubAppClient.listReviewComments 2 → 5 0.0% → 0.0% 407 → 641 ms
POST /graphql 0 → 2 0.0% → 0.0% 0 → 0 ms
POST /api/graphql 0 → 2 0.0% → 0.0% 0 → 0 ms

Maple looks once, an hour after the first deploy that carries the merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants