Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
334 changes: 333 additions & 1 deletion PLANS.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ ocr-ci --help
The exact recommended OCR release and its verified asset checksums live in the [versioned compatibility manifest](compatibility/ocr-support.json). CI should pin that release and checksum before execution.
The [versioned compatibility policy](docs/compatibility.md) records tested assets and evidence and describes the conservative Dependabot-like qualification workflow for later upstream releases.
Review output defaults to English. `OCR_REVIEW_LANGUAGE` accepts another explicit language name when a project needs localized review output; for example, `OCR_REVIEW_LANGUAGE=Russian`.
The current OCR 1.10.0 integration defaults `OCR_REVIEW_EFFORT` to `medium` for two review rounds. `low` and `high` are explicit one- and three-round alternatives; see the [configuration reference](docs/configuration.md#review-effort) for cost, budget, and precedence boundaries.
The current OCR 1.10.1 integration defaults `OCR_REVIEW_EFFORT` to `medium` for two review rounds. `low` and `high` are explicit one- and three-round alternatives; see the [configuration reference](docs/configuration.md#review-effort) for cost, budget, and precedence boundaries.

Stable distributions are published to [PyPI](https://pypi.org/project/open-code-review-toolkit/) and mirrored as checksum-listed, provenance-attested assets in the corresponding [GitHub Release](https://github.com/xeonvs/open-code-review-toolkit/releases). Development snapshots are published only to TestPyPI.

Expand Down
6 changes: 6 additions & 0 deletions changelog.d/145.bugfix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Correct GitLab review summaries by keeping OCR coverage, publication integrity, findings, and OCR core advisories as independent signals.

- **Added:** accepted OCR background recommendations are projected as a receipt-bound numeric `ocr.toolkit-advisory/v1` line under Technical details, including failed-result summaries; they no longer become OCR warnings or approval blockers.
- **Fixed:** complete OCR coverage followed by publication filtering now renders `Review complete with publication filtering`, preserves only exhaustively validated original outcome/count combinations, and does not invent partial-coverage or pathless failed-item diagnostics.
- **Changed:** horizontal tabs are retained only in `existing_code` and `suggestion_code` after the unchanged value passes all secret, PII, forbidden-value, laundering, and budget checks, and Recommended focus areas are shown only for two or more published findings.
- **Unchanged:** publication filtering remains warning-bearing and automatic-approval-ineligible; receipt v5, publication-DLP signal v2, manifest/result schemas, secret/PII/laundering/budget checks, ordinary OCR warnings, real partial/budget outcomes, and the existing non-zero tool-call/token summary format remain authoritative.
8 changes: 8 additions & 0 deletions changelog.d/146.maintenance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Qualify and promote checksum-pinned Open Code Review 1.10.1 for toolkit 0.8.4.

- **Added:** canonical qualification evidence records the hosted OCR 1.10.1 result, completion-cap, medium-effort, and max-tools probes.
- **Changed:** preflight, the compatibility manifest, and the GitLab example now require OCR 1.10.1. SHA-256 pins are Linux AMD64 `8b806c221d409727a21611b4a7952d8e15edadbbc25f5affccaeb8f677e4055c`, Darwin ARM64 `8fc24bd825c9d918b894be05c0cf27fac8d30bc549257c812d87337167c7563c`, and upstream `sha256sum.txt` `ec72bda51f1227f412ee00602d952868efc57d847cce0ae1586fb97069d4139d`.
- **Consumed:** bounded private session-cache keys reduce upstream cache-key risk without adding a toolkit receipt or telemetry field.
- **Unchanged:** result and manifest schemas, inherited OpenAI completion cap `16384`, explicit `4096` override, default `medium` effort, and behaviorally qualified max-tools semantics remain unchanged.
- **Not consumed:** the upstream GitHub Action, delegate skill, npm launcher, provider preset, and repository-local `providers.go` rule do not alter the toolkit's native-binary, explicit-protocol integration.
- **Deployment:** update directly from OCR 1.10.0 to 1.10.1; no intermediate OCR version is required.
1 change: 1 addition & 0 deletions changelog.d/146.rules.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
OCR 1.10.1 adds `.m` files to its review allowlist and selects MATLAB or Objective-C built-in rules from file content. The upstream repository-local `providers.go` rule is not a toolkit-wide rule.
204 changes: 204 additions & 0 deletions compatibility/evidence/ocr-1.10.1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
{
"assets": [
{
"name": "opencodereview-darwin-amd64",
"sha256": "259dd57e09ed326ac001ecdb0798296ac06a1ca1ebfd5a55588c4647d2eb75f0",
"size": 57633504
},
{
"name": "opencodereview-darwin-arm64",
"sha256": "8fc24bd825c9d918b894be05c0cf27fac8d30bc549257c812d87337167c7563c",
"size": 54677666
},
{
"name": "opencodereview-linux-amd64",
"sha256": "8b806c221d409727a21611b4a7952d8e15edadbbc25f5affccaeb8f677e4055c",
"size": 55890082
},
{
"name": "opencodereview-linux-arm64",
"sha256": "681d9fb93352f56439b1ac9c64e2a62b1b3c20e753d6ad69dd02f4bd1baa7f3b",
"size": 52625570
},
{
"name": "opencodereview-windows-amd64.exe",
"sha256": "66f495d48ee6fb155c9812ba8e8d650e1a8ad34be9cca174831cea1b7151f6e3",
"size": 57351680
},
{
"name": "opencodereview-windows-arm64.exe",
"sha256": "b3b0628d61ca980705b2c6eb3166c264af3ce1eac839e1786fe5a968491abf91",
"size": 53334016
},
{
"name": "sha256sum.txt",
"sha256": "ec72bda51f1227f412ee00602d952868efc57d847cce0ae1586fb97069d4139d",
"size": 572
}
],
"classification": "human-review-required",
"classification_reasons": [
"release notes contain a material or ambiguous compatibility signal"
],
"comparison_version": "1.10.0",
"contracts": {
"comment_thinking_probe": {
"additive_field_preserved": true,
"posting_exposes_thinking": false,
"result": "passed"
},
"completion_cap_probe": {
"explicit": 4096,
"inherited": 16384,
"result": "passed",
"wire_field": "max_completion_tokens"
},
"numeric_cli_probe": {
"max_tokens_budget": {
"cases": {
"invalid_below": {
"effective": null,
"input": -1,
"outcome": "rejected"
},
"minimum": {
"effective": 1,
"input": 1,
"outcome": "accepted"
},
"omitted": {
"effective": "unlimited",
"input": null,
"outcome": "accepted"
},
"representative": {
"effective": 30000,
"input": 30000,
"outcome": "accepted"
},
"sentinel": {
"effective": "unlimited",
"input": 0,
"outcome": "accepted"
}
},
"maximum": null,
"owner": "ocr-cli"
},
"max_tools": {
"cases": {
"invalid_below": {
"effective": null,
"input": -1,
"outcome": "rejected"
},
"minimum": {
"effective": 100,
"input": 50,
"outcome": "accepted"
},
"minimum_minus_one": {
"effective": 100,
"input": 49,
"outcome": "normalized",
"reported_normalization": 50
},
"omitted": {
"effective": 100,
"input": null,
"outcome": "accepted"
},
"representative": {
"effective": 101,
"input": 101,
"outcome": "accepted"
},
"sentinel": {
"effective": 100,
"input": 0,
"outcome": "accepted"
}
},
"maximum": null,
"owner": "ocr-template-or-higher-cli",
"reported_minimum": 50
},
"result": "passed"
},
"optional_capabilities": [
"llm_result_identity",
"per_run_model_override",
"per_run_provider_override",
"review_effort",
"semantic_grouping"
],
"preview_probe": {
"format": "json",
"path": "example.py",
"result": "passed",
"session_store_created": false
},
"required_review_flags": [
"--audience",
"--background-file",
"--effort",
"--format",
"--from",
"--max-tokens-budget",
"--max-tools",
"--preview",
"--rule",
"--to"
],
"result_contract_probe": {
"additive_fields_allowed": true,
"comment_fields": [
"category",
"content",
"end_line",
"existing_code",
"path",
"severity",
"start_line",
"thinking"
],
"manifest_schema": "ocr.run-manifest/v1",
"normalized_outcome": "clean",
"result": "passed"
},
"review_budget_probe": {
"budget": 30000,
"completed": 2,
"failed_budget": 1,
"partial_findings_preserved": true,
"result": "passed",
"selected": 3
},
"semantic_grouping_probe": {
"default_effort": "medium",
"filter_requests": 1,
"grouping_requests": 1,
"main_requests": 3,
"result": "passed",
"review_rounds": 2
},
"target_rule_selection_probe": {
"format": "json",
"from_to_unchanged": true,
"path": "synthetic-template.ocrfixture",
"result": "passed",
"source_exclusion": "unsupported_ext",
"target_selected": true
},
"version_probe": "passed"
},
"published_at": "2026-08-26T08:51:59Z",
"release_changes": "## 🚀 Features\n\n- feat(rules): add Objective-C-specific review rules (#1061)\n- feat(allowlist): add matlab support (#574)\n- feat(rules): add project review rule for providers.go (#1057)\n\n## 🐛 Bug Fixes\n\n- fix(llm): bound session task key length (#1009)\n- fix(skill): handle delegate CLI version skew and background limits (#1047)\n- fix(action): forward review timeout and complete LLM config (#1051)\n- fix(llm): serve GPT-5.6 models via the OpenAI Responses API (#559) (#938)\n- fix(cli): exit 128+signo when the native binary is killed by a signal (#1054)\n\n## 📖 Documentation\n\n- docs(ko): add Korean translation for getting-started pages (#993)\n\n## Other Changes\n\n- ci(workflows): run the contract suite in a dedicated workflow (#1058)\n\n**Full Changelog**: https://github.com/alibaba/open-code-review/compare/v1.10.0...v1.10.1",
"release_notes_sha256": "890f24192f1ccf427d65baa7970721dcef50b933cbcd3777f3843e95dfc64d43",
"result": "compatible",
"schema_version": 2,
"tag": "v1.10.1",
"tested_baseline_version": "1.10.0",
"upstream_repository": "alibaba/open-code-review",
"version": "1.10.1"
}
57 changes: 55 additions & 2 deletions compatibility/ocr-support.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"monitoring_floor": "1.10.0",
"recommended_version": "1.10.0",
"monitoring_floor": "1.10.1",
"recommended_version": "1.10.1",
"releases": [
{
"assets": [
Expand Down Expand Up @@ -1187,6 +1187,59 @@
"release_url": "https://github.com/alibaba/open-code-review/releases/tag/v1.10.0",
"status": "tested",
"version": "1.10.0"
},
{
"assets": [
{
"name": "opencodereview-darwin-amd64",
"sha256": "259dd57e09ed326ac001ecdb0798296ac06a1ca1ebfd5a55588c4647d2eb75f0",
"size": 57633504
},
{
"name": "opencodereview-darwin-arm64",
"sha256": "8fc24bd825c9d918b894be05c0cf27fac8d30bc549257c812d87337167c7563c",
"size": 54677666
},
{
"name": "opencodereview-linux-amd64",
"sha256": "8b806c221d409727a21611b4a7952d8e15edadbbc25f5affccaeb8f677e4055c",
"size": 55890082
},
{
"name": "opencodereview-linux-arm64",
"sha256": "681d9fb93352f56439b1ac9c64e2a62b1b3c20e753d6ad69dd02f4bd1baa7f3b",
"size": 52625570
},
{
"name": "opencodereview-windows-amd64.exe",
"sha256": "66f495d48ee6fb155c9812ba8e8d650e1a8ad34be9cca174831cea1b7151f6e3",
"size": 57351680
},
{
"name": "opencodereview-windows-arm64.exe",
"sha256": "b3b0628d61ca980705b2c6eb3166c264af3ce1eac839e1786fe5a968491abf91",
"size": 53334016
},
{
"name": "sha256sum.txt",
"sha256": "ec72bda51f1227f412ee00602d952868efc57d847cce0ae1586fb97069d4139d",
"size": 572
}
],
"capabilities": [
"llm_result_identity",
"per_run_model_override",
"per_run_provider_override",
"review_effort",
"semantic_grouping"
],
"evidence": "compatibility/evidence/ocr-1.10.1.json",
"evidence_sha256": "3377626cbb65f868f397c22da1f6594b13dc2a22b761ae8a2fc267fcde9b4785",
"human_conclusion": "Compatible after semantic review for #146. The toolkit consumes bounded private session cache keys and .m language resolution with MATLAB and Objective-C rules. Result and manifest contracts, inherited completion cap 16384, explicit cap 4096, medium effort, and max-tools semantics remain unchanged. The upstream GitHub Action, delegate skill, npm launcher, built-in provider preset, and repository-local providers.go rule are not consumed because the toolkit uses the native binary with explicit protocol and configuration.",
"published_at": "2026-08-26T08:51:59Z",
"release_url": "https://github.com/alibaba/open-code-review/releases/tag/v1.10.1",
"status": "tested",
"version": "1.10.1"
}
],
"schema_version": 1,
Expand Down
14 changes: 13 additions & 1 deletion docs/compatibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Deploy toolkit 0.8.0 or 0.8.1 directly with OCR 1.9.10. The historical public Li

### OCR 1.10.0 — toolkit 0.8.2 and 0.8.3 target

OCR 1.10.0 is the only version accepted by toolkit 0.8.2 and 0.8.3 preflight and pinned by the current GitLab example. It groups related changed files before review, uses path-aware findings, and supports one, two, or three review rounds through `effort=low|medium|high`. The toolkit writes an explicit `medium` default, so a normal run permits two rounds; operators may select `low` for one round or `high` for three. Grouping, filtering, and additional rounds can add provider requests, latency, and token cost. Aggregate budget and manifest completeness remain authoritative, and incomplete or budget-stopped reviews remain ineligible for automatic approval.
OCR 1.10.0 was the only version accepted by toolkit 0.8.2 and 0.8.3 preflight and pinned by their published GitLab example. It groups related changed files before review, uses path-aware findings, and supports one, two, or three review rounds through `effort=low|medium|high`. The toolkit writes an explicit `medium` default, so a normal run permits two rounds; operators may select `low` for one round or `high` for three. Grouping, filtering, and additional rounds can add provider requests, latency, and token cost. Aggregate budget and manifest completeness remain authoritative, and incomplete or budget-stopped reviews remain ineligible for automatic approval.

Group labels are model-produced and group keys contain sorted changed paths. Additive group/round result fields remain untrusted private diagnostics: the toolkit sanitizes them when needed but excludes them from findings, GitLab text, receipt v5, fingerprints, severity, lifecycle commands, toolkit telemetry, and approval. OCR's own opt-in telemetry can include these repository-derived high-cardinality values; see the [signal-ownership audit](engineering/review_signal_ownership.md).

Expand All @@ -49,6 +49,18 @@ Its max-tools CLI reports a minimum and normalization target of `50`, while the

Deploy toolkit 0.8.2 or 0.8.3 directly with OCR 1.10.0; do not install OCR 1.9.10 as an intermediate step. The public Linux amd64 example verifies SHA-256 `f8f99ea071bed77dbcaa15fdd2083287bb8ae408d5928b3943ebe0788d191b6b`; the manifest records the complete hosted asset set and qualification evidence.

### OCR 1.10.1 — toolkit 0.8.4 target

OCR 1.10.1 is the only version accepted by toolkit 0.8.4 preflight and pinned by the current GitLab example. Hosted Linux and independent Darwin arm64 qualification preserve the OCR result and `ocr.run-manifest/v1` contracts, inherited OpenAI completion cap `16384`, explicit `4096` override, default-medium two-round behavior, and effective max-tools values from 1.10.0. The `--max-tools` help text advertises a lower minimum, but actual CLI behavior still normalizes `49` to `50`, the embedded template keeps effective `100`, and explicit `101` raises it; the toolkit uses those behaviorally observed values and keeps the example on sentinel `0`.

Toolkit 0.8.4 reduces an exact accepted soft background diagnostic to the private numeric `ocr.toolkit-advisory/v1` projection after publication DLP. It is rendered only with a valid receipt v5 in GitLab Technical details and does not enter OCR warnings, coverage, DLP counts, telemetry, or automatic-approval inputs. Raw OCR output cannot supply the reserved field; duplicate, extended, unknown, malformed, or unbound forms fail closed.

The release bounds private session task/cache keys to 64 characters. Those values remain OCR-owned private routing data and do not enter toolkit telemetry, receipt v5, findings, fingerprints, lifecycle commands, or approval. OCR also adds `.m` to its reviewable allowlist and resolves MATLAB versus Objective-C from file content so the corresponding built-in rules can be selected. The upstream repository-local `providers.go` rule is not part of the toolkit-wide rules contract.

The upstream GitHub Action, delegate skill, npm launcher, and built-in provider preset are not consumed. The toolkit downloads the native binary in its GitLab example and writes an explicit protocol and provider configuration, so these changes add no implicit provider selection or CI execution path.

Deploy toolkit 0.8.4 directly with OCR 1.10.1. The public Linux amd64 example verifies SHA-256 `8b806c221d409727a21611b4a7952d8e15edadbbc25f5affccaeb8f677e4055c`; the local Darwin arm64 artifact verifies `8fc24bd825c9d918b894be05c0cf27fac8d30bc549257c812d87337167c7563c`, and the upstream `sha256sum.txt` verifies `ec72bda51f1227f412ee00602d952868efc57d847cce0ae1586fb97069d4139d`.

The contiguous 1.9.7 through 1.9.8 promotion combines the repository-owned hosted Linux qualification with adjacent upstream source review. It also repeats the required 1.9.8 contract probes through the checksum-verified Darwin arm64 artifact. Multi-tool MCP initialization, fixed tool discovery and dispatch, and owner-only session persistence remain compatible with the M5 design: the toolkit may expose several fixed tools from its one built-in process, while an isolated `HOME` contains OCR's `.opencodereview/sessions` state for deterministic cleanup. Gemini and Bedrock are optional upstream provider capabilities that the toolkit neither selects nor configures; mirror-aware installation is outside the toolkit-owned download path; native severity retains the structured result fields already consumed; and human-audience progress routing does not affect the toolkit's agent-audience invocation. Therefore this promotion requires no toolkit CI behavior adaptation beyond version and checksum pins. These source observations establish capability only; the M5 production-path tests remain responsible for proving the toolkit's composition and containment.

An automatic-safe result is not an automatic stable release. It must still pass a normal protected compatibility PR and a separate signed stable-release PR. If a dedicated OCR update bot credential is not configured, the workflow publishes the exact patch as an artifact and records the resume action in the issue; the default `GITHUB_TOKEN` is intentionally not used to create a PR that would fail to trigger the full protected workflow set.
Expand Down
Loading
Loading