Skip to content
Draft
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
4f8c786
fix(coverage): scope Rust evidence to changed packages
seonghobae Aug 21, 2026
e2d7c14
docs(changelog): record scoped Rust coverage
seonghobae Aug 21, 2026
9cb5a40
test(opencode): refresh review workflow snapshot
seonghobae Aug 21, 2026
8ec2c9f
fix(coverage): discover nested Rust manifests
seonghobae Aug 21, 2026
6aa186b
test(coverage): execute Rust manifest selection contract
seonghobae Aug 21, 2026
92810bf
test(coverage): fail on deleted root Rust lockfile
seonghobae Aug 21, 2026
94ab7c0
fix(coverage): keep deleted root lockfile workspace-wide
seonghobae Aug 21, 2026
91c16eb
test(coverage): refresh exact review workflow pin
seonghobae Aug 21, 2026
e960321
test(ci): keep coverage contracts composable
seonghobae Aug 21, 2026
c267298
Merge branch 'main' into fix/rust-coverage-package-scope
opencode-agent[bot] Aug 21, 2026
80d13a1
fix(coverage): inherit Rust workspace baseline for crates
seonghobae Aug 21, 2026
3ea59f4
Merge remote-tracking branch 'origin/main' into HEAD
seonghobae Aug 21, 2026
db1802f
fix(coverage): normalize root Rust workspace manifest
seonghobae Aug 21, 2026
2a5ab45
fix(coverage): avoid duplicate Rust workspace runs
seonghobae Aug 21, 2026
92c4afc
Merge branch 'main' into fix/rust-coverage-package-scope
opencode-agent[bot] Aug 21, 2026
7d66872
Merge branch 'main' into fix/rust-coverage-package-scope
opencode-agent[bot] Aug 21, 2026
fae577e
Merge branch 'main' into fix/rust-coverage-package-scope
opencode-agent[bot] Aug 21, 2026
f71db4b
fix(ci): refresh audit lock and scheduler assertion
seonghobae Aug 21, 2026
be6534b
test(ci): restore complete docstring coverage
seonghobae Aug 21, 2026
0a88e24
Merge remote-tracking branch 'origin/main' into HEAD
seonghobae Aug 21, 2026
471f34d
fix(review): close coverage and credential contract gaps
seonghobae Aug 29, 2026
5772721
fix(review): trigger coverage for deleted manifests
seonghobae Aug 29, 2026
1db47e2
Merge main into fix/rust-coverage-package-scope, updating stale
claude Aug 30, 2026
923fa07
Merge remote-tracking branch 'origin/main' into fix/rust-coverage-pac…
claude Aug 30, 2026
047ad58
fix(rust-coverage): include rename endpoints; enforce workspace bound…
claude Aug 30, 2026
2b1abb0
Merge remote-tracking branch 'origin/main' into work-pr1187
claude Sep 4, 2026
3add872
fix(tests): sync approved_gh_token_assignments with merged workflow
claude Sep 4, 2026
d359776
Merge origin/main; recompute the review-dispatch blob pin
claude Sep 5, 2026
72a9d72
Merge origin/main; recompute the review-dispatch blob pin a second time
claude Sep 5, 2026
3da6596
Merge origin/main into fix/rust-coverage-package-scope
claude Sep 6, 2026
541cadd
Merge origin/main into fix/rust-coverage-package-scope
Sep 6, 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
11 changes: 8 additions & 3 deletions .github/workflows/opencode-review-dispatch.yml
Comment thread
seonghobae marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -1734,22 +1734,27 @@ jobs:
}

rust_coverage_manifests() {
if [ -f Cargo.toml ]; then
# A repository-wide coverage run is required when the workspace
# manifest or lockfile changed. Otherwise measure only the
# changed Rust package(s); building every workspace member at once
# can exhaust the review runner disk before tests begin.
if has_changed_tracked_files Cargo.toml Cargo.lock; then
Comment thread
devin-ai-integration[bot] marked this conversation as resolved.
Outdated
printf '%s\n' Cargo.toml
return 0
Comment thread
seonghobae marked this conversation as resolved.
Comment thread
devin-ai-integration[bot] marked this conversation as resolved.
fi
changed_files_for_coverage \
| while IFS= read -r changed_path; do
case "$changed_path" in
Cargo.toml|Cargo.lock|*.rs) ;;
Cargo.toml|Cargo.lock|*/Cargo.toml|*/Cargo.lock|*.rs) ;;
*) continue ;;
esac
candidate_dir="$(dirname "$changed_path")"
while [ "$candidate_dir" != "." ] && [ "$candidate_dir" != "/" ]; do
while :; do
if [ -f "${candidate_dir}/Cargo.toml" ]; then
printf '%s\n' "${candidate_dir}/Cargo.toml"
break
Comment thread
seonghobae marked this conversation as resolved.
fi
[ "$candidate_dir" = "." ] && break
Comment thread
seonghobae marked this conversation as resolved.
next_dir="$(dirname "$candidate_dir")"
if [ "$next_dir" = "$candidate_dir" ]; then
break
Comment thread
seonghobae marked this conversation as resolved.
Outdated
Comment thread
seonghobae marked this conversation as resolved.
Comment thread
seonghobae marked this conversation as resolved.
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ Semantic Versioning where the repository publishes a release.

### Fixed

- Scope OpenCode Rust coverage evidence to changed Cargo packages while
retaining full-workspace coverage for root workspace and lockfile changes,
preventing large repositories from exhausting the review runner before
coverage starts.
- Parsed `opencode.jsonc` as JSONC (stripping `//` and `/* */` comments outside string literals) in the reasoning-effort guard and its contract tests, instead of raw `json.loads`, which rejected the file the moment it carried its first explanatory comment (added for the `contextual-orchestrator` provider block) with `Expecting property name enclosed in double quotes`. Comment markers inside string values, such as the `$schema` URL, are left untouched.
- Download the pinned `uv` 0.12.1 exporter from the official GitHub Releases URL instead of `releases.astral.sh`, which now returns HTTP 403 and blocks org-wide OpenCode `coverage-evidence`. The SHA-256 pin is unchanged. The opener may follow one hop onto `release-assets.githubusercontent.com` or `objects.githubusercontent.com` and still rejects every other host, userinfo, non-HTTPS scheme, and nondefault port (ContextualWisdomLab/.github#1109).
- Compared the trusted `uv` executable's post-install `--version` output against the real GitHub Releases build's full string, `uv 0.12.1 (x86_64-unknown-linux-gnu)`, instead of the bare `uv 0.12.1` the prior check required; the genuine release binary always prints the target triple, so every installation was failing the pin check immediately after the archive download itself was fixed (ContextualWisdomLab/.github#1109).
Expand Down
4 changes: 4 additions & 0 deletions tests/test_opencode_agent_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,10 @@ def test_opencode_target_coverage_materializes_only_after_authorized_dispatch():
assert "rust_coverage_fail_under_lines()" in measure_step
assert "package.metadata.opencode.coverage.minimum_lines" in measure_step
assert "workspace.metadata.opencode.coverage.minimum_lines" in measure_step
assert "has_changed_tracked_files Cargo.toml Cargo.lock" in measure_step
assert "changed Rust package(s)" in measure_step
assert 'candidate_dir="$(dirname "$changed_path")"' in measure_step
assert "*/Cargo.toml|*/Cargo.lock|*.rs" in measure_step
assert "scripts/ci/rust_coverage_threshold.py" in measure_step
assert '--fail-under-lines "$threshold"' in measure_step
assert "uv sync --project" not in measure_step
Expand Down
2 changes: 1 addition & 1 deletion tests/test_pr_review_autofix_nvidia_nim_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
DOCTORING_RECORD = Path("docs/doctoring/hourly-nvidia-nim-autofix.md")
CHANGELOG = Path("CHANGELOG.md")
REVIEW_DISPATCH_WORKFLOW = Path(".github/workflows/opencode-review-dispatch.yml")
REVIEW_DISPATCH_BLOB_SHA = "83f6830d5c21a324b4dbcd4e5c21a07968994b81"
REVIEW_DISPATCH_BLOB_SHA = "05fccd9cdbc0ad221a277faf6725223a9c167ac3"


def _workflow_text(path: Path) -> str:
Expand Down
Loading