Skip to content

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 13 Aug 18:42
· 50 commits to main since this release
Immutable release. Only release title and notes can be modified.
ea7dc23

Fixes for defects found after 0.6.0 shipped, most of them during the audit of
that release's review threads. The largest: a review now discloses when its
finding verification did not run, and a GitHub read issued after the
installation token expired mid-review is retried with a fresh token instead of
failing the review. The docs and frontend dependency groups are also brought
current. No configuration changes; upgrading is a redeploy.

Changed

  • Summary-surface deduplication derives each claim's word and phrase sets once (#678): at claim construction rather than for every comparison pair. Deduplication decisions are unchanged

Fixed

  • Token refresh heals reads, not only writes (#626): every installation-token read (PR details, file and comment pages, check runs, statuses, workflow artifacts, GraphQL thread lookups) goes through the refresh seam #625 added for writes. A read that gets a 401 after the token expires mid-review is repeated once with a fresh token instead of failing the review
  • A review says when finding verification did not run (#623): the second-pass verifier fails open by design, and roughly one review in three published findings it never screened, with nothing to tell them apart from a verified set. The posted review, the check-run summary and the follow-up delta comment now state when verification did not run, or covered only some findings ("verification covered X of Y"). Fail-open behavior and the verdict are unchanged
  • The clear directive follows the configured bot login (#679): the resolved directive, its acknowledgements and the conversational-mention gate are built from github.bot-logins, so an install whose GitHub App runs under a different login can clear findings. The mention's @ must open the comment or follow a non-word character, so an email address is not a mention; Unicode space separators are accepted inside a directive; and an invisible character cannot turn resolved? into a clearing order
  • Files whose review call failed get their own coverage reason (#655): they are disclosed as "not reviewed because the review call for them did not complete" instead of being blamed on the diff budget, which matched neither the cause nor the remedy
  • The omitted-file count survives a summary degradation (#659): on the legacy line-cap path, a review whose summary was shortened or skipped dropped the "N file(s) were omitted" count. Both now render
  • An unclosed quote no longer hides dispatch evidence (#656): when a quote opener never closes (a Rust lifetime, an apostrophe in prose), the comment scan continues quote-aware past it, so a // inside a later closed string literal no longer truncates the line and a "runs serially" decline is still checked
  • A context-window rejection is not retried (#622): the rejection is deterministic, so the call fails on the first attempt instead of paying for up to max-ai-retries identical requests. A multi-call review discloses the rejected batch's files and keeps the other batches' findings; a single-call review fails with a notice naming the cause and the REVIEW_MAX_INPUT_TOKENS knob to lower (default 48000)
  • The dashboard token test no longer assumes an en-US locale (#661): it asserts the same toLocaleString() output the component renders, so it passes under any runtime locale
  • The injection-sink floor closes three defeater gaps (#676): "Nothing sanitizes ..." counts as an absence claim, "does not prevent SQL injection" is not read as denying the sink, and a coordinator inside a conditional clause ("If, however, ...") no longer cuts the hypothetical span short and left its mitigation verb read as asserted
  • Dimension 7 carries its own external-producer boundary (#680): an artifact whose producer is legitimately outside the diff (a base image, a release binary) is treated as unshown state to verify, not as a mismatch to floor, and the closing escape refers back to the same rule
  • pr_purpose is rendered through MarkdownSafe.inline (#636): like every other model-supplied string in the summary, so a crafted purpose cannot inject headings, HTML, fences or table pipes into the posted comment
  • A backticked quotation cannot reopen a decline (#652): inline code spans are stripped from a maintainer's reply before the decline re-check, so quoting a construct such as `executor.submit` is not matched as an assertion about the reviewed code
  • Format characters no longer defeat the whole-locator guards (#654): a zero-width space, zero-width joiner, soft hyphen or BOM inside a range spelling (src/A.java:1<U+200B>-3) made :1 read as a whole locator and cleared the wrong finding. Such characters now continue the line-number token and the finding is held
  • A digit-leading finding title clears the finding it names (#653): @thrillhousebot resolved src/A.java:1 — 2 call sites of ... is the exact form the summary prints, but it read as a line range, so the finding stayed held and the maintainer was told the comment named nothing. The em dash followed by the finding's full printed title now clears it; any other spaced separator still reads as a range, and the ambiguous shape is acknowledged as ambiguous

Dependencies

  • Bumped the website docs-minor-patch group — astro 7.1.4 → 7.2.0 and @astrojs/starlight 0.41.4 → 0.41.7 — adding @astrojs/markdown-remark as a devDependency because Astro 7.2 no longer ships it with the new default Sätteri Markdown processor and the site's remarkInclude plugin still runs on the unified pipeline (#658, #689)
  • Bumped the frontend npm-minor-patch group — next 16.2.12 → 16.3.0 (fixes CVE-2025-13465 in its vendored lodash), @testing-library/jest-dom 7.0.1, @testing-library/user-event 14.6.3, and @types/node, @types/react, @types/react-dom patches — recasting the partial API mocks in the costs and tokens page tests through unknown, which the Next 16.3 production type check now requires (#662, #689)
  • Bumped typescript from 6.0.3 to 7.0.2 in the frontend (#369)

What's Changed

Fixes

  • test(dashboard): assert locale-formatted token total via toLocaleString by @devops-thiago in #681
  • fix(review): fold the external-producer carve-out into dimension 7's mismatch definition by @devops-thiago in #682
  • fix(ai): fail fast on a provider context-length rejection instead of retrying it at full price by @devops-thiago in #688
  • fix(review): route pr_purpose through MarkdownSafe.inline in the PR summary by @devops-thiago in #683
  • deps: land the docs and frontend dependabot groups with compatibility fixes by @devops-thiago in #689
  • fix(review): close three under-fire gaps in the injection-sink floor's defeaters by @devops-thiago in #685
  • fix(review): stop format characters and digit-leading titles from defeating the whole-locator guards by @devops-thiago in #687
  • fix(review): strip inline code spans from a decline before the rebuttal re-check by @devops-thiago in #686
  • fix(review): resume the quote-aware comment scan past an unclosed opener by @devops-thiago in #690
  • fix(review): failed-call coverage clause and legacy omitted count alongside summary degradations by @devops-thiago in #691
  • fix(review): build the clear directive from the configured bot logins by @devops-thiago in #692
  • fix(github): heal reads that outlive the installation token, matching the write path by @devops-thiago in #693
  • fix(review): disclose when finding verification did not run or ran partially by @devops-thiago in #694

Other changes

Full Changelog: v0.6.0...v0.6.1