[🔥AUDIT🔥] review: bump installed reviewer to review-v1.11.0 - #318
Conversation
…eview-v1.11.0 ## Why The reviewer installed on this repo (`.github/workflows/review.md`) has been pinned at `review-v1.7.0` since #276 (2026-07-21), four releases behind the shared source. Everything the shared package has shipped since then runs in consuming repos but not here, including one change that makes an existing setting in our own `ROUTING` inert: - **v1.8.0 patch 034181f**: gh-aw's safe-output sanitizer strips XML/HTML comments, so the hidden fingerprint stamp a review body carries never reached the PR; every re-review planned `no-prior-fingerprint` and escalated to full depth. Our `ROUTING` has said `re-review scoped` since #277, and on v1.7.0 that dial does nothing. The plan CLI now falls back to the Step 9 cache-memory record and reports `stampSource`. - **v1.8.0**: the deterministic-orchestrator slices land. Staging becomes a `pre-agent-steps:` step (`lib/stage-pr.ts`), scripted dispatch becomes the only mode (the ROUTING `dispatch` dial is retired; we never set it), Steps 4-6 become code (`lib/submission-plan.ts`), and the dispatch-conformance gate blocks a verdict whose sub-agent outputs do not exist (the v1.7.0 acceptance trial caught the orchestrator submitting a REQUEST_CHANGES after dispatching zero sub-agents). - **v1.9.0/v1.10.0**: open-thread suppression actually fires (it was unreachable on every conforming run, so re-reviews re-posted findings an open bot thread already tracked), `threads.json` / `human-threads.json` are staged by code, and a suppression is attributed to its best-matching thread rather than the first one it clears. - **v1.11.0**: a sub-agent the provider blocks is named as a refusal rather than "malformed output", failure detail and per-agent tool-call counts are kept, and a refused reviewer falls back to `claude-opus-4-8` instead of silently costing coverage. Also picked up: Gerald `.github/NOTIFIED` support, the per-lens consumer payload seam, and the `documentation` reviewer (opt-in; not enabled here). ## Why not `gh aw update` Same as #276: gh-aw's `resolveLatestRef` rejects changesets-style prefixed tags (`review-v1.11.0`) as non-semver, falls through to branch resolution, and 404s. Updates of this workflow stay manual. ## What this PR does - Replicates `gh aw update`'s 3-way merge by hand: base = `review-v1.7.0` source, ours = installed copy, theirs = `review-v1.11.0` source (identical to current main), then `gh aw compile review`. - **Two local overrides retire, because upstream now carries them.** `timeout-minutes: 40` is the shared default as of v1.8.0 (82af000), and the `sandbox.agent.version: v0.27.27` pin plus the `models:` claude-fable-5 pricing block were removed at source in 98f686f. Both override comments said they went away at this bump; they do. - **The remaining differences are the documented overrides and nothing else**, enforced by `review-pins.test.ts`: the same-repo fork guard in `if:` and its `roles: all` comment (public-repo hardening), the commented-out `observability:` block (the `GH_AW_OTEL_SENTRY_*` secrets still exist neither on this repo nor at org level), `max-ai-credits: 2500` with its `REVIEW_MAX_AI_CREDITS` mirror, and the comment on the lib checkout `ref:`. - `source:` and the lib checkout `ref:` both move to `review-v1.11.0` in lockstep, and the recompiled lock picks up the new pre-agent staging step, the dispatcher's `npm ci`, the dispatch-conformance gate `post-steps` step, and `BASH_MAX_TIMEOUT_MS: 1200000` (the blocking dispatcher call). - No consumer-config change is needed: `.github/aw/review/ROUTING` carries no retired `dispatch` line, no `correctness-checks.md` alias to migrate, and the new `documentation` reviewer stays off until a repo adds `enable documentation`. ## Verification - `pnpm test`: 1618 tests across 69 files pass, including `review-pins.test.ts` (source/ref/lock literals all `review-v1.11.0`, and every hunk against the pinned source carries a `KHAN/ACTIONS LOCAL OVERRIDE` marker) and `version-sync.test.ts`. - `pnpm typecheck`: clean. - `gh aw compile review`: 0 errors, 0 warnings. - No changeset needed: both files are under `.github/`, the check's default exclusion, and the shared `workflows/review` package is untouched.
Review Guidancegithub-actions (1 file)
Excluded from review (1 file)Not individually reviewed — generated, formatting-only, or
|
| path: gh-aw-review-lib | ||
| persist-credentials: false | ||
| ref: review-v1.7.0 | ||
| ref: review-v1.11.0 |
There was a problem hiding this comment.
suggestion (non-blocking): This is the second manual bump for the same gh-aw limitation — the process is now automatable and could live in CI instead of a hand-merged audit PR. Both #276 and this PR replicate gh aw update by hand because upstream resolveLatestRef rejects changesets-style tags. But the constraint that made this manual has weakened: this repo hosts both the source and the install, and review-pins.test.ts (which I read) now requires every local override to carry a KHAN/ACTIONS LOCAL OVERRIDE marker adjacent to its hunk — meaning the overrides are machine-locatable and the merge is mechanically reproducible (checkout tagged source, re-apply marked hunks, gh aw compile). A small script or release-triggered workflow could open this PR automatically whenever a review-v* tag lands, with the existing tests as the gate.
A sketch, not a committable replacement:
As a follow-up, either (a) script the bump (re-apply marker-tagged override hunks onto the tagged source and recompile, opening a PR on each `review-v*` release), or (b) file/track an upstream gh-aw issue for `resolveLatestRef` rejecting prefixed tags so `gh aw update` can take this over — and link whichever from the 'Why not gh aw update' section so the third bump doesn't re-derive this.
The reviewer installed on this repo (`.github/workflows/review.md`) was pinned at `review-v1.11.0`; #326 released review@1.12.0, so the shared package's cross-source dedup tier 2 runs in consuming repos but not here. What v1.12.0 adds, and what this bump picks up: - The `claim-clusterer` sub-agent (sonnet, read-only, identity judgment only) names the candidate comments that describe ONE defect, and `dedup.ts` verifies that assertion and merges them, so one problem found by several sources posts once. Tier 2 requires no line agreement, so the same-defect-different-anchor shape is mergeable for the first time; every merge rule stays in code, only a NON-BLOCKING copy may be absorbed on the model's word, and the survivor is always the highest-severity copy. - Dispatch is conditional (only when the candidates hold a legally mergeable pair), and a missing definition or unusable reply leaves the run on tier 1, i.e. today's behavior. - The prompt's Step 3 dedup description gains the clusterer and the `clustering` block in the dispatch result. Mechanics, same as #318: `gh aw update` cannot resolve changesets-style prefixed tags (`review-v1.12.0`), so the bump is a hand-run 3-way merge (base = `review-v1.11.0` source, ours = installed copy, theirs = `review-v1.12.0` source) followed by `gh aw compile review`. - `source:` and the lib checkout `ref:` move to `review-v1.12.0` in lockstep; the recompiled lock changes only those literals plus its metadata hashes (the prompt body reaches the runner through `{{#runtime-import .github/workflows/review.md}}`, and inline sub-agents are restored from the activation artifact, so the new agent section does not appear in the lock). - The local overrides are unchanged and still the only differences from the pinned source: the same-repo fork guard in `if:` plus its `roles: all` comment, the commented-out `observability:` block, the `max-ai-credits: 2500` / `REVIEW_MAX_AI_CREDITS` pair, and the comment on the lib checkout `ref:`. - No consumer-config change: `.github/aw/review/ROUTING` needs no dial for clustering. Verification: `pnpm vitest run` 1655 tests across 71 files pass, including `review-pins.test.ts` (every literal `review-v1.12.0`; every hunk against the pinned source carries a `KHAN/ACTIONS LOCAL OVERRIDE` marker) and `version-sync.test.ts`; `pnpm typecheck` clean; `gh aw compile review` 0 errors, 0 warnings. No changeset: both files are under `.github/`, the check's default exclusion, and the shared `workflows/review` package is untouched. Auditors: jeresig
🖍 _This is an audit!_ 🖍 ## Summary: ## Why The reviewer installed on this repo (`.github/workflows/review.md`) was pinned at `review-v1.11.0`; #326 released review@1.12.0, so the shared package's cross-source dedup tier 2 runs in consuming repos but not here. What v1.12.0 adds, and what this bump picks up: - The `claim-clusterer` sub-agent (sonnet, read-only, identity judgment only) names the candidate comments that describe ONE defect, and `dedup.ts` verifies that assertion and merges them, so one problem found by several sources posts once. Tier 2 requires no line agreement, so the same-defect-different-anchor shape is mergeable for the first time; every merge rule stays in code, only a NON-BLOCKING copy may be absorbed on the model's word, and the survivor is always the highest-severity copy. - Dispatch is conditional (only when the candidates hold a legally mergeable pair), and a missing definition or unusable reply leaves the run on tier 1, i.e. today's behavior. - The prompt's Step 3 dedup description gains the clusterer and the `clustering` block in the dispatch result. ## Why not `gh aw update` Same as #318 and #276: gh-aw's `resolveLatestRef` rejects changesets-style prefixed tags (`review-v1.12.0`) as non-semver, falls through to branch resolution, and 404s. Updates of this workflow stay manual. ## What this PR does - Replicates `gh aw update`'s 3-way merge by hand: base = `review-v1.11.0` source, ours = installed copy, theirs = `review-v1.12.0` source, then `gh aw compile review`. The only conflict was the lib checkout `ref:` line inside its override comment block; resolved as comment plus new ref. - `source:` and the lib checkout `ref:` move to `review-v1.12.0` in lockstep. The recompiled lock changes only those literals plus its metadata hashes: the prompt body reaches the runner through `{{#runtime-import .github/workflows/review.md}}` and inline sub-agents are restored from the activation artifact, so the new agent section does not appear in the lock. - The local overrides are unchanged and still the only differences from the pinned source, enforced by `review-pins.test.ts`: the same-repo fork guard in `if:` and its `roles: all` comment (public-repo hardening), the commented-out `observability:` block (the `GH_AW_OTEL_SENTRY_*` secrets still exist neither on this repo nor at org level), `max-ai-credits: 2500` with its `REVIEW_MAX_AI_CREDITS` mirror, and the comment on the lib checkout `ref:`. - No consumer-config change is needed: `.github/aw/review/ROUTING` needs no dial for clustering, and the roster it enables is untouched. ## Verification - `pnpm vitest run`: 1655 tests across 71 files pass, including `review-pins.test.ts` (source/ref/lock literals all `review-v1.12.0`, and every hunk against the pinned source carries a `KHAN/ACTIONS LOCAL OVERRIDE` marker) and `version-sync.test.ts`. - `pnpm typecheck`: clean. - `gh aw compile review`: 0 errors, 0 warnings. - No changeset needed: both files are under `.github/`, the check's default exclusion, and the shared `workflows/review` package is untouched. - This PR's own review does not exercise tier 2, and that is expected: for a `pull_request` event the lock runs from the head (so the lib is checked out at `review-v1.12.0`), but `restore_base_github_folders.sh` overwrites `.github/` with the base-branch snapshot and the activation job extracts the inline sub-agents from that same base markdown, so the prompt and the `## agent:` set both come from main at `review-v1.11.0`. With no `claim-clusterer` definition, dispatch leaves the run on tier 1 and records a run warning: the documented soft-degradation path. Both halves come from main once this merges. Author: jwbron Auditors: jeresig, jaredly Required Reviewers: Approved By: Checks: ⏭️ 8 checks have been skipped, ⌛ 1 check is pending, ✅ 2 checks were successful Pull Request URL: #327
🖍 This is an audit! 🖍
Summary:
Why
The reviewer installed on this repo (
.github/workflows/review.md) has beenpinned at
review-v1.7.0since #276 (2026-07-21), four releases behind theshared source. Everything the shared package has shipped since then runs in
consuming repos but not here, including one change that makes an existing
setting in our own
ROUTINGinert:comments, so the hidden fingerprint stamp a review body carries never
reached the PR; every re-review planned
no-prior-fingerprintandescalated to full depth. Our
ROUTINGhas saidre-review scopedsincereview: enable scoped re-reviews (follow-up to the v1.7.0 bump) #277, and on v1.7.0 that dial does nothing. The plan CLI now falls back to
the Step 9 cache-memory record and reports
stampSource.pre-agent-steps:step (lib/stage-pr.ts), scripted dispatch becomes theonly mode (the ROUTING
dispatchdial is retired; we never set it),Steps 4-6 become code (
lib/submission-plan.ts), and thedispatch-conformance gate blocks a verdict whose sub-agent outputs do not
exist (the v1.7.0 acceptance trial caught the orchestrator submitting a
REQUEST_CHANGES after dispatching zero sub-agents).
unreachable on every conforming run, so re-reviews re-posted findings an
open bot thread already tracked),
threads.json/human-threads.jsonarestaged by code, and a suppression is attributed to its best-matching thread
rather than the first one it clears.
than "malformed output", failure detail and per-agent tool-call counts are
kept, and a refused reviewer falls back to
claude-opus-4-8instead ofsilently costing coverage.
Also picked up: Gerald
.github/NOTIFIEDsupport, the per-lens consumerpayload seam, and the
documentationreviewer (opt-in; not enabled here).Why not
gh aw updateSame as #276: gh-aw's
resolveLatestRefrejects changesets-style prefixedtags (
review-v1.11.0) as non-semver, falls through to branch resolution, and404s. Updates of this workflow stay manual.
What this PR does
gh aw update's 3-way merge by hand: base =review-v1.7.0source, ours = installed copy, theirs =
review-v1.11.0source (identicalto current main), then
gh aw compile review.timeout-minutes: 40is the shared default as of v1.8.0 (82af000), and thesandbox.agent.version: v0.27.27pin plus themodels:claude-fable-5pricing block were removed at source in 98f686f. Both override comments
said they went away at this bump; they do.
else, enforced by
review-pins.test.ts: the same-repo fork guard inif:and itsroles: allcomment (public-repo hardening), thecommented-out
observability:block (theGH_AW_OTEL_SENTRY_*secretsstill exist neither on this repo nor at org level),
max-ai-credits: 2500with its
REVIEW_MAX_AI_CREDITSmirror, and the comment on the libcheckout
ref:.source:and the lib checkoutref:both move toreview-v1.11.0inlockstep, and the recompiled lock picks up the new pre-agent staging step,
the dispatcher's
npm ci, the dispatch-conformance gatepost-stepsstep,and
BASH_MAX_TIMEOUT_MS: 1200000(the blocking dispatcher call)..github/aw/review/ROUTINGcarries noretired
dispatchline, nocorrectness-checks.mdalias to migrate, andthe new
documentationreviewer stays off until a repo addsenable documentation.Verification
pnpm test: 1618 tests across 69 files pass, includingreview-pins.test.ts(source/ref/lock literals allreview-v1.11.0, andevery hunk against the pinned source carries a
KHAN/ACTIONS LOCAL OVERRIDEmarker) andversion-sync.test.ts.pnpm typecheck: clean.gh aw compile review: 0 errors, 0 warnings..github/, the check's defaultexclusion, and the shared
workflows/reviewpackage is untouched.