Skip to content
Closed
Changes from 6 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5f8c67c
fix(review): Rust coverage toolchain and offline crate cache for the …
claude Jul 29, 2026
5c5d0e1
chore: retry review dispatch after single-cycle free-model miss
claude Jul 29, 2026
4f501c9
chore: retry review dispatch, model-pool cycle attempt 3
claude Jul 29, 2026
2efd782
fix(review): isolate cargo prefetch from PR-tree config and disable r…
claude Jul 29, 2026
4676665
chore: retry review dispatch, model-pool cycle attempt 4
claude Jul 29, 2026
2a77129
chore: merge main (Zen DeepSeek reviewer, content-based coverage locks)
claude Jul 30, 2026
35db759
fix(review): tolerate foreign-interpreter base locks in the trusted i…
claude Jul 30, 2026
6b24d84
Merge branch 'main' into claude/fast-mlsirm-pr-review-mt2e1z
opencode-agent[bot] Jul 30, 2026
1c64ae0
fix(review): keep the runner rustup toolchain resolvable from the iso…
claude Jul 30, 2026
233197d
fix(review): discover compiled locks inside requirements/ directories
claude Jul 30, 2026
10f4493
Merge branch 'main' into claude/fast-mlsirm-pr-review-mt2e1z
opencode-agent[bot] Jul 30, 2026
07ed460
Merge main (#661 base-lock closure preflight; supersedes inline best-…
claude Jul 30, 2026
41e3d67
Merge branch 'main' into claude/fast-mlsirm-pr-review-mt2e1z
opencode-agent[bot] Aug 1, 2026
fa5f93b
test(security): reject hash-directive-only requirements
seonghobae Aug 3, 2026
ffdd3d7
fix(security): require actual hashes on package lines
seonghobae Aug 3, 2026
a4d7e29
test(security): align lock regression with fail-closed hashes
seonghobae Aug 3, 2026
0cb5aa0
Resolve merge conflicts in 1 file(s)
coderabbitai[bot] Aug 3, 2026
75f5fac
chore(ci): bootstrap PR 650 review repair
seonghobae Aug 3, 2026
2f3ef34
chore(ci): remove inactive PR 650 bootstrap workflow
seonghobae Aug 3, 2026
ade1643
fix(ci): retry PR 650 review repair
seonghobae Aug 3, 2026
38fe03f
chore(ci): trigger PR 650 review repair
seonghobae Aug 3, 2026
f24d579
fix(ci): repair PR 650 with least-privilege workflow
seonghobae Aug 3, 2026
e380706
fix(ci): trigger bounded PR 650 repair on synchronization
seonghobae Aug 3, 2026
776a1ba
chore(ci): remove completed PR 650 repair scaffold
seonghobae Aug 3, 2026
2cb9fa8
chore(ci): remove PR 650 repair trigger
seonghobae Aug 3, 2026
8cc18b0
chore(ci): run bounded PR 650 review repair
seonghobae Aug 3, 2026
ea8ac9b
chore(ci): remove temporary PR 650 repair scaffold
seonghobae Aug 3, 2026
d022929
chore(ci): execute PR 650 review repair through existing SBOM workflow
seonghobae Aug 3, 2026
7b8a031
fix(ci): correct bounded PR 650 repair workflow syntax
seonghobae Aug 3, 2026
e128116
fix(ci): simplify valid PR 650 repair workflow
seonghobae Aug 3, 2026
d8ea1d2
chore(ci): restore canonical SBOM workflow while repair remains queued
seonghobae Aug 3, 2026
146d23d
Merge branch 'main' into claude/fast-mlsirm-pr-review-mt2e1z
opencode-agent[bot] Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 102 additions & 0 deletions .github/workflows/opencode-review-dispatch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,64 @@ jobs:
mkdir -p "$(dirname "$COVERAGE_SOURCE_WORKDIR")"
mv "$fetch_dir" "$COVERAGE_SOURCE_WORKDIR"
git -C "$COVERAGE_SOURCE_WORKDIR" status --short
# Pre-fetch every locked crate graph in the merge tree (root and nested
# workspaces alike, matching the sandbox's nested-manifest coverage
# discovery) so `cargo llvm-cov` can compile Rust coverage offline.
# Prefer the same pinned toolchain the sandbox measures with so
# lockfile parsing and cache layout cannot drift from the runner's
# default cargo. `cargo fetch` downloads content-addressed crates
# without executing any build scripts, and a failed prefetch keeps
# the same fail-closed sandbox behavior: the offline build surfaces
# the missing dependencies for this head.
#
# The fetch itself never trusts pull-request-controlled cargo
# configuration: it runs from a runner-owned temporary HOME and
# CARGO_HOME (cargo discovers config.toml from the working directory
# and CARGO_HOME, so a config committed to the merge tree — including
# an external credential-provider executable — is never loaded on
# this authenticated runner). Only the content-addressed registry/
# and git/ caches are copied into the tree-local CARGO_HOME the
# network-isolated sandbox uses; configuration and credential files
# are never propagated.
prefetch_manifests="$(git -C "$COVERAGE_SOURCE_WORKDIR" ls-files 'Cargo.toml' '*/Cargo.toml')"
if [ -n "$prefetch_manifests" ]; then
prefetch_cargo=()
if command -v rustup >/dev/null 2>&1 \
&& rustup toolchain install 1.94.1 --profile minimal --no-self-update >/dev/null 2>&1; then
prefetch_cargo=(rustup run 1.94.1 cargo)
elif command -v cargo >/dev/null 2>&1; then
prefetch_cargo=(cargo)
fi
if [ "${#prefetch_cargo[@]}" -eq 0 ]; then
echo "::warning::cargo is unavailable on this runner, so no locked crate graph was pre-fetched; offline Rust coverage for this head will fail with missing dependencies."
else
prefetch_home="$(mktemp -d "${RUNNER_TEMP:-/tmp}/cargo-prefetch.XXXXXX")"
while IFS= read -r prefetch_manifest; do
[ -n "$prefetch_manifest" ] || continue
prefetch_dir="$(dirname "$prefetch_manifest")"
if [ ! -f "$COVERAGE_SOURCE_WORKDIR/$prefetch_dir/Cargo.lock" ]; then
continue
fi
if ! (
cd "$prefetch_home" \
&& HOME="$prefetch_home" \
CARGO_HOME="$prefetch_home/.cargo" \
"${prefetch_cargo[@]}" fetch --locked \
--manifest-path "$COVERAGE_SOURCE_WORKDIR/$prefetch_manifest"
); then
echo "::warning::Locked cargo prefetch failed for ${prefetch_manifest}; offline Rust coverage will surface the missing dependencies for this head."
fi
done <<<"$prefetch_manifests"
sandbox_cargo_home="$COVERAGE_SOURCE_WORKDIR/.opencode-sandbox-home/.cargo"
for prefetch_cache_dir in registry git; do
if [ -d "$prefetch_home/.cargo/$prefetch_cache_dir" ]; then
mkdir -p "$sandbox_cargo_home"
cp -a "$prefetch_home/.cargo/$prefetch_cache_dir" "$sandbox_cargo_home/"
fi
done
rm -rf "$prefetch_home"
Comment thread
coderabbitai[bot] marked this conversation as resolved.
fi
fi
tar -cf "$COVERAGE_SOURCE_ARCHIVE" -C "$COVERAGE_SOURCE_WORKDIR" .

- name: Upload materialized pull request merge tree
Expand Down Expand Up @@ -589,6 +647,25 @@ jobs:
&& tar -xzf /tmp/cargo-llvm-cov.tar.gz -C /usr/local/bin cargo-llvm-cov \
&& chmod 0755 /usr/local/bin/cargo-llvm-cov \
&& rm -f /tmp/cargo-llvm-cov.tar.gz
# Pinned rustup toolchain with llvm-tools-preview: the distribution
# rustc/cargo cannot parse modern version-4 Cargo.lock files and ships
# no llvm-cov/llvm-profdata, so `cargo llvm-cov` coverage evidence for
# Rust repositories needs this toolchain. The rustup-init binary is
# sha256-pinned and the toolchain channel is version-pinned. Only
# RUSTUP_HOME is exported for the runtime; CARGO_HOME is deliberately
# not baked into the image so the sandbox's tree-local CARGO_HOME
# (which holds the pre-fetched crate cache) is the only cargo home the
# measured commands ever see.
ENV RUSTUP_HOME=/usr/local/rustup
RUN curl --proto '=https' --tlsv1.2 -fsSLo /tmp/rustup-init \
https://static.rust-lang.org/rustup/archive/1.28.2/x86_64-unknown-linux-gnu/rustup-init \
&& echo '20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c /tmp/rustup-init' | sha256sum -c - \
&& chmod 0755 /tmp/rustup-init \
&& CARGO_HOME=/usr/local/cargo /tmp/rustup-init -y --no-modify-path --profile minimal \
--default-toolchain 1.94.1 --component llvm-tools-preview \
&& ln -sf /usr/local/cargo/bin/* /usr/local/bin/ \
&& chmod -R a+rX /usr/local/rustup /usr/local/cargo \
&& rm -f /tmp/rustup-init
RUN curl --proto '=https' --tlsv1.2 -fsSLo /tmp/pnpm.tgz \
https://registry.npmjs.org/pnpm/-/pnpm-11.5.3.tgz \
&& echo '7ac1c919341c213a34dc0d02afb7143c5c26ac26ee8c4782deea821b8ac64d2134a081fd8941dae6e29bbb48f58dfc2b7fbceeccc07cb2f09d219d342a4969ed /tmp/pnpm.tgz' | sha512sum -c - \
Expand Down Expand Up @@ -1445,6 +1522,31 @@ jobs:
failures=$((failures + 1))
return 1
fi
# The sandbox has no network access; make cargo resolve strictly from
# the crate cache the online coverage-source-tree job pre-fetched into
# the tree-local CARGO_HOME so missing dependencies fail fast with a
# clear offline error instead of a network timeout.
export CARGO_NET_OFFLINE=true
# Coverage always measures with the trusted image toolchain: a
# repository rust-toolchain(.toml) requesting any other channel would
# make the rustup proxy attempt a download the offline sandbox cannot
# perform. The env override takes precedence over directory overrides,
# keeping toolchain selection deterministic and offline-safe, and
# rustup's auto-install is disabled so a missing pinned toolchain
# fails fast as an image-provisioning error instead of a network
# attempt the sandbox can never satisfy.
export RUSTUP_TOOLCHAIN=1.94.1
Comment thread
coderabbitai[bot] marked this conversation as resolved.
export RUSTUP_AUTO_INSTALL=0
if ! rustc --version >/dev/null 2>&1; then
append "### Rust coverage toolchain"
append ""
append "- Result: FAIL"
append "- Reason: the trusted offline coverage image cannot resolve the pinned Rust 1.94.1 toolchain (rustc --version failed with rustup auto-install disabled)."
append "- Fix: rebuild the trusted coverage image with the pinned toolchain, then rerun the current-head coverage job."
append ""
failures=$((failures + 1))
return 1
fi
ensure_rust_gpu_adapter
ensure_rust_desktop_deps
}
Expand Down
Loading