모든 풀 리퀘스트를 프로덕션과 대조해 리뷰하세요

Maple은 diff를 그것이 닿는 트레이스, 오류, CI 실행과 나란히 읽고, 머지 전에 코멘트하며, 배포 후 다시 확인합니다.

화면

프로덕션을 본 리뷰어

푸시마다 요약 코멘트, 인라인 리뷰, 체크 런이 하나씩 달립니다. 지적은 변경한 줄 뒤의 트래픽, 오류, 알림을 근거로 하고, Code Review는 모든 저장소에서 무엇을 잡았는지 기록합니다.

Code Review analytics: pull requests reviewed and issues caught per day, with the repositories that had the most issues
/code-review acme · 41 PRs reviewed · 30d
writes
summary comment · inline review · check run
lenses
correctness · security · performance · observability · tests
reads
traces · open errors · alerts · dashboards
blocks
telemetry an alert or dashboard reads
after
production, an hour after the deploy
rules
org defaults · repo overrides

움직임

풀 리퀘스트에 달리는 것

Maple 자체 저장소의 실제 리뷰입니다. 이유가 붙은 신뢰도 점수, diff에서 찾은 배포 단계, 파일과 줄이 붙은 지적, 변경된 코드의 프로덕션 트래픽.

MapleTechLabs/maple #1531 AI tab and email preferences with a local send schedule
maple-review-bot bot updated on push a05c12f
6/10 needs attention quality 88/100

Digest scheduling is pure, read end to end and well tested; the AI key panel now loses its only Remove path for a lapsed add-on.

tests partialrisk medium2/2 new units observable
  • Digest subscribers gain send_hour plus day/hour/timezone scheduling
  • isDigestDue claims a row only inside the subscriber’s local send window
  • AI provider and auto-triage merge into one AI settings tab

Before merge

Migration · Check it is safe on production data and with the code still deployed packages/db/drizzle/20261017080931_digest_send_hour/migration.sql

Findings

Warning F2 correctness
Lapsed add-on leaves the saved OpenRouter key with no way to remove it apps/web/src/components/settings/ai-provider-section.tsx:179-181

OpenRouterKeyPanel returns AddOnUpsell before the saved-key branch whenever the add-on lapses, so the only Remove call site is unreachable. Pass onRemove down and keep the saved-key row next to the add-on button.

Note F1 Save is a silent no-op for a user with no primary email still open

Production impact · last 7 days

changed file calls/day
services/digest/WebAnalyticsDigestService.ts 235

Observability coverage: 2 of 2 changes observable

a05c12f Reply “won’t fix” to dismiss a finding, or mention @maple-review-bot to ask about one.

CI 관측성

모든 워크플로 실행이 트레이스가 됩니다

CI 트레이스를 켜면 GitHub Actions의 각 실행이 러너 대기 시간을 포함한 잡과 스텝의 워터폴로 들어옵니다. CI가 왜 빨간지, 어떤 워크플로가 계속 실패하는지, 빌드가 느려지고 있는지 확인하세요.

The Code Review CI tab: runs, success rate, run time and runner wait against the previous week, with the failing workflow and its last green commit
A failed CI run as a trace: runner waits, jobs and steps, with the failing test shard marked
/traces/:id 실패한 스텝을 실행의 트레이스에서
A pull request's review sheet: outcome, confidence, quality, summary, key changes and before-merge steps
/code-review/pull-requests 한 풀 리퀘스트의 리뷰와 CI 실행
MapleTechLabs/maple #1524 merged Address audit findings across settings and billing
maple-review-bot bot an hour after the deploy

After this shipped

Shipped clean Nothing this change touches got worse in the hour after it deployed.
service maple-api env production sha d6a5ade at Oct 17, 00:23 UTC window 60 min before vs after
operation calls/h errors p95
POST /mcp 207 → 218 0.0% → 0.0% 648 → 547 ms
GET /mcp 5 → 11 0.0% → 0.0% 112 → 85 ms

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

머지 후

리뷰는 머지로 끝나지 않습니다

배포 한 시간 뒤, Maple은 전후 한 시간을 비교해 풀 리퀘스트에 코멘트합니다. 문제없이 배포됐는지, 무엇이 들어오지 않게 됐고 어떤 오류가 새로 생겼는지.

모든 트레이스에 커밋 맥락
스팬의 커밋 SHA가 메시지, 작성자, GitHub 링크로 연결됩니다.
배포 마커
메트릭 변화가 원인이 된 배포와, 함께 배포된 커밋에 맞춰집니다.
풀 리퀘스트로 이슈 닫기
PR을 오류 이슈에 연결하세요. 머지 후 오류가 멈추면 Maple이 이슈를 닫습니다.

할 수 있는 일

GitHub App 하나로 전체 루프를

github.app
한 번 설치로 모든 저장소
설치 후 이력은 백그라운드에서 채워집니다. 저장소마다 추적할 브랜치를 하나 고르세요.
pull_request
푸시마다 리뷰
요약 코멘트, 인라인 리뷰, 체크 런. “won't fix”로 답하면 지적을 닫고, 봇을 멘션하면 질문할 수 있습니다.
before_merge
diff에서 찾은 배포 단계
시크릿, 환경 변수, 마이그레이션, 인프라 변경이 체크리스트가 됩니다. 체크하지 않고 머지하면 Maple이 알려 줍니다.
telemetry.contract
텔레메트리를 깨면 체크가 실패
알림이나 대시보드가 읽는 스팬, 속성, 메트릭을 지우는 변경은 배포 전에 지적됩니다.
workflow_run
트레이스로 보는 CI 실행
잡과 스텝을 하나의 워터폴로. 러너 대기 시간, 실패율, 워크플로별 연속 실패까지 보여 줍니다.
ci_runs()
에이전트도 CI를 읽습니다
MCP 도구가 “CI가 왜 빨간가”, “이 커밋에서 CI가 통과했나”, “빌드가 느려지고 있나”에 답합니다.
read_source_file()
배포된 커밋의 소스
에이전트는 오늘의 main이 아니라 프로덕션에서 실행 중인 코드를 읽습니다.
review.rules
조직 기본값, 저장소별 재정의
관점, 드래프트, 인라인 코멘트, 일일 한도를 저장소별로 정합니다. 팀이 닫은 지적에서 학습합니다.

다음은

이 데이터를 공유하는 화면

OTLP를 Maple로 보내세요.

엔드포인트 하나, 키 하나. 트레이스·로그·메트릭·세션이 첫 요청부터 같은 트레이스 ID로 모입니다.