From e04014a08a60a4d7a17a23adc05339e395ac6805 Mon Sep 17 00:00:00 2001 From: Thiago Gonzaga Date: Sat, 15 Aug 2026 23:16:28 +0000 Subject: [PATCH 1/3] docs(changelog): write the 0.6.3 section --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17c7120b..3aa0d3ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,24 @@ All notable changes to ThrillhouseBot. ## [Unreleased] +## [0.6.3] — 2026-08-15 + +Follow-ups from the round-7 dogfood corpus, on two surfaces: the GitHub write +path, and what a review says about its own work. A comment GitHub throttles is +now outlasted and its refusal explained, a finding whose inline comment cannot +land keeps a working review thread, and a review can no longer claim coverage +or closures its audit never made. The docs site also deploys itself on +release. No configuration changes; upgrading is a redeploy. + +### Fixed + +- **A comment GitHub refuses is outlasted, and the refusal reason reaches the log** (#722): the content-creation secondary limit was measured blocking for 72 seconds while the write retry's budget spanned 60, and both ways of deriving a delay without a `Retry-After` undershot it — the linear fallback summed to 30 seconds, and a stale `x-ratelimit-reset` yielded zero, spending every attempt while GitHub was still refusing. The retry now makes four attempts and floors a derived delay at 30 seconds during a content-creation block; an explicit `Retry-After` still wins outright, and a genuinely exhausted primary window keeps its own reset instant. Every rejection now logs GitHub's status and message at warning level, so a throttle is distinguishable from a rejected position — the round that motivated this left 29 rejections undiagnosable and blamed line anchoring for them. When the with-suggestion and without-suggestion attempts fail differently, both reasons are kept +- **A finding whose inline comment cannot land posts a file-level thread, not a bare bullet** (#712): the bullet carried no code context, no suggestion block and no review thread, and everything thread-dependent died with it — the finding could not be declined, a status note had nowhere to land, and clearing it acknowledged a count rather than a name. The suspected anchoring defect was ruled out: the same file and line posted successfully at the same commit, which is what pointed to the throttle above +- **An overturned decline is disclosed on every review body, and a round names the findings it closed** (#713, #714): the note explaining that a decline was overturned on diff evidence rode only the no-new-findings body, so a round that also raised a finding dropped it, and a maintainer who wrote a considered decline could not tell whether it was read, rebutted, or missed. The note now rides the with-findings bodies too, above the partial-coverage banner. The resolved tally likewise names each finding it closed instead of reporting a bare count +- **Verification coverage counts only the verdicts the audit acted on** (#710): the coverage record asked whether some verdict carried a finding's id, but `apply()` acts only on `confirmed`, `downgraded` and `rejected` — a blank or unrecognized verdict falls open and the finding posts unscreened. Such findings were counted as screened anyway, so a review could claim full verification over a set it never ruled on. One decision normalizer now feeds both the switch and the count, and an unrecognized verdict counts as unverified, which errs toward an over-cautious clause rather than silence +- **The verifier sees the PR description it judges description-gap findings against** (#711, first part): a finding weighing the author's stated intent against the code had half its claim in material the verifier never received, and the verifier's own prompt tells it to reject a claim whose material is missing — so survival came down to whether the model noticed the absence. Five planted description-versus-code mismatches split three kept, two rejected, on identical grounds. The verifier now receives the PR title and description under the same untrusted-data fencing the reviewer uses +- **The docs site deploys itself on release** (#717): the `release: published` trigger in `docs.yml` has fired zero times in the repository's history, because the release is created with the workflow's own `GITHUB_TOKEN` and GitHub starts no workflows for events that token raises — every site deploy through v0.6.2 was manual. `release.yml` now dispatches the docs build against the release tag once the release exists, gated on `update_latest` so a patch cut on an older line does not republish the site; the job fails loudly when the dispatch is refused + ## [0.6.2] — 2026-08-14 Follow-ups to the review threads on 0.6.1, plus the first piece of the release From 41cdf58995138c9eded89cf3b57cfa98777083aa Mon Sep 17 00:00:00 2001 From: Thiago Gonzaga Date: Sat, 15 Aug 2026 23:19:27 +0000 Subject: [PATCH 2/3] docs(site): freeze the 0.6.2 docs version Snapshot taken from the v0.6.2 tag per docs/RELEASING.md, so the archived pages carry that release's expanded includes rather than the working tree's. current.label moves to v0.6.3 for the version being cut. Refs #715 --- website/src/assets/0.6.2/icon.png | Bin 0 -> 34512 bytes website/src/assets/0.6.2/live-streaming.png | Bin 0 -> 192704 bytes website/src/assets/0.6.2/pr-approval.png | Bin 0 -> 83787 bytes .../src/content/docs/0.6.2/architecture.md | 296 +++++++++++ website/src/content/docs/0.6.2/commands.md | 96 ++++ website/src/content/docs/0.6.2/comparison.md | 89 ++++ .../src/content/docs/0.6.2/configuration.md | 470 ++++++++++++++++++ .../src/content/docs/0.6.2/contributing.md | 137 +++++ website/src/content/docs/0.6.2/feedback.md | 93 ++++ .../src/content/docs/0.6.2/getting-started.md | 125 +++++ website/src/content/docs/0.6.2/index.md | 78 +++ website/src/content/docs/0.6.2/providers.md | 30 ++ website/src/content/versions/0.6.2.json | 40 ++ website/versions.json | 6 +- 14 files changed, 1459 insertions(+), 1 deletion(-) create mode 100644 website/src/assets/0.6.2/icon.png create mode 100644 website/src/assets/0.6.2/live-streaming.png create mode 100644 website/src/assets/0.6.2/pr-approval.png create mode 100644 website/src/content/docs/0.6.2/architecture.md create mode 100644 website/src/content/docs/0.6.2/commands.md create mode 100644 website/src/content/docs/0.6.2/comparison.md create mode 100644 website/src/content/docs/0.6.2/configuration.md create mode 100644 website/src/content/docs/0.6.2/contributing.md create mode 100644 website/src/content/docs/0.6.2/feedback.md create mode 100644 website/src/content/docs/0.6.2/getting-started.md create mode 100644 website/src/content/docs/0.6.2/index.md create mode 100644 website/src/content/docs/0.6.2/providers.md create mode 100644 website/src/content/versions/0.6.2.json diff --git a/website/src/assets/0.6.2/icon.png b/website/src/assets/0.6.2/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e523b0749cfd782669a484f4cc60dfc368617c77 GIT binary patch literal 34512 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
    Ih{elqIVAcTUsV$DyCttdhJV&fON8Hl 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 z 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 literal 0 HcmV?d00001 diff --git a/website/src/assets/0.6.2/pr-approval.png b/website/src/assets/0.6.2/pr-approval.png new file mode 100644 index 0000000000000000000000000000000000000000..1767740c3f58da2d54c19b9bb4e7f80c622642a0 GIT binary patch literal 83787 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 N1(R2k%a$?m`5(u42hacj literal 0 HcmV?d00001 diff --git a/website/src/content/docs/0.6.2/architecture.md b/website/src/content/docs/0.6.2/architecture.md new file mode 100644 index 00000000..f7f4144c --- /dev/null +++ b/website/src/content/docs/0.6.2/architecture.md @@ -0,0 +1,296 @@ +--- +slug: 0.6.2/architecture +title: Architecture +description: One-page overview of how the bot is structured and how a review flows through it. +--- + + + + +One-page overview of how the bot is structured and how a review flows through it. + +ThrillhouseBot is a Quarkus application that runs as a GitHub App. A webhook +arrives when a pull request changes, the bot builds a review with an +OpenAI-compatible model, and it posts the result back as a PR review plus a +check run. A dashboard streams what is happening live. + +## Components + +```mermaid +flowchart TB + subgraph GH[GitHub.com] + IN[PR push, /review, @mention] + OUT[PR reviews · check runs · comments] + end + + subgraph BOT[ThrillhouseBot · Quarkus] + WH[webhook/
    WebhookController] + RO[review/
    ReviewOrchestrator] + AI[review/ai/
    AiReviewService] + GHC[github/
    REST clients] + DB[dashboard/ + frontend/] + + WH --> RO --> AI + RO --> GHC + AI -.->|live tokens / review.batch| DB + end + + IN -->|POST /api/webhook
    HMAC-verified| WH + GHC --> OUT +``` + +The `github/` clients wrap the GitHub REST surface the bot uses: installation +tokens, pull diffs and prior reviews, check runs, PR reviews with inline +comments, issue comments, and the instructions-file fallback chain +(`.github/thrillhousebot.md`, `.github/copilot-instructions.md`, `CLAUDE.md`, +`AGENTS.md`, `AGENT.md`). + +## Request flow + +```mermaid +flowchart TD + GH[GitHub: PR opened / synced / comment] -->|webhook| WH[webhook/] + WH -->|verify HMAC, filters, rate limit, 👀 ack| RO[review/ ReviewOrchestrator] + RO -->|fetch diff, instructions, prior findings| GHC[github/ API clients] + RO -->|budget plan · stream or batch| AI[review/ai/ LangChain4j] + AI -->|parse findings| RO + RO -->|verify findings — 2nd AI call per batch, on by default| AI + RO -->|post review + check run| GHC --> GH + AI -.->|live tokens or review.batch| DB[dashboard/ broadcaster] + DB -->|WebSocket| FE[frontend/ Next.js UI] + RO -->|persist session, cost, tokens| PG[(H2 / PostgreSQL)] + AI -->|traces, token & cost metrics| OT[(OpenTelemetry)] +``` + +Automatic triggers (`pull_request` opened / synchronize, and similar) are subject +to `AUTO_REVIEW_MIN_INTERVAL`: if the same PR was auto-reviewed too recently, +the webhook path skips the review silently. Manual `/review` always bypasses that +window. Slash and mention **commands** get a best-effort 👀 reaction before +pause/authorization; conversational `@thrillhousebot` mentions (no command word) +are answered without a reaction. + +## Review lifecycle + +### First review (PR opened) + +```mermaid +sequenceDiagram + actor Dev + participant GH as GitHub + participant TB as ThrillhouseBot + participant AI as AI Provider + + Dev->>GH: git push (PR opened) + GH->>TB: POST /api/webhook (pull_request: opened) + + Note over TB: Verify HMAC → JWT → install token + Note over TB: Auto-review rate limit (skip if within AUTO_REVIEW_MIN_INTERVAL) + + TB->>GH: POST check-runs → status: queued + TB->>GH: PATCH check-run → status: in_progress + + par Fetch context + TB->>GH: GET /pulls/{pr}/files (diff) + TB->>GH: GET /compare/{base}...{head} (regression context) + end + + TB->>GH: GET /pulls/{pr}/reviews (check if already reviewed this SHA) + GH-->>TB: no prior reviews → first run + + Note over TB: DiffBudgetPlanner — single-call or token-budgeted batches + + alt Diff fits one call + TB->>AI: POST chat (diff + base comparison + review prompt) — live tokens to dashboard + AI-->>TB: findings + risk levels + suggestions + opt Findings found and REVIEW_VERIFIER_ENABLED (default) + TB->>AI: POST chat (re-check each finding against the diff) + AI-->>TB: confirmed / downgraded / dropped findings + end + else Large diff — multi-call + loop Each batch in parallel (up to REVIEW_MAX_AI_CALLS − 1) + TB-->>TB: review.batch progress (no per-token stream) + TB->>AI: POST chat (batch diff) + AI-->>TB: batch findings + opt Findings and verifier on + TB->>AI: POST chat (verify batch findings) + end + end + TB->>AI: POST chat (summary rollup of aggregated findings) + AI-->>TB: PR-level summary + previous-findings status + Note over TB: Any files that still won't fit are disclosed by name + end + + alt AI fails + TB->>GH: PATCH check-run → conclusion: failure + TB->>GH: POST comment: retry hint (no internal details) + else AI succeeds + issues found + TB->>GH: POST PR review (REQUEST_CHANGES or COMMENT) with inline suggestions + TB->>GH: PATCH check-run → conclusion: failure (critical/high) or neutral + TB->>GH: POST comment: PR summary (risk table + key findings) + else AI succeeds + zero issues + TB->>GH: POST PR review → APPROVE (no body) + TB->>GH: PATCH check-run → conclusion: success + TB->>GH: POST comment: PR summary (celebration inside) + end +``` + +### Follow-up review (new push) + +```mermaid +sequenceDiagram + actor Dev + participant GH as GitHub + participant TB as ThrillhouseBot + participant AI as AI Provider + + Dev->>GH: git push (PR synchronize) + GH->>TB: POST /api/webhook (pull_request: synchronize) + + Note over TB: Verify → auth → rate limit → create check run (in_progress) + + par Fetch context + TB->>GH: GET /pulls/{pr}/files (diff) + TB->>GH: GET /compare/{base}...{head} + and Fetch prior review + TB->>GH: GET /pulls/{pr}/reviews (find ThrillhouseBot's last review) + GH-->>TB: previous findings + thread status + end + + Note over TB: Prompt includes diff + prior findings + "check if each was addressed" + Note over TB: Same single-call or map-reduce path as first review + + TB->>AI: POST chat (one or more review calls ± verifier ± summary) + AI-->>TB: resolved / unresolved / new findings + + alt AI fails + Note over TB: Same sanitized error path as first review + else AI succeeds + TB->>GH: POST PR review (suggestions for unresolved + new issues) + TB->>GH: PATCH check-run → conclusion based on risk + Note over TB: No summary comment on follow-up (only on first run) + end +``` + +### Manual trigger (`/review` or `@Thrillhousebot review`) + +```mermaid +sequenceDiagram + actor Dev + participant GH as GitHub + participant TB as ThrillhouseBot + + Dev->>GH: Comments "/review" + GH->>TB: POST /api/webhook (issue_comment: created) + + Note over TB: Verify → parse trigger → 👀 ack (bounded wait) → auth + Note over TB: Manual /review bypasses AUTO_REVIEW_MIN_INTERVAL + Note over TB: Fetch diff, compare, and prior reviews + Note over TB: Full re-review even if this SHA was already reviewed +``` + +### Conversational reply (`@thrillhousebot` mention) + +```mermaid +sequenceDiagram + actor Dev + participant GH as GitHub + participant TB as ThrillhouseBot + + Dev->>GH: Mentions @thrillhousebot (in a PR thread or finding reply) + GH->>TB: POST /api/webhook (pull_request_review_comment or issue_comment: created) + + Note over TB: Bot-loop guard → mention detected (no command) → ACK 200 + Note over TB: No 👀 reaction — conversational mentions are answered, not reacted to + Note over TB: Async on review executor: authorize (write access) + Note over TB: Build threaded prompt (finding + diff hunk + thread) + TB->>GH: POST reply in the review thread (or a PR comment) +``` + +## Packages + +| Package | Responsibility | Notable classes | +|---|---|---| +| `webhook/` | Receives GitHub events, verifies the HMAC signature, decides whether an event triggers a review (trigger filters, per-PR pause state, auto-review rate limit), acks slash/mention commands with 👀, runs the comment commands (`/help`, `/summary`, `/describe`, `/changelog`, `/add-docs`, `/improve`, `/generate-tests`, `/resolve`, `/pause`, `/resume`), and schedules finding-feedback capture on review-thread replies | `WebhookController`, `WebhookVerifier`, `TriggerDetector`, `ReviewTriggerFilter`, `AckReactionService`, `CommentCommandService`, `PrPauseService` | +| `review/` | Orchestrates a review: plans the token budget and the per-review spend ceiling, calls the AI layer (single-call or map-reduce), maps findings to a risk level and review state, re-checks a maintainer's decline against the reviewed code, writes the summary comment, optionally labels the PR, answers maintainer replies/mentions in PR threads, and persists maintainer finding feedback (👍/👎 / reply heuristics) for a future learnings pipeline | `ReviewOrchestrator`, `ReviewDispatcher`, `DiffBudgetPlanner`, `FindingPipeline`, `AutoReviewRateLimiter`, `ReviewDiffFormatter`, `FollowUpAnalyzer`, `FindingFeedbackCaptureService`, `FindingFeedbackService`, `PrSummaryGenerator`, `PrLabeler`, `MaintainerReplyService`, `MaintainerReplyDispatcher`, `PrImprovementService`, `PatchCoverage`, `ConfigKeyContextResolver`, `RebuttalContradiction`, `SummarySurfaceDeduplicator`, `VerdictBuilder` | +| `review/ai/` | The LangChain4j layer: streams or batches model responses, parses findings, runs a second pass to verify them, applies generation/reasoning customizers, and writes conversational replies | `PrReviewer`, `AiReviewService`, `ChatModelCustomizers`, `FindingVerifier`, `FindingVerificationService`, `ReviewResponseParser`, `ReplyAssistant`, `TruncatedResponseSalvager`, `FindingVerifierPrompts` | +| `github/` | Talks to the GitHub REST and GraphQL APIs: app auth, pull requests, reviews, check runs, comments, labels, reactions (create + list), and reading the repo instructions file | `GitHubAuthClient`, `GitHubReviewClient`, `GitHubCheckRunClient`, `GitHubLabelClient`, `GitHubReactionClient`, `InstructionsResolver`, `GitHubWriteRetry` | +| `dashboard/` | The live UI backend: OAuth login (in-memory sessions), WebSocket broadcaster (`review.stream` / `review.batch`), review session persistence, and finding-feedback aggregates | `AuthResource`, `DashboardSessionStore`, `SessionEventBroadcaster`, `ReviewSessionRepository`, `DashboardResource` | +| `config/` | Wiring: the outbound HTTP client, the review thread pool, typed config, active-model settings (caps, generation params), fail-fast startup validation, and the shared bot-identity used to recognize the bot's own activity | `HttpClientProducer`, `ReviewExecutorProducer`, `ThrillhouseConfig`, `ActiveModelSettings`, `StartupConfigValidator`, `BotIdentity` | +| `frontend/` | The Next.js dashboard, built to a static export and served by Quarkus | — | + +## Notes + +PR reviews carry inline comments and suggestions; check runs carry pass/fail +status for branch protection (no inline annotations on the check run itself). + +**AI call budget** — a review that reports findings makes **two** model calls +by default: the review call plus a skeptical verification pass +(`FindingVerifier`) that re-sends the diff and each candidate finding, dropping +or downgrading what it can't confirm. It fails open — a verifier error keeps +the original findings, so a broken verifier can never block a review. Under +token-aware budgeting on large PRs this becomes N batch review calls + N +per-batch verification calls + one summary call. `REVIEW_VERIFIER_ENABLED=false` +skips only the AI pass (a deterministic hedging-language guard still runs) and +trades cost for more false positives. Expect two model spans per flagged +single-call review (or N+N+1 under budgeting) in the traces and in the +dashboard's session totals. Multi-call reviews do not stream tokens to the +dashboard; they emit `review.batch` progress events instead. Batches run +concurrently on virtual threads; a failed batch is retried once after the +parallel pass completes. + +**Cost ceiling** — `REVIEW_MAX_TOKENS_PER_REVIEW` bounds the tokens one review may +spend across every call it makes, counting retries, the verifier and the summary. +Once reached, remaining batches are disclosed as not reviewed by name and the +summary degrades to counts rather than making further calls. `0`, the default, +leaves it unbounded. The summary, the verifier and maintainer replies run on a +separate `concise` model binding with its own response cap +(`REVIEW_CONCISE_MAX_OUTPUT_TOKENS`) and its own reasoning effort, so they never +share a cap sized for batch review output. + +**Coverage honesty** — a file the review never read does not pass silently. A +file GitHub reported with changes but no patch text, a file that did not fit any +batch, and a file whose batch call failed are each disclosed by name and withhold +APPROVE. A response the model cut at its length cap keeps the findings that +completed before the cut rather than being discarded whole. + +**Patch coverage as review context** — when a PR's CI publishes a coverage +report, `PatchCoverage` reads the changed lines it does not cover and gives them +to the review, so new code with no test behind it can be named as such. Off +unless `REVIEW_PATCH_COVERAGE_ENABLED` is set. + +**Repository-supplied configuration** — `.github/thrillhousebot.yml` carries a +repository's own ignore globs and path-scoped review instructions, read from the +default branch and cached for five minutes. Ignore globs are additive to the +deployment list; a repository can narrow its own review scope but cannot restore +a file the deployment excludes. Every failure mode (missing file, invalid YAML, +unexpected shape, uncompilable glob) is logged and skipped, leaving the +deployment configuration in force. + +**Write pacing** — content-creating GitHub calls are spaced process-wide by +`GITHUB_WRITE_MIN_INTERVAL` so a burst of comments never reaches the secondary +rate limit in the first place, with `GITHUB_WRITE_MAX_WAIT` capping how long any +one caller waits. + +Each AI call is bounded by `AI_TIMEOUT` (LangChain4j) and +`thrillhousebot.review.ai-timeout-seconds`. Cost and token metrics come from +OpenTelemetry. OAuth login sessions are opaque IDs in cookies with tokens kept +server-side; review history persists in the database. Maintainer finding +feedback (reactions and reply heuristics) is documented in +[Finding feedback](https://devops-thiago.github.io/ThrillhouseBot/feedback/) +(source: [docs/FEEDBACK.md](https://github.com/devops-thiago/ThrillhouseBot/blob/main/docs/FEEDBACK.md)). See +[SECURITY.md](https://github.com/devops-thiago/ThrillhouseBot/blob/main/SECURITY.md) +for the reporting process. + +## Adding an AI provider + +There is no provider-specific code. The model is reached through LangChain4j's +OpenAI-compatible client, so a new provider is configuration: point `AI_BASE_URL` +and `AI_MODEL` at it. Add a `thrillhousebot.ai.pricing..*` pair for cost +tracking (without it the bot warns once and flags sessions as "no pricing" +instead of `$0`). Optionally set `thrillhousebot.ai.models..*` for the +model's input cap and generation parameters, and `AI_REASONING_ENABLED` / +`AI_REASONING_EFFORT` when the model supports reasoning. See the +[provider table](https://devops-thiago.github.io/ThrillhouseBot/providers/) and +the [configuration reference](https://devops-thiago.github.io/ThrillhouseBot/configuration/). + + diff --git a/website/src/content/docs/0.6.2/commands.md b/website/src/content/docs/0.6.2/commands.md new file mode 100644 index 00000000..46cfcb42 --- /dev/null +++ b/website/src/content/docs/0.6.2/commands.md @@ -0,0 +1,96 @@ +--- +slug: 0.6.2/commands +title: Commands +description: Drive the bot directly from a PR with comment commands. +--- + + + +Drive the bot directly from a PR by commenting one of these. Each also accepts the +mention form, e.g. `@Thrillhousebot review`. The bot acknowledges every command +instantly with a 👀 reaction on your comment while the work runs in the background; +a conversational `@thrillhousebot` mention (no command word) gets an answer instead, +not a reaction. + +| Command | What it does | Access | +|---|---|---| +| `/help` | List the available commands | anyone | +| `/review` | Run (or re-run) a full review of the PR | write | +| `/summary` | Post the PR summary if it isn't already on the PR — regenerates it if the comment was deleted, otherwise no-op | write | +| `/describe` | Suggest an improved PR title and description generated from the diff, as a comment to copy in (never overwrites the PR) | write | +| `/changelog` | Draft a CHANGELOG entry for the PR from the diff (Added/Changed/Fixed/Security…), as a comment to copy into `CHANGELOG.md` (never commits) | write | +| `/add-docs` | Generate docstrings/inline docs for the symbols changed in the PR, posted as committable suggestions (or a note with the drafted docs when a multi-line declaration can't be pinned to a single diff hunk) | write | +| `/improve` | Run a whole-PR improvement pass over the diff and post the improvements as committable suggestions (with copy-paste blocks for the ones that can't be pinned to the diff) | write | +| `/generate-tests` | Propose unit tests for the code the PR changed, as a comment with one ready-to-paste code block per test file (never commits) | write | +| `/resolve` | Resolve ThrillhouseBot's outstanding finding threads on the PR | write | +| `/pause` | Silence the bot on the PR | write | +| `/resume` | Re-enable the bot on a paused PR | write | +| `@thrillhousebot resolved :` | Close a previous finding that has no review thread to reply on, so it stops holding approval (see **Clearing a finding with no thread** under Configuration) | write | + +**Access** — every slash command except `/help` requires the commenter to hold write access +to the repository, or to be named in `THRILLHOUSEBOT_REVIEW_MANUAL_TRIGGER_ALLOWED_LOGINS`, +since reviews spend the operator's AI budget. The allowlist covers the slash commands only: +the `@thrillhousebot resolved` directive always requires write access, as described below. + +**`@thrillhousebot resolved`** — a directive, not a slash command: it has no `/resolved` +form, and it is read by the *next* review rather than acted on immediately. The bot replies +straight away to say what that review will evaluate — and, when the comment names no +`path:line` at all, to say plainly that nothing will be cleared, so a mistyped locator shows +up immediately instead of as a review that changes nothing. It is a statement, never a +question: `@thrillhousebot resolved?` is asking, not deciding, and clears nothing. Do not +confuse it with `/resolve`, which resolves GitHub review threads and does nothing to a +finding that never opened one. Its access check is the commenter's GitHub +`author_association` on that comment — `OWNER`, `MEMBER` or `COLLABORATOR` — and +`THRILLHOUSEBOT_REVIEW_MANUAL_TRIGGER_ALLOWED_LOGINS` does *not* extend it. + +**Pause** — while a PR is paused, ThrillhouseBot skips automatic reviews on new commits, +ignores `/review`, `/summary`, `/describe`, `/changelog`, `/add-docs`, `/improve` and +`/generate-tests`, and does not answer `@thrillhousebot` mentions (it replies once to say it is +paused). `/resume` lifts the pause. +`/help` and `/resolve` keep working while paused. + +**`/describe` and `/changelog`** — both read the whole change set rather than the first +`REVIEW_MAX_DIFF_LINES` of it. The changed files are packed into batches that each fit +`REVIEW_MAX_INPUT_TOKENS`, one model call per batch, and the per-batch results are then reduced +to a single answer: `/describe` composes the partial descriptions into one coherent title and +description, `/changelog` merges the candidate entries into one entry. That reduce step costs one +extra model call, reserved out of `REVIEW_MAX_AI_CALLS` and spent only when the PR actually needed +more than one batch, so a run never exceeds the same ceiling as one review. Any file the budget +could not cover is named in a partial-coverage note under the suggestion. + +**`/add-docs`** — on demand, the bot reads the diff and proposes documentation comments for +the public symbols changed in the PR, honoring the repository instructions and each file's +language. Each suggestion is a committable `suggestion` block placed on the symbol's +declaration (spanning the whole signature when it wraps), so it only inserts docs without +rewriting code. When a multi-line declaration can't be pinned to a single diff hunk, the bot +posts a note with the drafted docs to add manually instead of a committable suggestion. It +spends AI budget per run; operators can turn it off with `REVIEW_ADD_DOCS_ENABLED=false`. + +**`/improve`** — on demand, the bot runs an improvement pass over the whole PR and proposes +concrete changes the author can commit: clearer naming, dead or duplicated code, simpler +control flow, missing error handling, avoidable work in loops, and gaps in the tests covering +the change. It is deliberately separate from `/review`: `/review` looks for defects, +`/improve` proposes better code even when nothing is broken. Like a review, the pass is +token-budgeted rather than line-capped: the changed files are packed into batches that each fit +`REVIEW_MAX_INPUT_TOKENS`, one model call per batch, so a long diff only loses coverage once it +exceeds the whole budget. Each improvement whose quoted code anchors onto the diff is posted as +an inline committable `suggestion` block on the lines it replaces; the rest are listed as +copy-paste blocks in the run's summary comment, together with a partial-coverage note naming +any file the budget could not cover. Nothing is ever committed for you. It spends AI budget per +run — at most `REVIEW_MAX_AI_CALLS` model calls, the same ceiling as one review — and operators +can turn it off with `REVIEW_IMPROVE_ENABLED=false`. + +**`/generate-tests`** — on demand, the bot reads the diff and proposes unit tests for the +behavior the PR added or changed, in the test framework the project already uses. A proposed +test is usually a whole new file, which has no diff line for GitHub to anchor a committable +`suggestion` block to, so each one is posted as a code block headed by the path it belongs at +— ready to paste into a new file, or to merge into an existing test file. Nothing is committed +and no file is edited. Like a review, the pass is token-budgeted rather than line-capped: the +changed files are packed into batches that each fit `REVIEW_MAX_INPUT_TOKENS`, one model call +per batch, and the per-batch proposals are unioned by path — so "nothing here warrants a test" +is never a verdict on code that was too far down a long diff to be read. Any file the budget +could not cover is named in a partial-coverage note. It spends AI budget per run — at most +`REVIEW_MAX_AI_CALLS` model calls, the same ceiling as one review — and operators can turn it +off with `REVIEW_GENERATE_TESTS_ENABLED=false`. + + diff --git a/website/src/content/docs/0.6.2/comparison.md b/website/src/content/docs/0.6.2/comparison.md new file mode 100644 index 00000000..51e6c96e --- /dev/null +++ b/website/src/content/docs/0.6.2/comparison.md @@ -0,0 +1,89 @@ +--- +slug: 0.6.2/comparison +title: How it compares +description: An honest look at where ThrillhouseBot sits next to other AI code-review tools. +--- + + + + +A quick, honest look at where ThrillhouseBot sits next to other AI code-review +tools. Facts verified June 2026 from the sources linked below; vendor +capabilities change, so check the source if a detail matters to you. + +The table covers ThrillhouseBot, [CodeRabbit][cr], the open-source +[PR-Agent][pra], [GitHub Copilot code review][cop], the [PRSense][prs] CLI, and +[Kit][kit] (cased-kit). PR-Agent's commercial hosted sibling, Qodo Merge, is +left out because its self-hosting and model details sit behind enterprise sales +and could not be verified from public docs. PRSense and Kit are included because +they overlap on self-hosting and bring-your-own-model workflows; they differ in +how reviews are triggered and how cost visibility is surfaced. + +| | ThrillhouseBot | CodeRabbit | PR-Agent | Copilot review | PRSense | Kit | +|---|---|---|---|---|---|---| +| License | Apache-2.0 | Proprietary | Apache-2.0 [^pra-lic] | Proprietary | Apache-2.0 [^prs-lic] | MIT [^kit-lic] | +| Self-host | Yes | Enterprise only, 500+ seats [^cr-sh] | Yes | Models no; self-hosted runners yes [^cop-run] | Yes (CLI) [^prs] | Yes (CLI / Actions) [^kit] | +| Bring your own model | Any OpenAI-compatible endpoint | Yes: OpenAI, Azure OpenAI, Bedrock, Anthropic [^cr-llm] | Yes, via OpenAI-compatible / LiteLLM | No, GitHub-managed | Yes [^prs] | Yes [^kit] | +| Local models (Ollama) | Yes | No [^cr-llm] | Yes, with config caveats | No | Yes [^prs] | Yes [^kit] | +| Cost / token dashboard | Built-in web UI | No | No | GitHub billing only | Token counts in CLI only [^prs] | Per-review cost in CLI [^kit] | +| Footprint | ~50 MB native binary | SaaS or self-hosted container | Python app / container | SaaS plus Actions minutes [^cop-bill] | Node.js CLI [^prs] | Python app [^kit] | +| Cost model | Free; you pay your own API usage | Freemium | Free | Paid [^cop-bill] | Free; you pay your own API usage | Free; you pay your own API usage | + +## Where ThrillhouseBot fits + +Among the tools in the table above, ThrillhouseBot is the only one that combines +a GitHub App (webhook-driven reviews with inline PR comments), a built-in web +dashboard for cost and token analytics, token-budgeted map-reduce reviews for +large PRs, and a small native footprint, all under an OSI-approved license. If you want reviews to run on your own infrastructure +against a local Ollama model so that no code leaves your network, and you want +ongoing cost visibility in a dashboard rather than per-run CLI output, that is +the niche it targets. + +CodeRabbit and Copilot are more polished hosted products with broader reach. +ThrillhouseBot reviews GitHub pull requests only, with no GitLab or Bitbucket +support, and there is no managed hosting option: you run it yourself. + +PR-Agent, PRSense, and Kit are the closest in spirit for self-hosting with your +own model. PR-Agent is the most established open-source GitHub review bot in this +set. PRSense emphasizes grounded findings tied to the diff and ships as a CLI. +Kit adds rich repository context, local diff review, and per-run cost output in +the terminal or CI logs. None of those three ship a GitHub App plus web +dashboard in one package the way ThrillhouseBot does. + +Pick CodeRabbit or Copilot if you want a hosted product and don't need to bring +your own model. Pick PR-Agent, PRSense, or Kit if you prefer CLI or workflow +integration. Pick ThrillhouseBot if you want a GitHub App with automatic reviews, +a live dashboard, and a small native binary. + +[cr]: https://www.coderabbit.ai/ +[pra]: https://github.com/qodo-ai/pr-agent +[cop]: https://docs.github.com/en/copilot/concepts/agents/code-review +[prs]: https://prsense.org/ +[kit]: https://kit.cased.com/pr-reviewer/ + +[^pra-lic]: PR-Agent was moved to a community-owned GitHub organization and + relicensed under Apache-2.0 in April 2026. +[^cr-sh]: CodeRabbit docs: "The self-hosted option is only available for + CodeRabbit Enterprise customers with 500 user seats or more." + <https://docs.coderabbit.ai/self-hosted/github> +[^cr-llm]: Self-hosted CodeRabbit requires your own LLM credentials for OpenAI, + Azure OpenAI, AWS Bedrock, or Anthropic; its docs do not list local models + or Ollama. <https://docs.coderabbit.ai/self-hosted/github> +[^cop-run]: Copilot code review uses GitHub-managed models; you cannot supply + your own. It can run on self-hosted or larger GitHub-hosted runners. + <https://docs.github.com/en/copilot/concepts/agents/code-review> +[^cop-bill]: From June 1, 2026, Copilot code review is billed as AI credits for + token use plus GitHub Actions minutes for the review infrastructure. + <https://github.blog/changelog/2026-04-27-github-copilot-code-review-will-start-consuming-github-actions-minutes-on-june-1-2026/> +[^prs]: PRSense ships as the `@prsense/cli` npm package (Apache-2.0). Reviews + run locally or in CI; output includes token counts but there is no web + dashboard. Supports Ollama and cloud providers. + <https://prsense.org/> · <https://www.npmjs.com/package/@prsense/cli> +[^prs-lic]: `@prsense/cli` is published under Apache-2.0 on npm. +[^kit]: Kit (cased-kit) is a MIT-licensed Python CLI and library. Reviews can + run from the terminal, against local diffs, or from GitHub Actions; each run + reports LLM cost in stdout, not in a separate dashboard. + <https://kit.cased.com/pr-reviewer/> · <https://github.com/cased/kit> +[^kit-lic]: cased-kit is published under MIT on PyPI and GitHub. + + diff --git a/website/src/content/docs/0.6.2/configuration.md b/website/src/content/docs/0.6.2/configuration.md new file mode 100644 index 00000000..4d820ed8 --- /dev/null +++ b/website/src/content/docs/0.6.2/configuration.md @@ -0,0 +1,470 @@ +--- +slug: 0.6.2/configuration +title: Configuration +description: Every environment variable the bot reads, with defaults. +--- + + + +Configuration is read from environment variables (see `.env.example`). Short +names (`AI_*`, `REVIEW_*`, `WEBHOOK_*`, ...) are explicit aliases; every other +`thrillhousebot.*` key is settable through the standard Quarkus env-var mapping +— uppercase with `.`/`-` replaced by `_` (e.g. `thrillhousebot.review.ignored-files` +→ `THRILLHOUSEBOT_REVIEW_IGNORED_FILES`). The AI variables are the ones you +will change per provider: + +| Variable | Purpose | Default | +|---|---|---| +| `AI_API_KEY` | API key for the AI provider | _(required)_ | +| `AI_BASE_URL` | OpenAI-compatible base URL | `https://api.deepseek.com/v1` | +| `AI_MODEL` | Chat model name | `deepseek-chat` | +| `AI_PROVIDER` | Provider label for telemetry (`gen_ai.provider.name`); derived from `AI_BASE_URL` when unset | _(derived)_ | +| `AI_TIMEOUT` | Per-request timeout | `300s` | +| `AI_REASONING_ENABLED` | Send a reasoning hint to reasoning-capable models; when `false` no reasoning parameter is sent and the provider default applies | `false` | +| `AI_REASONING_EFFORT` | Effort sent while enabled: `none`/`low`/`medium`/`high`/`xhigh`/`max` (`none` explicitly asks the model not to reason; `xhigh`/`max` are the extended tiers newer reasoning models expose above `high`); reasoning tokens are billed as output tokens | `low` | +| `AI_REASONING_EFFORT_CONCISE` | Effort for the fixed-shape calls on the `concise` model (final summary, finding verifier, replies), which do **not** follow `AI_REASONING_EFFORT`: reasoning tokens count against `REVIEW_CONCISE_MAX_OUTPUT_TOKENS`, so a high effort there lets the verifier reason its whole allowance away and return an empty response. Same accepted values; unset means `low`, lowered to `AI_REASONING_EFFORT` when that is set below `low` | `low` | +| `GITHUB_APP_ID` | GitHub App ID | _(required)_ | +| `GITHUB_PRIVATE_KEY` | GitHub App private key (PEM) | _(required)_ | +| `GITHUB_WEBHOOK_SECRET` | Webhook HMAC secret | _(required)_ | +| `GITHUB_BOT_LOGINS` | Comma-separated bot account login(s) the bot skips to avoid replying to itself; override when deployed under a different App slug (`<app-slug>[bot]`) | `thrillhousebot[bot],thrillhouse-bot[bot]` | +| `GITHUB_WRITE_MIN_INTERVAL` | Duration spacing two content-creating GitHub calls (comments, review comments, thread replies, reviews), shared process-wide. GitHub secondary-rate-limits rapid content creation and answers `403`; pacing keeps the bot inside that envelope instead of discovering it by rejection — its published guidance is no more than one such request per second. `0` disables pacing | `1s` | +| `GITHUB_WRITE_MAX_WAIT` | Duration ceiling on how long one caller waits for its content-creation slot. Past it the call goes out unpaced and the bounded backoff handles a refusal, so a long queue never parks a finished command | `60s` | +| `WEBHOOK_DEDUP_TTL` | Webhook deduplication time-to-live for GitHub redeliveries | `24h` | +| `THRILLHOUSEBOT_REVIEW_MANUAL_TRIGGER_ALLOWED_LOGINS` | Comma-separated allowlist of logins permitted to run the slash commands without repo access; does not extend to the `@thrillhousebot resolved` directive, which always requires write access | _(empty)_ | +| `MANUAL_TRIGGER_AUTH_TIMEOUT` | Upper bound on the manual-trigger write-access check on the webhook ACK thread; fails closed (denies) if GitHub is slower | `5s` | +| `ACK_REACTION_TIMEOUT` | Upper bound on the 👀 command-ack reaction on the webhook ACK thread; the wait is abandoned (reaction may land late) if GitHub is slower | `3s` | +| `AUTO_REVIEW_MIN_INTERVAL` | Minimum interval between automatic reviews of the same PR — pushes within the window are skipped silently, even on a new head SHA (in-memory, per replica). A manual `/review` always bypasses; unset or `0` reviews every push | `0` (disabled) | +| `REVIEW_CI_GATING` | How strictly CI status factors into APPROVE: `strict` holds approval while required CI is pending, failing, or unreadable (fail-closed, safest); `warn` allows APPROVE but notes CI uncertainty in the summary/check; `off` skips CI entirely (findings-only). Prefer `strict` unless flaky CI or incomplete required-context resolution makes soft modes necessary | `strict` | +| `WEBHOOK_SKIP_DRAFTS` | Skip auto-review while a PR is a draft (reviewed once marked ready / on later pushes) | `false` | +| `WEBHOOK_REQUIRED_LABELS` | Comma-separated labels; only auto-review PRs carrying at least one (case-insensitive) | _(empty — no gate)_ | +| `WEBHOOK_EXCLUDED_LABELS` | Comma-separated labels; skip auto-review of PRs carrying any (wins over required) | _(empty)_ | +| `WEBHOOK_BASE_BRANCHES` | Comma-separated globs; only auto-review PRs whose base branch matches one (e.g. `main,release/*`). Globs are gitignore-style: `*` does **not** cross `/`, so use `**` to span slashes (`**` alone matches every branch) | _(empty — all branches)_ | +| `WEBHOOK_IGNORED_BASE_BRANCHES` | Comma-separated globs; skip auto-review of PRs whose base branch matches one (wins over allowlist; same `*`/`**` rule — match nested branches with `**`, e.g. `dependabot/**`) | _(empty)_ | +| `REVIEW_VERIFIER_ENABLED` | Second, skeptical AI pass that re-checks each finding against the diff before posting, dropping or downgrading what it can't confirm (see [AI call budget](#ai-call-budget)); fails open — a verifier error keeps the original findings | `true` | +| `REVIEW_DECLINE_RECHECK_ENABLED` | Re-check a maintainer's decline against the reviewed code before a prior finding is recorded "justified" (see [Re-checking declines](#re-checking-declines)); the finding stays open for one more round only when the reviewed diff plainly contradicts the stated reason. `false` makes a maintainer reply close the finding unconditionally | `true` | +| `REVIEW_BLOCKING_STRICTNESS` | When findings escalate to `REQUEST_CHANGES`: `balanced` (CRITICAL/HIGH + HIGH confidence), `strict` (any CRITICAL/HIGH), or `lenient` (CRITICAL + HIGH confidence only). See [Blocking strictness](#blocking-strictness) | `balanced` | +| `REVIEW_CONVERSATIONAL_REPLIES_ENABLED` | Answer `@thrillhousebot` mentions in PR threads (including finding replies) with an AI reply | `true` | +| `REVIEW_ADD_DOCS_ENABLED` | Allow the on-demand `/add-docs` command to generate docstrings as committable suggestions | `true` | +| `REVIEW_IMPROVE_ENABLED` | Allow the on-demand `/improve` command to run a whole-PR improvement pass and post committable suggestions | `true` | +| `REVIEW_GENERATE_TESTS_ENABLED` | Allow the on-demand `/generate-tests` command to propose unit tests for the changed code | `true` | +| `REVIEW_DIAGRAM_ENABLED` | Include an opt-in Mermaid control-flow diagram in the PR summary | `false` | +| `REVIEW_PATCH_COVERAGE_ENABLED` | Feed patch coverage into the review context: the added lines the repository's own coverage report records as never executed (see [Repository configuration](#repository-configuration)). Only takes effect for a repository that names its coverage artifact in `.github/thrillhousebot.yml` | `false` | +| `REVIEW_FOLLOW_UP_SUMMARY_ENABLED` | Post a short delta comment on follow-up reviews with the new-finding, resolved, and still-open counts. Only the first review posts the full summary; a follow-up pass with no delta (nothing new, nothing resolved) posts nothing | `false` | +| `REVIEW_LARGE_PR_NUDGE_ENABLED` | Add a note to the PR summary when a large PR's review opened **no inline finding** — it may be genuinely clean, or the pass may have been shallow — pointing at `/review` and `/improve`. Costs no extra AI call and never changes the verdict; a PR under both thresholds below is unaffected | `false` | +| `REVIEW_LARGE_PR_NUDGE_MIN_FILES` | Changed files at or above which the nudge applies (PR-level total, so ignored files still count). `0` switches this dimension off | `20` | +| `REVIEW_LARGE_PR_NUDGE_MIN_CHANGED_LINES` | Changed lines (additions + deletions) at or above which the nudge applies; either dimension triggers it on its own. `0` switches this dimension off — with both at `0` the nudge never fires | `1000` | +| `REVIEW_MAX_INPUT_TOKENS` | Per-call input-token budget for review, `/improve`, `/describe` and `/changelog` calls; large PRs are split into batches that each fit it. Bounded by the active model's input cap (see [Per-model AI settings](#per-model-ai-settings)). `0` disables token budgeting | `48000` | +| `REVIEW_OUTPUT_BUFFER_TOKENS` | Tokens reserved out of the input budget for the model's response | `8192` | +| `REVIEW_CONCISE_MAX_OUTPUT_TOKENS` | Response cap (`max_tokens`) for the fixed-shape/short AI calls — the final summary of a multi-call review, the finding verifier, and maintainer replies — which run on the `concise` named model so they don't share a cap sized for batch review output (see [Per-model AI settings](#per-model-ai-settings)). Hitting it surfaces as a truncation error naming this variable, never as a silently cut summary; set it empty to drop the cap and use the provider default | `8192` | +| `REVIEW_MAX_AI_CALLS` | Cap on AI calls per review (batch calls plus the final summary call), per `/describe` and `/changelog` run (batch calls plus one reduce call, spent only when the PR needed more than one batch), and per `/improve`, `/generate-tests` or `/add-docs` run (batch calls only — their results are merged locally); files that still don't fit are reported by name as omitted | `6` | +| `REVIEW_TOKEN_SAFETY_MARGIN` | Fraction of the input budget actually used, absorbing token-estimate error | `0.9` | +| `REVIEW_MAX_TOKENS_PER_REVIEW` | Ceiling on the tokens one review may consume across every AI call it makes — actual input+output as the provider reports them, counting retries and the final summary call, where `REVIEW_MAX_AI_CALLS` only counts planned calls. Once reached no further review call is made: remaining batches are disclosed by name as not reviewed (the verdict holds and the summary names the ceiling as the reason) and the summary degrades to a counts-only rendering that keeps the findings already paid for. `0` disables the ceiling. Review path only — the on-demand commands keep their own call cap | `0` | +| `REVIEW_MAX_DIFF_LINES` | Line cap on single-call diff renders (replies, base comparison, budgeting-disabled review). Token-budgeted reviews and the batched commands — `/improve`, `/describe`, `/changelog`, `/generate-tests`, `/add-docs` — ignore it (the planner owns coverage by tokens); `0` disables the cap | `5000` | +| `THRILLHOUSEBOT_REVIEW_MAX_REVIEW_COMMENTS` | Maximum inline comments posted per review; findings over the cap are surfaced in the summary instead of dropped | `50` | +| `THRILLHOUSEBOT_REVIEW_MAX_AI_RETRIES` | Attempts per failed AI call before the review errors out | `5` | +| `THRILLHOUSEBOT_REVIEW_AI_RETRY_BASE_DELAY_MS` | Base delay of the exponential retry backoff, in milliseconds | `2000` | +| `THRILLHOUSEBOT_REVIEW_AI_TIMEOUT_SECONDS` | Client-side wait per AI streaming attempt; keep it >= `AI_TIMEOUT` so timed-out attempts don't leave orphaned provider streams | `300` | +| `THRILLHOUSEBOT_REVIEW_INSTRUCTIONS_FILE` | Repo-relative path of the per-repo instructions file read on each review | `.github/thrillhousebot.md` | +| `THRILLHOUSEBOT_REVIEW_IGNORED_FILES` | Comma-separated gitignore-style globs excluded from review — lockfiles, generated code, build output. `*` does not cross `/`; use `**` to span directories. Replaces (not extends) the default list, so re-include the defaults you still want | `**/pom.xml,**/package-lock.json,**/*.lock,**/*.generated.*,**/target/**` | +| `THRILLHOUSEBOT_REVIEW_REPO_CONFIG_ENABLED` | Let each repository extend the ignore list with globs of its own, scope review rules to a path, and name its coverage-report artifact, from `.github/thrillhousebot.yml` (see [Repository configuration](#repository-configuration)). Both are additive; set `false` to make the deployment list and the global instructions the only ones that count | `true` | +| `REVIEW_LABELS_ENABLED` | Opt in to context-aware PR labels (see [PR labels](#pr-labels)) | `false` | +| `REVIEW_LABELS_APPLY` | When labels are enabled, add them to the PR instead of only suggesting them in a comment | `false` | +| `REVIEW_LABELS_ALLOW_CREATE` | Allow the bot to create suggested labels that don't exist yet | `false` | +| `REVIEW_LABELS_MAX` | Maximum labels applied or suggested per PR | `3` | +| `GITHUB_CLIENT_ID` / `GITHUB_CLIENT_SECRET` | OAuth credentials for dashboard login | _(required for dashboard)_ | +| `DASHBOARD_URL` | Public dashboard URL (OAuth callback base) | `http://localhost:8080` | +| `DATASOURCE_DB_KIND` | `h2` or `postgresql`. Quarkus fixes the datasource kind at build time, so this picks the driver when the app is built, not when a prebuilt image starts — released images are built for PostgreSQL and ignore an `h2` value | `h2` (dev), `postgresql` (`%prod`) | +| `HTTP_CONNECT_TIMEOUT` | Outbound HTTP connect timeout (GitHub API, OAuth) | `10s` | +| `HTTP_REQUEST_TIMEOUT` | Outbound HTTP request timeout (GitHub API, OAuth) | `10s` | +| `WEBSOCKET_KEEPALIVE_MS` | Dashboard WebSocket keepalive interval in ms; `0` or negative disables it (and stale replay-buffer eviction) | `25000` | + +### AI call budget + +A review that reports findings makes **two** model calls by default, not one: +the review call itself plus a verification call that re-sends the diff and the +candidate findings, so budget roughly **2× tokens** per flagged review. On +large PRs under token-aware budgeting this becomes N batch review calls + N +per-batch verification calls + one summary call. Set +`REVIEW_VERIFIER_ENABLED=false` to skip only the AI verifier — cheaper, at the +cost of more false positives; a deterministic hedging guard still runs, and a +verifier failure never blocks the review (it fails open, keeping the original +findings). + +The on-request commands are budgeted the same way. `/improve`, `/describe`, +`/changelog` and `/generate-tests` each split a large PR into batches under +`REVIEW_MAX_INPUT_TOKENS` and spend one call per batch, capped by +`REVIEW_MAX_AI_CALLS`. `/describe` and `/changelog` additionally reserve one call +of that cap for the step that reduces the per-batch results to a single +description or entry, and only spend it when the PR needed more than one batch — +so a single-batch PR still costs exactly one call. `/improve` and +`/generate-tests` reserve nothing, because their reductions are assembled locally +(a union of suggestions, and a union of proposed test files deduplicated by +path). When the cap is reached before every file has been batched, the uncovered +files are named in the partial-coverage note rather than dropped silently. + +### Re-checking declines + +When a maintainer replies to a finding to decline it, the follow-up analysis +records that finding as **justified** and the bot moves on. A dismissal is a +claim, though, not ground truth — a correct finding can be closed by an +incorrect rebuttal, and the rebuttal often names the very mechanism that makes +the bug real ("it only runs after the webhook is acked, so there's no race" — +on an executor that starts a thread per event). + +`REVIEW_DECLINE_RECHECK_ENABLED=true` (the default) therefore traces a decline's +stated reason against the code the review actually saw. When the reviewed diff +**plainly contradicts** that reason, the finding is kept **open for one more +round** with a note quoting both the claim and the contradicting line, instead +of being recorded justified. It is deliberately conservative: + +- Trusting the maintainer is the default. A rebuttal about house style, intent, + accepted risk, or priority — anything not refutable from the code — is + respected, as is any premise whose supporting code is not in the diff. +- **One push-back, then defer.** The re-check only fires while the thread carries + a single maintainer reply; replying again always ends it, so the bot can never + keep re-opening the same finding round after round. +- The re-opened finding is never re-posted as a new comment — it stays tracked in + *Previous Findings Status*, so nobody is asked to answer the same comment twice. +- The override holds approval (`APPROVE` → `COMMENT`) exactly like any other + unresolved previous finding; it never invents a new blocking finding. + +Set it to `false` to make a maintainer's reply final, unconditionally. + +### Clearing a finding with no thread + +Replying on a finding's review thread is the usual way to close it — but a +**LOW**-confidence finding at **MEDIUM** or **LOW** risk never opens one. It is +listed under **Things to double-check** in the summary instead, so there is no +thread to reply on, while follow-up reviews keep reporting it unresolved and +holding approval (`APPROVE` → `COMMENT`). To close one, comment on the PR +conversation: + +``` +@thrillhousebot resolved src/main/java/com/example/Widget.java:42 — Missing null check +``` + +Write it as plain text in the comment — pasted back inside a code fence or +backticks it reads as documentation and does nothing (see the quoting rule +below). + +Closing a finding wrongly is worse than leaving it open, so the match is strict +and **when the naming is ambiguous the finding stays held**. All of the +following must hold: + +- **The comment states `@thrillhousebot resolved`.** `resolve` (the thread + command) is not it, and a mention alone is not it — an ordinary question about + a finding is engagement, not a decision. Nor is the interrogative: + `@thrillhousebot resolved?` *asks* whether a finding was fixed, so it clears + nothing even when the rest of the comment names one. A question mark anywhere + later is fine — only one straight after the directive words makes it a question. +- **You name the finding by *both* its `path:line` locator and its own content** + — its title, or its description when it has no title. Each **Things to + double-check** row already prints both, the title first and then the locator in + backticks, so copying the row is the reliable way to get them right. Naming only + one of the two clears nothing. Locators match whole, so `Widget.java:42` never + closes a different finding at `Widget.java:4`. +- **You hold write access.** The comment's GitHub `author_association` must be + `OWNER`, `MEMBER` or `COLLABORATOR`; a fork-PR author's or a drive-by + commenter's comment is ignored. The bot's own comments are ignored too — its + summary reproduces every finding verbatim. +- **You *use* the directive rather than quote it.** `@thrillhousebot resolved` + counts as an instruction only when those words are plain text. Marking them up + — as `` `@thrillhousebot resolved` ``, inside a fenced block, or on a `>` + quoted line — reads as documentation, so a comment that *explains* the feature + (the fenced example above, or a colleague pasting one) clears nothing. The + **locator and title may still be in backticks**, which is how the summary + prints them; only the directive words themselves may not be. +- **Quoted blocks do not count at all.** Blockquote lines and fenced code are + dropped before anything is matched, so GitHub's *Quote reply* on the summary — + which reproduces every double-check row — names no finding either. + +One comment may name several findings; each is matched independently, and one it +does not name stays open. A finding with neither a title nor a description can +never be named this way, so it stays held — fix it, or reply on its thread if it +has one. The clearing is applied by the next review, which records the finding +**resolved**. + +The bot answers the directive as soon as it sees it, but only with what is +knowable that early: it has no review loaded and no findings to match against, so +it says what the next review will evaluate rather than reporting an outcome. The +one exception is a directive naming no `path:line` at all — that provably clears +nothing, so the reply says so outright and shows the shape to use. A locator that +is present but wrong still gets the general reply, and the review is what reports +the finding still unresolved. + +**Conversation read ceiling.** A review reads the PR conversation in pages of +100, up to 10 pages — 1000 comments — so one review can never turn a runaway +thread into hundreds of API calls. GitHub serves these comments oldest first and +offers no reverse order on that endpoint, so on a PR past the ceiling the +**newest** comments are the ones left unread, and a directive among them will not +clear anything that round. The bot logs a warning naming the ceiling whenever it +is reached, so this shows up as a log line rather than as the feature quietly +doing nothing; push a commit to re-review, or reply on the finding's thread if it +has one. + +### Blocking strictness + +By default (`REVIEW_BLOCKING_STRICTNESS=balanced`), only **CRITICAL** or **HIGH** +risk findings that the model reports at **HIGH** confidence escalate the PR +review to `REQUEST_CHANGES` (and fail the check run). Medium/low-confidence +severity findings still post as comments with a neutral check. + +| Mode | Blocks merge when | +|---|---| +| `balanced` (default) | CRITICAL or HIGH risk **and** HIGH confidence | +| `strict` | CRITICAL or HIGH risk, **any** confidence | +| `lenient` | CRITICAL risk **and** HIGH confidence only | + +**Security-team recommendation:** use `strict` so a CRITICAL/HIGH finding cannot +slip through as a comment just because confidence was demoted. Be aware that +under `strict`, the finding verifier's confidence demotions (hedged claims → +medium/low) no longer prevent a merge block — only risk reduction or dropping +the finding does. Stay on `balanced` if you want verifier demotions to keep +speculative severity findings non-blocking. + +This knob controls the **review verdict** only. Where findings are posted +(inline thread vs summary) is separate confidence gating tracked in +[#105](https://github.com/devops-thiago/ThrillhouseBot/issues/105); when that +lands, low-confidence findings can move out of the inline stream without +changing these blocking rules. + +The app validates configuration at startup and **fails fast** if a required value +(`GITHUB_APP_ID`, `GITHUB_PRIVATE_KEY`, `GITHUB_WEBHOOK_SECRET`, `AI_API_KEY`) is missing or — for +the private key — not a valid PEM RSA key, naming every offending variable in one message instead of +surfacing later on the first webhook or review. Dashboard OAuth (`GITHUB_CLIENT_ID` / +`GITHUB_CLIENT_SECRET`) is optional: leave both unset and the dashboard login is simply disabled. + +Cost tracking uses per-model pricing keyed by the model name, for example: + +```properties +thrillhousebot.ai.pricing.deepseek-chat.input-per-1k=0.00014 +thrillhousebot.ai.pricing.deepseek-chat.output-per-1k=0.00028 +``` + +If you switch to a different `AI_MODEL`, add a matching +`thrillhousebot.ai.pricing.<model>.*` pair so the dashboard can compute cost. +Without an entry the bot still records tokens, but warns once and flags sessions +as "no pricing" instead of showing `$0`. + +### Per-model AI settings + +Model-specific settings live under `thrillhousebot.ai.models.<model>.*`, keyed +by the model name (the `AI_MODEL` value) like the pricing map. Only the active +model's entry is read, so you can keep entries for every model you use and +switch `AI_MODEL` freely: + +```properties +# Input hard cap. The effective review budget is min(REVIEW_MAX_INPUT_TOKENS, +# cap); models without an entry get a 128000 cap. +thrillhousebot.ai.models.deepseek-chat.max-input-tokens=64000 +# The model's total context window. On a shared window the prompt and the +# completion are both charged to it, so boot fails when max-input-tokens + +# max-output-tokens do not fit inside it. Omit it and the ceiling isn't checked. +thrillhousebot.ai.models.deepseek-chat.context-tokens=128000 +# Per-model overrides of REVIEW_OUTPUT_BUFFER_TOKENS / REVIEW_TOKEN_SAFETY_MARGIN +thrillhousebot.ai.models.deepseek-chat.output-buffer-tokens=8192 +thrillhousebot.ai.models.deepseek-chat.token-safety-margin=0.9 +# Generation parameters, sent on every chat call when set +thrillhousebot.ai.models.deepseek-chat.temperature=0.2 +thrillhousebot.ai.models.deepseek-chat.top-p=0.95 +thrillhousebot.ai.models.deepseek-chat.max-output-tokens=8192 +thrillhousebot.ai.models.deepseek-chat.frequency-penalty=0.1 +thrillhousebot.ai.models.deepseek-chat.presence-penalty=0.1 +thrillhousebot.ai.models.deepseek-chat.seed=42 +# Set true only when the provider really bills the response outside the context +# window (1M in with 384K out on top, rather than 384K carved out of the 1M) — +# it switches off both the reservation and the context-tokens ceiling +thrillhousebot.ai.models.some-separate-budget-model.separate-output-budget=true +``` + +Notes: + +- **`max-input-tokens` is a cap, not the budget.** `REVIEW_MAX_INPUT_TOKENS` + stays the spend knob; the per-model value keeps it from overshooting the + model's real window. To use a large-context model beyond 128k, raise both. + Startup logs a warning whenever the cap lowers your configured budget. +- **`context-tokens` is the window itself**, and declaring it is what lets the + bot refuse an impossible request instead of paying for one. On a shared + window the provider charges the prompt *and* the completion to that one + context, so boot fails when `max-input-tokens + max-output-tokens` exceed it, + and again when your effective budget (`REVIEW_MAX_INPUT_TOKENS` clamped by the + cap) plus the largest response cap in play — `max-output-tokens` or + `REVIEW_CONCISE_MAX_OUTPUT_TOKENS` — exceeds it. Without it, an over-large + pair is only discovered when the provider rejects every call for length. + It is optional: a model that doesn't declare one is simply not checked. +- **Quote keys with `.` or `/`** (`thrillhousebot.ai.models."gpt-5.5".…`), the + same rule as the pricing map. Override via env — hyphen-only keys use underscores + (`THRILLHOUSEBOT_AI_MODELS_DEEPSEEK_V4_PRO_MAX_INPUT_TOKENS=1000000`); dotted keys use the + quoted-key form (`THRILLHOUSEBOT_AI_MODELS__GPT_5_5__MAX_INPUT_TOKENS=256000`). + `application.properties` ships empty stubs for known models so SmallRye can + disambiguate hyphenated keys — [Quarkus env mapping](https://quarkus.io/guides/config-reference#environment-variables). + For a model without a stub, add an empty + `thrillhousebot.ai.models."<model>".max-input-tokens=` line (external + `application.properties` or `-D`) alongside the env var. +- **`top_k` is not available** on the OpenAI-compatible wire; it becomes + relevant only with native provider integrations. +- **`max-output-tokens` no longer caps every call.** The final summary of a + multi-call review, the finding verifier, and maintainer replies run on a + second model binding — the `concise` named model + (`quarkus.langchain4j.openai.concise.*`) — that points at the same provider, + credentials, and model through the same `AI_*` variables and follows the + active model's temperature tuning, but carries its own response cap, + `REVIEW_CONCISE_MAX_OUTPUT_TOKENS` (default `8192`), and its own reasoning + effort, `AI_REASONING_EFFORT_CONCISE` (default `low`). Those responses are + fixed-shape or short, so they don't need — and shouldn't be licensed to + spend — a cap sized for batch review output. The review itself and the + command generators (`/describe`, `/changelog`, `/add-docs`, `/improve`, + `/generate-tests`), whose outputs scale with the diff, stay on the default + model and its `max-output-tokens`. +- **Reasoning effort is per lane.** Reasoning tokens are billed as output and + count against the response cap, so on the `concise` model a high effort can + consume the whole allowance and leave no content — the verifier then reports + that it kept its findings unverified. That tail is variable-length, not a + size threshold, so raising `REVIEW_CONCISE_MAX_OUTPUT_TOKENS` only shifts the + odds. Keep `AI_REASONING_EFFORT_CONCISE` low (the default) and spend the + effort budget on `AI_REASONING_EFFORT`, which drives the review itself. +- **`max-output-tokens` vs `output-buffer-tokens`**: `max-output-tokens` is the + hard response-length cap sent to the provider; `output-buffer-tokens` only + reserves input-budget headroom for the map-reduce budgeter. On a shared-window + model, keep the buffer at least as large as the output cap so a response the + model is allowed to produce always has reserved room — set both when capping + output. Boot fails if you don't. +- **`separate-output-budget`** (default `false`) says which contract the model is + on. Left off, prompt and completion share one window: the budgeter reserves + `output-buffer-tokens` out of the input budget, and the buffer must cover + `max-output-tokens`. Set it `true` for a model that publishes a response + allowance *on top of* its input window rather than inside it — then the + budgeter stops reserving (the response never draws on the diff budget), the + buffer no longer has to cover the cap, and the completion stops counting + against `context-tokens`. Getting it wrong is expensive in one direction and + unbootable in the other, so it is explicit rather than inferred: a + 384000-token cap on a 1M window silently costs ~40% of every call's diff + budget if the model is wrongly marked shared — while marking a genuinely + shared model separate turns off every guard and the provider rejects the + calls instead, which is how `deepseek-v4-flash` shipped its wrong pair. + Verify against the provider's own documented window before setting it. +- **`seed`** is a best-effort determinism hint (same seed + same parameters aims + for the same sampling) on providers that support it; unsupported providers + ignore it. For deterministic reviews, prefer a low `temperature` first. +- **Generation-parameter validation** happens at boot: temperature must be in + `[0, 2]`, `top-p` in `(0, 1]`, penalties in `[-2, 2]`, token counts positive — + a typo in any entry (even an inactive model's) fails startup with a message + naming the key. + + + + + +## Repository configuration + +The instructions file (`.github/thrillhousebot.md`) is prose for the model. +Structured settings live in a separate, optional `.github/thrillhousebot.yml` +(`.github/thrillhousebot.yaml` also works) — kept apart on purpose, because the +instructions fallback chain may land on a file owned by another tool, and its whole +content is fed to the model as untrusted prose: + +```yaml +review: + # Extra paths this repository never wants reviewed, on top of the deployment default. + ignored-files: + - "docs/generated/**" + - "**/*.snap" + - "testdata/**" + + # Review rules for one path only, on top of the prose in .github/thrillhousebot.md + # (which keeps applying everywhere). + path-instructions: + - path: "payments/**" + instructions: | + Money is handled in integer cents; flag any floating-point arithmetic. + Every state change must be idempotent under retry. + - path: "**/generated/**" + instructions: "Generated code: style and naming findings do not apply." + + # Name of the workflow artifact holding this repository's JaCoCo XML coverage report. + # Only read when the deployment sets REVIEW_PATCH_COVERAGE_ENABLED=true. + coverage-artifact: "coverage-report" +``` + +**Precedence: the effective ignore list is the union of both — global ∪ per-repo.** +A file is skipped if it matches *either* the deployment-wide +`thrillhousebot.review.ignored-files` list *or* a glob the repository declared. A +repository can therefore take more files out of review scope, but never put back a +file the deployment excludes, and a repository that ships no config file gets the +global list exactly as before. Globs use the same gitignore-style syntax as the +global key (`*` does not cross `/`; use `**` to span directories). + +**Precedence: the review rules for a file are the global instructions plus every +matching path scope.** The prose in `.github/thrillhousebot.md` (or whichever file the +fallback chain lands on) applies to every file exactly as before. On top of that, each +`path-instructions` scope whose glob matches a changed file contributes its rules *for +that file only* — the model is shown each scope alongside the files it governs, so +`payments/` strictness is never carried over to generated code. Scopes are additive and +may overlap: a file matching two scopes gets both, in declaration order, and where a +scope and the global instructions conflict, the scope wins for its own files. A scope +matching nothing in the pull request is not sent at all, and a file the ignore list +already excluded is never scoped — ignore rules run first. Path globs use the same +syntax and the same matcher as `ignored-files`. + +**Patch coverage: `coverage-artifact` names a report, and nothing is assumed without +it.** The bot never builds the pull request, so it cannot measure coverage itself. When +the deployment sets `REVIEW_PATCH_COVERAGE_ENABLED=true` *and* a repository names an +artifact here, each review looks for that artifact on a **completed workflow run for the +exact head commit** (GitHub's `head_sha` filter), downloads it, and intersects the +report's never-executed lines with the lines the diff adds. The reviewer is then shown a +short "uncovered changed lines" list and told two things: changed logic nothing exercises +is reportable, and a correctness claim about such a line must not be softened by the +usual "but a test in this diff covers it" check — no test runs that line. + +For this to work the workflow must upload the report, e.g. + +```yaml +- run: ./mvnw clean test jacoco:report +- uses: actions/upload-artifact@v7 + with: + name: coverage-report # must match review.coverage-artifact + path: target/site/jacoco/jacoco.xml +``` + +Only JaCoCo XML is understood today. **A repository that names no artifact — the common +case — contributes nothing, and its review is exactly what it was before.** The same is +true when the run uploaded nothing by that name, the artifact has expired, the download +fails, or the report is in another format: the section is omitted rather than guessed at. +Nothing about coverage is ever inferred from the diff, and a line's *absence* from the +list is explicitly not evidence that a test covers it. Files the ignore list already +excluded are never reported as under-tested. + +The file is read from the repository's default branch on each review and cached for +five minutes. Everything about it fails soft: a missing file, invalid YAML, an +unexpected shape, an uncompilable glob, or a malformed `path-instructions` entry is +logged and skipped, leaving the global ignore list and the global instructions in force +— it never fails a review. A repository may declare at most 25 scopes, each with at most +4000 characters of rules; the rest is dropped with a warning. Operators who do not want +repositories adjusting their own review scope or rules can turn the whole mechanism off +with `THRILLHOUSEBOT_REVIEW_REPO_CONFIG_ENABLED=false`. + + + + + +## PR labels + +ThrillhouseBot can suggest context-aware labels (area, change type, risk) drawn +from the diff. The feature is **off by default**; turn it on with +`REVIEW_LABELS_ENABLED=true`. + +When enabled, the model is shown the repository's existing labels and picks the +few that best describe the PR — it only ever chooses from labels that already +exist, so it respects whatever label scheme the repo already uses. What happens +next depends on `REVIEW_LABELS_APPLY`: + +- `false` (default): the suggestions are posted as a one-line comment on the + first review, leaving the decision to a maintainer. +- `true`: the labels are added to the PR automatically. + +Set `REVIEW_LABELS_ALLOW_CREATE=true` to let the bot create a suggested label +that doesn't exist yet (off by default, so it never invents labels), and +`REVIEW_LABELS_MAX` to cap how many labels it applies or suggests (default `3`). +Labelling is best-effort — a failure here never blocks or fails the review. + + diff --git a/website/src/content/docs/0.6.2/contributing.md b/website/src/content/docs/0.6.2/contributing.md new file mode 100644 index 00000000..c14152d5 --- /dev/null +++ b/website/src/content/docs/0.6.2/contributing.md @@ -0,0 +1,137 @@ +--- +slug: 0.6.2/contributing +title: Contributing +description: Development setup and the CI bar for contributions. +--- + + + + +This project follows the [Contributor Covenant](https://github.com/devops-thiago/ThrillhouseBot/blob/main/CODE_OF_CONDUCT.md). By taking +part you agree to uphold it. + +## Where to start + +- **[GitHub Discussions](https://github.com/devops-thiago/ThrillhouseBot/discussions)** — questions, setup help, and general conversation. Start with the pinned [welcome post](https://github.com/devops-thiago/ThrillhouseBot/discussions/1) if you are new. +- Issues labeled [`good first issue`](https://github.com/devops-thiago/ThrillhouseBot/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) are well-scoped and explained in detail. +- Issues labeled [`help wanted`](https://github.com/devops-thiago/ThrillhouseBot/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) are larger but ready to be picked up. +- For bugs and feature requests, use the [issue templates](https://github.com/devops-thiago/ThrillhouseBot/issues/new/choose). For larger changes, open an issue first so we can discuss the approach before you invest time. + +## Development setup + +Prerequisites: **Java 25+**, **Node.js 22+** (dashboard only), **Docker** (native builds only). Maven is bundled via the wrapper. + +Follow the [README Quick Start](https://github.com/devops-thiago/ThrillhouseBot#quick-start) for cloning, credentials, dev mode, and webhook forwarding — it is the single source of truth for setup commands. Contributor-specific extras: + +```bash +cd frontend && npm install && npm run dev # dashboard with hot reload +``` + +## Before you open a PR + +Run the Java verification locally before opening a PR: + +```bash +./mvnw spotless:apply # google-java-format; CI runs spotless:check +./mvnw verify # tests + JaCoCo coverage gate + SpotBugs +``` + +If you changed the dashboard, also run `cd frontend && npm ci && npm run test && npm run build`. + +To exercise the UI without a backend, run `cd frontend && npm run dev:mock`. +CI additionally runs Dependency Review (required), SonarCloud, Trivy, and a Docker +build check on pull requests — see **Dual-gate merge policy** below. +To build a disposable test image for a branch or PR (JVM or native, without +touching `latest`), use the **Docker test image** workflow in Actions +(`.github/workflows/docker-test-image.yml`). + +The bar, enforced by CI: + +- **All tests pass** — and new code comes with tests. Test behavior, not implementation: prefer asserting observable outcomes over `assertDoesNotThrow`, and avoid reflection on private members (relax to package-private instead if a test genuinely needs the seam). +- **Coverage doesn't drop** — JaCoCo, Codecov patch coverage, and the SonarCloud quality gate all run on every PR. +- **SpotBugs clean** at `effort=Max`/`threshold=Low`. If you hit a false positive, prefer restructuring; document any exclusion in `config/spotbugs-exclude.xml` with a justification comment. +- **No new Sonar issues** — the quality gate requires an A reliability/security rating on new code. + +## Dual-gate merge policy + +ThrillhouseBot's LLM review and the repo's static CI gates are **complementary**, not substitutes. Merge only when **both** are green (or explicitly waived by a maintainer with a written reason on the PR). + +| Gate | What it catches | Required on this repo | +|------|-----------------|------------------------| +| **Static** | Dependency CVEs/license regressions ([Dependency Review](https://github.com/devops-thiago/ThrillhouseBot/blob/main/.github/workflows/dependency-review.yml)), filesystem CVEs (Trivy), format/tests/frontend, SpotBugs/Sonar/CodeQL | Yes — `format`, `test`, `frontend`, `trivy`, and `dependency-review` are required status checks on `main`/`develop` | +| **ThrillhouseBot** | Diff narrative, incomplete fixes, framework-context issues static tools miss | Soft gate — wait for the **ThrillhouseBot Review** check / posted review when the App is installed; do not merge solely because CI is green if the bot flagged open threads | + +Optional third signal: Cursor Bugbot (or similar) may run on PRs. It is **not** a merge requirement here — useful when present, never a replacement for the two gates above. + +This policy does **not** fold linters into the LLM prompt ([#34](https://github.com/devops-thiago/ThrillhouseBot/issues/34)); that work stays separate. The static gate is the CI safety net for supply-chain and compile-time classes of bug the bot can miss. + +### When the gates disagree + +Maintainers triage; do not "average" the signals away. + +| Static | ThrillhouseBot | What to do | +|--------|----------------|------------| +| Red | Green / quiet | **Fix or formally suppress the static finding.** LLM silence is not evidence the CVE is safe. Prefer a real version bump; if the advisory does not apply to this codebase, document the hold with the file the failing tool actually reads — Dependency Review: `allow-ghsas` or `.github/dependency-review-config.yml`; Trivy: `.trivyignore`; OpenSSF Scorecard / osv-scanner: `osv-scanner.toml` (Jackson GHSA pattern in [#308](https://github.com/devops-thiago/ThrillhouseBot/pull/308)). | +| Green | Red / open threads | **Address or refute the bot findings** in the PR discussion before merge. Static green does not clear logic/copy/incomplete-fix issues. | +| Red | Red | Clear the **static** gate first (often blocks merge already), then resolve bot threads. | +| Same area, conflicting severity | — | Prefer the **static** tool for dependency/CVE/license facts; prefer the **bot** for intent, call-site context, and "did the PR actually finish the fix?" Prefer neither blindly — leave a short maintainer note on the PR. | + +Waivers (rare): only a maintainer may merge with a red soft gate or a documented static suppression, and the PR must record who waived what and why. + +## Commit messages + +The project uses [Conventional Commits](https://www.conventionalcommits.org/): `feat:`, `fix:`, `perf:`, `test:`, `docs:`, `ci:`, `deps:`. One logical change per commit; explain the *why* in the body when it isn't obvious. + +## Architecture + +See the [architecture overview](https://devops-thiago.github.io/ThrillhouseBot/architecture/) +(source: [docs/ARCHITECTURE.md](https://github.com/devops-thiago/ThrillhouseBot/blob/main/docs/ARCHITECTURE.md)). Package flow: +`webhook/` → `review/` (`review/ai/`) → `github/` → `dashboard/` (`frontend/`). + +## Adding an AI provider + +There is no provider-specific code to write. The model is reached through +LangChain4j's OpenAI-compatible client, so a new provider is configuration: point +`AI_BASE_URL` and `AI_MODEL` at the endpoint, and add a matching +`thrillhousebot.ai.pricing.<model>.input-per-1k` / `.output-per-1k` pair in +`application.properties` if you want the dashboard to track its cost. The +[README provider table](https://github.com/devops-thiago/ThrillhouseBot#provider-support) lists the ones that are known +to work. + +## Prompt eval corpus + +Changes to the review or verifier prompts (`PrReviewPrompts`, `FindingVerifierPrompts`) +should be checked against the labeled regression corpus in +`src/test/resources/evalcorpus/` before they ship. Each case directory pins a real +dogfood outcome — a `case.json` spec plus `diff.txt` in the exact format the review +pipeline sends to the model: + +- **verifier** cases feed a candidate finding through the second-pass audit and assert + the expected verdict (`confirmed` / `downgraded` / `rejected`); +- **generator** cases run the first-pass review prompt over a diff and assert that a + finding matching the case's keywords is (`must-find`) or is not (`must-not-find`) + raised on the target file. + +The corpus schema is validated by `EvalCorpusTest` in every build. The live suite is +opt-in — it calls the configured AI provider: + +```bash +QUARKUS_LANGCHAIN4J_OPENAI_API_KEY=<key> ./mvnw test -Peval -Dtest=PromptEvalTest +``` + +Point `AI_BASE_URL` / `AI_MODEL` at the provider you want to evaluate (defaults apply +otherwise). Each case is sampled `-Deval.samples` times (default 3) and judged by +majority; `-Deval.tolerated` (default 0) allows a known-unfixed label — one tracked by +an open prompt-hardening issue — to fail without blocking unrelated prompt work. + +To add a case, create a new directory under `evalcorpus/` with `case.json` and +`diff.txt` (see an existing case for the shape). Source new cases from resolved PR +review threads: a refuted false positive becomes `expectedVerdicts: ["rejected"]`, a +confirmed true positive `["confirmed"]`, and note the provenance in `why`. + +## Reporting security issues + +Please **do not** open a public issue — see +[SECURITY.md](https://github.com/devops-thiago/ThrillhouseBot/blob/main/SECURITY.md). + + diff --git a/website/src/content/docs/0.6.2/feedback.md b/website/src/content/docs/0.6.2/feedback.md new file mode 100644 index 00000000..b320d71e --- /dev/null +++ b/website/src/content/docs/0.6.2/feedback.md @@ -0,0 +1,93 @@ +--- +slug: 0.6.2/feedback +title: Finding feedback +description: Data model, privacy, and retention for maintainer finding feedback signals. +--- + + + + +ThrillhouseBot records lightweight maintainer signals about review findings so a +future cross-review learnings store ([#38](https://github.com/devops-thiago/ThrillhouseBot/issues/38)) +has training data. This is the precursor shipped for +[#324](https://github.com/devops-thiago/ThrillhouseBot/issues/324); it does **not** +yet inject preferences into review prompts. + +## Why poll instead of a reaction webhook? + +GitHub Apps do not receive a `reaction` webhook event. The bot therefore lists +👍 (`+1`) and 👎 (`-1`) on finding comments via the +[Reactions REST API](https://docs.github.com/en/rest/reactions/reactions) when: + +1. A human **replies** on an inline review thread (`pull_request_review_comment` + with `in_reply_to_id`), or +2. A **follow-up review** already loaded inline comments — every bot finding-root + comment across prior rounds is scanned (capped, ordered by comment id), not + only findings from the immediately previous AI response. + +Capture is best-effort and never fails the webhook `200` or the review. + +## Signals + +| Signal | Source | Meaning | +|--------|--------|---------| +| `useful` | `reaction` (`+1`) | Maintainer marked the finding comment 👍 | +| `not_useful` | `reaction` (`-1`) | Maintainer marked the finding comment 👎 | +| `not_useful` | `reply_heuristic` | Reply body matched a conservative phrase (`not useful`, `false positive`, `noise`, 👎, `:-1:`) | + +Only comments that carry the hidden `<!-- thrillhousebot:finding=N -->` marker are +eligible. The bot's own reactions (e.g. 👀 command ack) are ignored. + +## Data model + +Table `finding_feedback` (Hibernate schema-update; no Flyway): + +| Column | Type | Notes | +|--------|------|-------| +| `id` | bigint | Panache / sequence PK | +| `repository` | string | `owner/repo` | +| `prNumber` | int | PR on that repository | +| `githubCommentId` | bigint | Finding root review-comment id | +| `findingIndex` | int (nullable) | 1-based index from the marker | +| `signal` | string | `useful` or `not_useful` | +| `source` | string | `reaction` or `reply_heuristic` | +| `reactorLogin` | string | GitHub login only (lower-cased) | +| `githubReactionId` | bigint (nullable) | Unique when present (idempotent re-poll) | +| `createdAt` | instant | Insert time | + +Unique constraints: + +- `githubReactionId` (when non-null) — reaction redeliveries / re-polls +- `(githubCommentId, reactorLogin, signal, source)` — one logical event per actor + +## Privacy + +Stored PII is limited to the **GitHub login** already present on webhook and API +payloads. No email, display name, IP, or reaction text beyond the fixed emoji +content codes (`+1` / `-1`) is persisted. Finding title/description are not +copied into this table. + +## Retention + +Rows are retained for the lifetime of the deployment database. There is no +automatic purge. Operators may `DELETE` rows or drop the table when +decommissioning an installation. Uninstalling the GitHub App does not currently +auto-delete feedback rows (same posture as `ReviewSession` history). + +## Aggregation API (ContextProvider seam) + +`FindingFeedbackService.summarize(repository)` and `summarizeAll()` return +per-repo `useful` / `not_useful` counts for a future `ContextProvider`. The +dashboard exposes the same aggregates at `GET /api/dashboard/feedback` (session +cookie required; optional `?repository=owner/repo`). + +## Notable classes + +- `FindingFeedback` / `FindingFeedbackRepository` / `FindingFeedbackService` +- `FindingFeedbackCaptureService` — poll + heuristics +- `GitHubReactionClient.listReviewCommentReactions` +- `WebhookController` — schedules capture on review-thread replies +- `ReviewOrchestrator` — capture pass on follow-up reviews + + + diff --git a/website/src/content/docs/0.6.2/getting-started.md b/website/src/content/docs/0.6.2/getting-started.md new file mode 100644 index 00000000..54cca7a4 --- /dev/null +++ b/website/src/content/docs/0.6.2/getting-started.md @@ -0,0 +1,125 @@ +--- +slug: 0.6.2/getting-started +title: Getting started +description: Create the GitHub App, configure the bot, and start it with Docker Compose. +--- + +Everything you need to go from zero to a bot reviewing your pull requests: +create the GitHub App, configure the bot, and start it with Docker Compose. + +## Prerequisites + +- [Docker & Docker Compose](https://docs.docker.com/compose/install/) +- An API key for any [OpenAI-compatible provider](/ThrillhouseBot/providers/) +- A public hostname where GitHub can reach the bot (for local development, + a [Smee.io](https://smee.io/) channel works) + +## 1. Create the GitHub App + +The bot authenticates as a GitHub App, so the app must exist before the bot +starts. The easiest path is the +**[hosted installer](/ThrillhouseBot/install.html)**: type the public hostname +where the bot will run and click **Create ThrillhouseBot GitHub App** — the +page builds the app manifest for you and sends it to GitHub. No local server +needed. + +After GitHub creates the app: + +1. Note the **App ID** (app settings → About). +2. Generate a **private key** (downloads a `.pem` file). +3. Set a **webhook secret**. +4. Copy the **Client ID** and **Client secret** from *Identifying and + authorizing users* (needed for dashboard login). +5. Install the app on your account or organization. + +Alternatively, grab the `code` query parameter GitHub appends to the +post-creation redirect and generate `.env` automatically from the manifest +conversion response: + +```bash +gh api --method POST /app-manifests/<code>/conversions \ + | java scripts/GenEnv.java --host <your-host> +``` + +:::note[Smee setups] +The hosted installer registers Smee webhooks at the channel root and the +OAuth callback at `http://localhost:8080/api/auth/callback`. If you use +`GenEnv.java`, don't pass the Smee URL as `--host` (that writes +`DASHBOARD_URL=https://<host>`); run it without `--host` and then set +`DASHBOARD_URL=http://localhost:8080` in the generated `.env` — dashboard +login only works when `DASHBOARD_URL` matches the registered callback. + +Webhooks land on the Smee channel, so also run the relay client to +forward them to the bot (keep it running alongside the bot): + +```bash +npx smee-client -u https://smee.io/YOUR_CHANNEL -t http://localhost:8080/api/webhook +``` +::: + +:::note[Manual registration instead] +Prefer to register the app by hand? Create it at +<https://github.com/settings/apps/new> with these settings: + +| Setting | Value | +|---|---| +| Webhook URL | `https://<your-host>/api/webhook` | +| Webhook Secret | Random string | +| Repository Permissions | Pull Requests: R/W, Checks: R/W, Contents: Read, Issues: R/W, Actions: Read, Commit Statuses: Read | +| Subscribe to Events | Pull Request, Issue comment, Pull request review comment | +| Identifying & authorizing users | Enabled (for dashboard login) | +| Callback URL | `https://<your-host>/api/auth/callback` | + +For a Smee channel, register the channel URL itself as the Webhook URL (no +`/api/webhook` suffix — Smee delivers only at the channel root) and +`http://localhost:8080/api/auth/callback` as the Callback URL, since OAuth +redirects happen in your browser against the local bot. +::: + +:::tip[Re-registering later] +Once the bot is running, `install.html` on the bot's own URL +(`https://<your-host>/install.html` behind a reverse proxy, or +`http://localhost:8080/install.html` when hitting it directly) builds the +manifest from the detected host automatically — handy for adding the app to +another account. Smee-based dev setups should re-register through the +[hosted installer](/ThrillhouseBot/install.html) instead: the bot's own page +registers the origin it's served from, without the Smee webhook-root handling. +::: + +## 2. Clone and configure + +```bash +git clone https://github.com/devops-thiago/ThrillhouseBot.git && cd ThrillhouseBot +cp .env.example .env +``` + +Edit `.env` with the credentials from step 1: + +| Variable | Value | +|---|---| +| `GITHUB_APP_ID` | From GitHub App settings → About | +| `GITHUB_PRIVATE_KEY` | The `.pem` downloaded when you generated a private key — on one line, newlines as `\n`, unquoted | +| `GITHUB_WEBHOOK_SECRET` | The webhook secret you set | +| `GITHUB_CLIENT_ID` | From app settings → Identifying and authorizing users | +| `GITHUB_CLIENT_SECRET` | From app settings → Identifying and authorizing users | +| `AI_API_KEY` | Your AI provider's API key | + +## 3. Start the bot + +```bash +docker compose up -d +``` + +The bot is running on `http://localhost:8080`. Point your reverse proxy at it +and you're done — the next pull request on an installed repository gets +reviewed automatically. + +## Next steps + +- Tune the bot with the + [configuration reference](/ThrillhouseBot/configuration/) — auto-review + triggers, labels, timeouts, and more. +- Drive it from a PR with the [comment commands](/ThrillhouseBot/commands/). +- Customize reviews per repository with a `.github/thrillhousebot.md` + instructions file (fallback chain: `.github/copilot-instructions.md` → + `CLAUDE.md` → `AGENTS.md` → `AGENT.md`). diff --git a/website/src/content/docs/0.6.2/index.md b/website/src/content/docs/0.6.2/index.md new file mode 100644 index 00000000..12694fca --- /dev/null +++ b/website/src/content/docs/0.6.2/index.md @@ -0,0 +1,78 @@ +--- +slug: 0.6.2 +title: ThrillhouseBot +description: Self-hosted AI pull-request reviewer — a GraalVM-native GitHub App built with Quarkus. +--- + +> **"Everything's coming up Thrillhouse!"** + +A self-hosted, GraalVM-native PR review bot, built as a GitHub App with Quarkus. +It reviews pull requests using any OpenAI-compatible chat API, so the review is +language-agnostic and you can pick the provider that suits you — including a +local Ollama model, so no code has to leave your network. + +![ThrillhouseBot approving a clean pull request](../../../assets/0.6.2/pr-approval.png) + +## Features + + + +- Reviews diffs for correctness, security, regressions, stale comments, and code quality +- Token-budgeted whole-PR review for large diffs — split into parallel map-reduce batches with omitted files named, not silently dropped +- Configurable auto-review triggers — skip drafts, gate on labels, or filter by base branch — plus an optional per-PR auto-review interval (`AUTO_REVIEW_MIN_INTERVAL`) when you want to cap spend on noisy PRs (off by default; use `/pause` to silence a PR) +- Inline code suggestions on review comments that you can apply with one click +- Every finding is tagged `critical`, `high`, `medium`, or `low` +- Follow-up reviews track whether earlier findings were addressed or justified +- Every finding can be closed by a maintainer: reply on its review thread, or — for one raised below the inline-posting bar, which has no thread — comment `@thrillhousebot resolved <path>:<line> — <title>` on the PR +- Maintainer 👍/👎 (and "not useful" replies) on finding comments are recorded for a future learnings pipeline — see [Finding feedback](https://devops-thiago.github.io/ThrillhouseBot/feedback/) +- Conversational replies: `@thrillhousebot` it in a PR thread or finding reply and the bot answers in context +- A summary comment on the first run, with a risk breakdown and a changed-files walkthrough +- Operable from the PR with comment commands — `/help`, `/review`, `/summary`, `/describe`, `/changelog`, `/add-docs`, `/improve`, `/generate-tests`, `/resolve`, `/pause`, `/resume` +- Live dashboard (Next.js) with a WebSocket activity feed, cost charts, and token tracking +- OpenTelemetry traces, token histograms, cost counters, and latency metrics +- Optional reasoning-effort dial and per-model generation/budget caps for OpenAI-compatible endpoints +- Reads per-repo instructions from `.github/thrillhousebot.md`, falling back to Copilot/Claude/Agents files +- Lets each repository add its own ignore globs in `.github/thrillhousebot.yml`, unioned with the deployment default, and scope extra review rules to a path glob +- Compiles ahead-of-time with GraalVM/Mandrel, so it starts fast and stays small + + + +## Where to go next + +- **[Getting started](/ThrillhouseBot/getting-started/)** — create the GitHub + App with the [hosted installer](/ThrillhouseBot/install.html) and run the bot + with Docker Compose. +- **[Commands](/ThrillhouseBot/commands/)** — drive the bot from a PR: + `/review`, `/describe`, `/changelog`, `/add-docs`, `/improve`, + `/generate-tests`, and more. +- **[Configuration](/ThrillhouseBot/configuration/)** — every environment + variable, with defaults. +- **[AI providers](/ThrillhouseBot/providers/)** — point the bot at the + OpenAI-compatible endpoint of your choice. +- **[Architecture](/ThrillhouseBot/architecture/)** — how a review flows + through the system. +- **[Finding feedback](/ThrillhouseBot/feedback/)** — maintainer 👍/👎 capture + for the learnings pipeline. +- **[How it compares](/ThrillhouseBot/comparison/)** — an honest look at where + ThrillhouseBot sits next to other AI code-review tools. +- **[Contributing](/ThrillhouseBot/contributing/)** — development setup and the + CI bar. + +## Dashboard + +The built-in dashboard (Next.js, served by the bot itself) shows summary cards, +a live activity feed that streams the model's output as a review runs, cost +charts by model, token breakdowns, and a paginated session history: + +![Dashboard Overview with summary cards, live model-output panel, and recent activity](../../../assets/0.6.2/live-streaming.png) + +## Community and license + +Questions and setup help belong in +[GitHub Discussions](https://github.com/devops-thiago/ThrillhouseBot/discussions); +bugs and feature requests in +[Issues](https://github.com/devops-thiago/ThrillhouseBot/issues/new/choose). + +Licensed under the +[Apache License 2.0](https://github.com/devops-thiago/ThrillhouseBot/blob/main/LICENSE) +(SPDX: `Apache-2.0`). diff --git a/website/src/content/docs/0.6.2/providers.md b/website/src/content/docs/0.6.2/providers.md new file mode 100644 index 00000000..3f828003 --- /dev/null +++ b/website/src/content/docs/0.6.2/providers.md @@ -0,0 +1,30 @@ +--- +slug: 0.6.2/providers +title: AI providers +description: Point the bot at any OpenAI-compatible chat endpoint. +--- + + + +ThrillhouseBot talks to any endpoint that implements the OpenAI chat-completions +API. Point `AI_BASE_URL` and `AI_MODEL` at your provider of choice: + +| Provider | `AI_BASE_URL` | Example `AI_MODEL` | +|---|---|---| +| DeepSeek | `https://api.deepseek.com/v1` | `deepseek-chat` | +| OpenRouter | `https://openrouter.ai/api/v1` | `openai/gpt-4o-mini` | +| Alibaba Cloud (Model Studio) | `https://dashscope-intl.aliyuncs.com/compatible-mode/v1` | `qwen-plus` | +| OpenAI | `https://api.openai.com/v1` | `gpt-4o-mini` | +| Ollama (local) | `http://localhost:11434/v1` | `llama3.2` | + +The default is DeepSeek, used only because it is inexpensive; nothing in the bot +is tied to it. + + + +There is no provider-specific code in the bot — a new provider is just +configuration. See +[Adding an AI provider](/ThrillhouseBot/architecture/#adding-an-ai-provider) +in the architecture notes, and add a `thrillhousebot.ai.pricing.<model>.*` pair +(see [Configuration](/ThrillhouseBot/configuration/)) if you want cost tracking +for the model. diff --git a/website/src/content/versions/0.6.2.json b/website/src/content/versions/0.6.2.json new file mode 100644 index 00000000..78217822 --- /dev/null +++ b/website/src/content/versions/0.6.2.json @@ -0,0 +1,40 @@ +{ + "sidebar": [ + { + "label": "Home", + "slug": "index" + }, + { + "label": "Getting started", + "slug": "getting-started" + }, + { + "label": "Commands", + "slug": "commands" + }, + { + "label": "Configuration", + "slug": "configuration" + }, + { + "label": "AI providers", + "slug": "providers" + }, + { + "label": "Architecture", + "slug": "architecture" + }, + { + "label": "Finding feedback", + "slug": "feedback" + }, + { + "label": "How it compares", + "slug": "comparison" + }, + { + "label": "Contributing", + "slug": "contributing" + } + ] +} diff --git a/website/versions.json b/website/versions.json index efd1d747..bc84be28 100644 --- a/website/versions.json +++ b/website/versions.json @@ -1,8 +1,12 @@ { "current": { - "label": "v0.6.2" + "label": "v0.6.3" }, "versions": [ + { + "slug": "0.6.2", + "label": "v0.6.2" + }, { "slug": "0.6.1", "label": "v0.6.1" From 4feb28962b8c2e20d0c9313ec0e4aa548144cbf4 Mon Sep 17 00:00:00 2001 From: Thiago Gonzaga <Thiago.gonzaga@icloud.com> Date: Sat, 15 Aug 2026 23:23:40 +0000 Subject: [PATCH 3/3] chore: set version to 0.6.3 for release --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ffb20671..3f61bb9b 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ <groupId>dev.thiagogonzaga.thrillhousebot</groupId> <artifactId>thrillhousebot</artifactId> - <version>0.6.3-SNAPSHOT</version> + <version>0.6.3</version> <properties> <compiler-plugin.version>3.15.0</compiler-plugin.version>