From 883d12bbaaad97b9b53f8227f49d61be690729cf Mon Sep 17 00:00:00 2001 From: xeonvs <11463419+xeonvs@users.noreply.github.com> Date: Fri, 28 Aug 2026 12:51:25 +0200 Subject: [PATCH] Release v0.8.6 --- .next-version | 2 +- .release-metadata.json | 6 +- .release-source-date-epoch | 2 +- .release-version | 2 +- CHANGELOG.md | 44 ++++++ PLANS.md | 147 +----------------- changelog.d/153.bugfix.md | 5 - changelog.d/155.bugfix.md | 5 - changelog.d/155.doc.md | 4 - changelog.d/155.maintenance.md | 6 - changelog.d/155.rules.md | 1 - docs/configuration.md | 4 +- docs/engineering/execution_history/README.md | 1 + .../engineering/execution_history/releases.md | 94 +++++++++++ examples/gitlab/ocr-review.gitlab-ci.yml | 2 +- tests/test_release_notes.py | 24 +++ 16 files changed, 173 insertions(+), 176 deletions(-) delete mode 100644 changelog.d/153.bugfix.md delete mode 100644 changelog.d/155.bugfix.md delete mode 100644 changelog.d/155.doc.md delete mode 100644 changelog.d/155.maintenance.md delete mode 100644 changelog.d/155.rules.md diff --git a/.next-version b/.next-version index 7fc2521..1e9b46b 100644 --- a/.next-version +++ b/.next-version @@ -1 +1 @@ -0.8.6 +0.8.7 diff --git a/.release-metadata.json b/.release-metadata.json index fde2b4c..760dc93 100644 --- a/.release-metadata.json +++ b/.release-metadata.json @@ -1,8 +1,8 @@ { "issues": [ - 149, - 151 + 153, + 155 ], "schema_version": "ocr-toolkit.release-authorization/v1", - "version": "0.8.5" + "version": "0.8.6" } diff --git a/.release-source-date-epoch b/.release-source-date-epoch index fa9a82a..dea0a93 100644 --- a/.release-source-date-epoch +++ b/.release-source-date-epoch @@ -1 +1 @@ -1787824489 +1787913471 diff --git a/.release-version b/.release-version index 7ada0d3..7fc2521 100644 --- a/.release-version +++ b/.release-version @@ -1 +1 @@ -0.8.5 +0.8.6 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ace170..dae3760 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,47 @@ +## 0.8.6 - 2026-08-28 + +### 🐛 Bug Fixes + +- Correct reviewer-guide security classification: + + - **Fixed:** command/shell, SQL/NoSQL, code, template, prompt, LDAP, XPath, CRLF/header, log, HTML/script, and expression injection require explicit vulnerability context; the standalone word `injection` is no longer promoted. + - **Changed:** neutral phrases such as knowledge or dependency injection no longer inflate the published security count or estimated review effort. + - **Unchanged:** finding severity, lifecycle, suppression, and approval behavior. + + ([#153](https://github.com/xeonvs/open-code-review-toolkit/issues/153)) +- Contain provider-private OCR state at the publication boundary: + + - **Fixed:** reasoning, encrypted/native replay payloads, and request `tool_choice` fields are removed before the canonical OCR result is persisted or receipt v5 is bound. + - **Changed:** private-only removal preserves a byte-equivalent review projection and approval eligibility; the same fields laundered through findings or warnings become `publication-filtered`. + - **Unchanged:** receipt v5, public tool-call and reasoning-token counters, DLP reason counts for private-only state, and approval rules. + + ([#155](https://github.com/xeonvs/open-code-review-toolkit/issues/155)) + +### 🛠 Maintenance + +- Qualify the toolkit 0.8.6 OCR dependency: + + - **Changed:** Open Code Review 1.11.0 is the sole accepted runtime; grouping inventory is status-first with churn and the GitLab job timeout is 45 minutes for the default-medium/highest supported round envelope. + - **Added:** checksum-verified Linux and Darwin evidence plus strict historical-1.10.x-old/1.11.0-new qualification fixtures. + - **Migration:** deploy toolkit 0.8.6 directly with OCR 1.11.0. OCR 1.10.2 is comparison evidence only, not a supported fallback. + - **Unchanged:** result/manifest, inherited completion cap `16384`, support for an operator-selected positive completion-cap override, default effort `medium`, receipt v5, DLP, telemetry, summary, and approval contracts. The toolkit leaves that override unset by default and does not recommend a provider-specific value. OCR 1.11.0 corrects max-tools help text only: effective omitted/`0`/`49`/`50` remains `100`, while `101` raises the cap to `101`. + + ([#155](https://github.com/xeonvs/open-code-review-toolkit/issues/155)) + +### 📖 Documentation + +- Refresh installation and operating guidance: + + - **Changed:** Python 3.12–3.14 uses `uv tool install` by default or `pip` only in an activated virtual environment; OCR is installed separately as checksum-verified 1.11.0 and verified with `ocr --version` plus `ocr-ci --help`. + - **Clarified:** max-tools runtime is unchanged despite corrected help text; reasoning and `tool_choice` stay private; reviewer-guide injection matching is contextual; Ruff formatting is applied and checked before each Python commit. + + ([#155](https://github.com/xeonvs/open-code-review-toolkit/issues/155)) + +### 🧩 Rules + +- **Added:** review Handlebars (`.hbs`) and Mustache (`.mustache`) files through OCR 1.11.0's built-in allowlist and language-specific Rules. Toolkit evidence and publication authority are unchanged. ([#155](https://github.com/xeonvs/open-code-review-toolkit/issues/155)) + + ## 0.8.5 - 2026-08-27 ### 🚀 Features diff --git a/PLANS.md b/PLANS.md index ff22863..6d4abc7 100644 --- a/PLANS.md +++ b/PLANS.md @@ -6,149 +6,4 @@ before handoff or commit. Completed stable plans are indexed in ## Active Work -### Toolkit 0.8.6 — OCR 1.11.0 and precise security signals - -Status: active — Draft implementation exists; independent review and full stable delivery -are in progress. - -Release classification: `release-required` - -Target stable version: `0.8.6` - -#### Goal - -Deliver toolkit 0.8.6 as an immutable stable release. The release must qualify and require -OCR 1.11.0, fix false security promotion for neutral domain phrases, keep provider-private -reasoning and request state outside every public/receipt/approval sink, pass local and hosted -validation, and finish with independently verified registry and GitHub artifacts, closed -release issues and milestone, and synchronized clean `main`. - -#### Scope And Decisions - -- Continue from Draft PR #154 and issues #153/#155; inspect the complete Draft rather than - assuming its existing green checks prove readiness. -- OCR 1.11.0 is the sole supported runtime. OCR 1.10.2 remains comparison evidence only. -- Preserve one provider-neutral flow: - `private OCR state -> canonical projection -> DLP -> publication -> receipt/approval`. -- Keep grouping inventory, timeout scaling, Handlebars/Mustache Rules, `file_find`, result, - manifest, receipt v5, DLP, telemetry, summary, and approval contracts internally - consistent and covered by synthetic tests. -- Fix #153 only in reviewer-guide analytics: neutral phrases such as knowledge or dependency - injection must not increase the security count or effort, while explicit metadata and a - closed set of vulnerability phrases remain promoted. -- Required configuration variables remain bold in public documentation. -- Do not set or recommend a provider-specific `4096` completion cap. The active default is - unset and inherits the qualified OCR/provider contract. Historical wire evidence may retain - its exact tested value when explicitly labelled as historical evidence. -- Update the PATH-effective local Darwin arm64 OCR atomically to checksum-verified 1.11.0. -- Run one semantic local OCR review against the exact final feature head with concurrency 1. - If it fails exclusively because every provider request is HTTP 429, record the gate as - owner-authorized `waived`, not passed, do not retry again, and continue release delivery. -- Keep full test and OCR output in ignored owner-only temporary logs. Public plans, issues, - PRs, changelog, release notes, and summaries contain only synthetic or bounded structural - evidence and never private paths, credentials, provider/model identity, prompts, reasoning, - tool payloads, request IDs, or raw OCR output. -- macOS hosted checks remain advisory; Linux supported-Python checks and protected release - authorization are the release priority. -- No B2B, `core/common`, shared-template, or consumer-repository integration is in scope. - -#### Requirements And Evidence - -| ID | Requirement | Authoritative evidence | -| --- | --- | --- | -| `R1` | Exact OCR 1.11.0 qualification and sole-runtime pin | Upstream release/source review, compatibility evidence/hash validation, preflight/example tests, local binary digest/version/help | -| `R2` | Correct grouping/rules/timeout/file lookup behavior | Qualification-only parser tests, installed-artifact no-LLM probes, runtime contract tests | -| `R3` | Provider-private fields cannot affect public state | Hostile projection, DLP, receipt, cleanup, telemetry, summary, and approval tests | -| `R4` | #153 false-positive classification fixed without broad regression | Exact reproducer plus positive, neutral, Unicode, boundary, determinism, and immutability tests | -| `R5` | Documentation/examples/changelog are current and consistent | Documentation contracts, version searches, Towncrier draft, complete diff review | -| `R6` | Feature tree is release-ready | Targeted tests, full quality/coverage, security, package determinism, local OCR, self-review, exact PR head/check/thread readback | -| `R7` | Stable release is authorized and published | Release plan/receipt, release PR exact-head checks, protected stable workflow success | -| `R8` | Publication is independently closed | Byte equality across workflow/TestPyPI/PyPI/Release, provenance and attestations, tag target, Python 3.12–3.14 installs, release-note/asset readback | -| `R9` | Repository and tracking state are closed | Actions-owned issue receipts, #153/#155 closed, milestone closed, archived plan, clean `main == origin/main == v0.8.6^{}` | - -#### Work Queue - -| Queue | Status | Deliverable | -| --- | --- | --- | -| `WQ-01` | `done` | Live `main`, Draft PR, issues, milestone, upstream release, roadmap/backlog, and release owners inspected. | -| `WQ-02` | `done` | Draft #154 implementation and documentation audited; release plan and completion-cap wording corrected. | -| `WQ-03` | `done` | Exact local OCR 1.11.0 installed and qualified; the single concurrency-1 semantic review completed 7/7 selected files. | -| `WQ-04` | `done` | The one confirmed OCR finding is fixed; full gates and holistic self-review pass, and the signed final feature-head commit is ready to bind. | -| `WQ-05` | `in progress` | Push the final feature head, update and mark PR ready, verify protected checks/threads/policy, merge, and verify development publication. | -| `WQ-06` | `pending` | Prepare signed `release/v0.8.6` state, generated changelog, archived plan, receipt inputs, and release PR. | -| `WQ-07` | `pending` | Verify release PR, merge exact reviewed tree, and complete the protected stable workflow. | -| `WQ-08` | `pending` | Independently verify registries, bytes, provenance, attestations, tag, immutable Release, receipt, and supported-Python installs. | -| `WQ-09` | `pending` | Verify issue receipts, close issues/milestone, synchronize clean `main`, remove task-owned temporary material, and perform final audit. | - -#### Validation Contract - -- During iteration: focused tests for every changed parser, subprocess, persistence, DLP, - posting, receipt, configuration, compatibility, and documentation boundary. -- Final feature gate: `scripts/quality.sh check`, all coverage floors, compatibility manifest, - lockfile, Towncrier draft, Ruff format/lint, strict MyPy, Bandit, checksum-verified - Gitleaks, package build/determinism, and `git diff --check`. -- OCR gate: exact installed 1.11.0 identity and one semantic review at concurrency 1; inspect - the result/manifest and coverage rather than process exit alone. A pure repeated HTTP 429 is - a documented waiver, never a pass. -- PR gates: exact head/base/tree, all required checks complete, no unresolved review threads, - current merge policy, and re-read immediately before merge. -- Stable closure: independent artifact bytes, TestPyPI/PyPI metadata and PEP 740 provenance, - GitHub attestations and immutable Release, annotated tag peeled target, receipt schema and - hashes, clean wheel/sdist installs on Python 3.12–3.14, issue/milestone receipts, and clean - synchronized `main`. - -#### Risks And Recovery - -- A Draft-green check can miss semantic or privacy defects. Fix only evidence-backed findings, - repeat the affected gate, and then rerun the single complete final gate. -- Local OCR replacement can fail. Verify the candidate before atomic replacement and retain a - verified rollback copy until 1.11.0 passes local identity and no-LLM probes. -- Provider rate limiting can make semantic OCR unavailable. After the single concurrency-1 run, - accept only an all-429 outcome for the authorized waiver; mixed or product failures require - diagnosis and remediation. -- Registry propagation can lag. Verify JSON/simple-index state and retry once without cache; - do not misclassify cache lag as an artifact defect. -- Stable release publication is irreversible. Re-read exact release head, authorization, - checks, and receipt inputs immediately before merge; stop on any mismatch. - -#### Current Evidence - -- Draft PR #154 starts from released v0.8.5 and had 13/13 hosted checks green at head - `79d5587`; issues #153/#155 and milestone v0.8.6 are open. -- Hosted OCR compatibility run 33158664020 verified the official 1.11.0 assets and generated - the accepted human-review-required evidence. Adjacent source review maps each consumed - contract or records it as no-impact. -- PATH-effective OCR is official Darwin arm64 1.11.0 with SHA-256 - `ac8bf5a0fcd176bb9dcc15b169e90f4b52bf32787adef17a850489dbed97fb78`. - The installed `probe-local` contract passed version/help, preview, grouping, Rules, result, - budget, numeric CLI, and completion-cap checks. -- The only configured-provider OCR review ran at concurrency 1 on exact head `d2249ab` and - finished in 396 seconds with manifest `complete`: 7 selected, 7 completed, 0 failed, - 0 reused, and 0 waived. It returned one medium bug finding; this is a passing semantic - gate, so no provider waiver applies. -- The finding correctly identified that the qualification-only grouping parser accepted the - historical wire shape only for 1.10.2 even though repeatable semantic probes cover the full - qualified 1.10.0–1.10.2 line. The parser now binds that exact old shape to all 1.10.x - releases while production preflight remains exact 1.11.0. All 86 compatibility tests pass. -- Targeted privacy/posting/configuration/release suites pass 480 tests plus 243 subtests; - manifest validation, Towncrier draft, Ruff format check, and diff checks pass. -- The final canonical gate passes 1,321 tests plus 363 subtests at 86.52% branch - coverage. The four locked risk groups pass at 85%, 82%, 86%, and 87%; Ruff format/lint, - strict MyPy, and Bandit pass in the same run. -- Independent lock and OCR-manifest validation, rendered 0.8.6 Towncrier draft, - dependency audit, pinned Gitleaks, and `git diff --check` pass. Two deterministic - wheel/sdist builds are byte-identical; Twine and archive content/privacy checks pass, - and clean wheel plus sdist installs and CLI smoke pass on Python 3.12, 3.13, and 3.14. -- Holistic feature-diff self-review found and fixed one documentation drift: the current - compatibility guide now describes only an operator-selected positive completion-cap - override and the full qualification-only historical 1.10.x inventory parser range. - Machine qualification evidence retains its exact checksum-bound tested probe. No other - correctness, privacy, release, documentation, or example inconsistency remains. - -#### Closure Gate - -- [ ] Every requirement has direct current-state evidence. -- [ ] Feature and release PRs are merged from exact reviewed heads with required checks green. -- [ ] Stable 0.8.6 artifacts, provenance, attestations, tag, Release, receipt, and installs are independently verified. -- [ ] Issues #153/#155 and milestone v0.8.6 are closed through truthful release evidence. -- [ ] The active plan is archived, local and remote release branches are removed, task-owned temporary material is cleaned, and `main` is clean and synchronized. +No active or blocked repository work. diff --git a/changelog.d/153.bugfix.md b/changelog.d/153.bugfix.md deleted file mode 100644 index ed74a41..0000000 --- a/changelog.d/153.bugfix.md +++ /dev/null @@ -1,5 +0,0 @@ -Correct reviewer-guide security classification: - -- **Fixed:** command/shell, SQL/NoSQL, code, template, prompt, LDAP, XPath, CRLF/header, log, HTML/script, and expression injection require explicit vulnerability context; the standalone word `injection` is no longer promoted. -- **Changed:** neutral phrases such as knowledge or dependency injection no longer inflate the published security count or estimated review effort. -- **Unchanged:** finding severity, lifecycle, suppression, and approval behavior. diff --git a/changelog.d/155.bugfix.md b/changelog.d/155.bugfix.md deleted file mode 100644 index 0996ec7..0000000 --- a/changelog.d/155.bugfix.md +++ /dev/null @@ -1,5 +0,0 @@ -Contain provider-private OCR state at the publication boundary: - -- **Fixed:** reasoning, encrypted/native replay payloads, and request `tool_choice` fields are removed before the canonical OCR result is persisted or receipt v5 is bound. -- **Changed:** private-only removal preserves a byte-equivalent review projection and approval eligibility; the same fields laundered through findings or warnings become `publication-filtered`. -- **Unchanged:** receipt v5, public tool-call and reasoning-token counters, DLP reason counts for private-only state, and approval rules. diff --git a/changelog.d/155.doc.md b/changelog.d/155.doc.md deleted file mode 100644 index 4977f54..0000000 --- a/changelog.d/155.doc.md +++ /dev/null @@ -1,4 +0,0 @@ -Refresh installation and operating guidance: - -- **Changed:** Python 3.12–3.14 uses `uv tool install` by default or `pip` only in an activated virtual environment; OCR is installed separately as checksum-verified 1.11.0 and verified with `ocr --version` plus `ocr-ci --help`. -- **Clarified:** max-tools runtime is unchanged despite corrected help text; reasoning and `tool_choice` stay private; reviewer-guide injection matching is contextual; Ruff formatting is applied and checked before each Python commit. diff --git a/changelog.d/155.maintenance.md b/changelog.d/155.maintenance.md deleted file mode 100644 index 62976cf..0000000 --- a/changelog.d/155.maintenance.md +++ /dev/null @@ -1,6 +0,0 @@ -Qualify the toolkit 0.8.6 OCR dependency: - -- **Changed:** Open Code Review 1.11.0 is the sole accepted runtime; grouping inventory is status-first with churn and the GitLab job timeout is 45 minutes for the default-medium/highest supported round envelope. -- **Added:** checksum-verified Linux and Darwin evidence plus strict historical-1.10.x-old/1.11.0-new qualification fixtures. -- **Migration:** deploy toolkit 0.8.6 directly with OCR 1.11.0. OCR 1.10.2 is comparison evidence only, not a supported fallback. -- **Unchanged:** result/manifest, inherited completion cap `16384`, support for an operator-selected positive completion-cap override, default effort `medium`, receipt v5, DLP, telemetry, summary, and approval contracts. The toolkit leaves that override unset by default and does not recommend a provider-specific value. OCR 1.11.0 corrects max-tools help text only: effective omitted/`0`/`49`/`50` remains `100`, while `101` raises the cap to `101`. diff --git a/changelog.d/155.rules.md b/changelog.d/155.rules.md deleted file mode 100644 index e7a9bd6..0000000 --- a/changelog.d/155.rules.md +++ /dev/null @@ -1 +0,0 @@ -**Added:** review Handlebars (`.hbs`) and Mustache (`.mustache`) files through OCR 1.11.0's built-in allowlist and language-specific Rules. Toolkit evidence and publication authority are unchanged. diff --git a/docs/configuration.md b/docs/configuration.md index 241519d..a46082e 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -92,9 +92,9 @@ These names belong to `examples/gitlab/ocr-review.gitlab-ci.yml`; they are shell | Variable | Source / owner | Required | Exact default | Behavior | | --- | --- | --- | --- | --- | -| **`OCR_VERSION`** | Example pipeline | Yes | `v1.11.0` | Checksum-pinned recommended OCR binary release for the toolkit 0.8.6 development line. | +| **`OCR_VERSION`** | Example pipeline | Yes | `v1.11.0` | Checksum-pinned recommended OCR binary release for toolkit 0.8.6. | | **`OCR_SHA256`** | Example pipeline | Yes | `13f68cc2eca1a36d42140e9d37797b68fea5cbbf4b6345ec01ec1b06910fab60` | Expected Linux AMD64 OCR binary digest. | -| **`OCR_TOOLKIT_VERSION`** | Example pipeline | Yes | `0.8.5` | Exact toolkit wheel release installed by the current published example. | +| **`OCR_TOOLKIT_VERSION`** | Example pipeline | Yes | `0.8.6` | Exact toolkit wheel release installed by the current published example. | | **`OCR_TOOLKIT_CHECKSUMS_URL`** | Example pipeline | Yes | Release URL derived from `OCR_TOOLKIT_VERSION` | Toolkit `SHA256SUMS` URL. | | `OCR_TOOLKIT_WHEEL` | Example shell | Computed | `open_code_review_toolkit-${OCR_TOOLKIT_VERSION}-py3-none-any.whl` | Exact wheel filename selected from the release. | | `OCR_TOOLKIT_WHEEL_SHA256` | Example shell | Computed | Matching value from `SHA256SUMS` | Digest checked before installing the toolkit wheel. | diff --git a/docs/engineering/execution_history/README.md b/docs/engineering/execution_history/README.md index dee5a10..f98b59f 100644 --- a/docs/engineering/execution_history/README.md +++ b/docs/engineering/execution_history/README.md @@ -6,6 +6,7 @@ | Stable tag | Primary archived plan | Related context in the same archive | | --- | --- | --- | +| `v0.8.6` | [OCR 1.11.0 and precise security signals](releases.md#plan-toolkit-0-8-6) | Contextual injection classification, provider-private OCR-state containment, OCR 1.11.0 qualification and Rules, one complete local semantic review with remediation, feature merge, development artifact verification, and stable-delivery handoff. | | `v0.8.5` | [Provider diagnostics and OCR 1.10.2](releases.md#plan-toolkit-0-8-5) | Closed numeric provider diagnostics, unchanged GitLab/DLP/receipt/approval projections, OCR 1.10.2 qualification and Rules, compatibility scheduling, explicit local OCR provider-failure waiver, feature merge, development artifact verification, and stable-delivery handoff. | | `v0.8.4` | [GitLab summary correctness and OCR 1.10.1](releases.md#plan-toolkit-0-8-4) | Receipt-bound OCR core advisory, publication-filtered coverage, field-bounded HTAB with unchanged-value DLP checks, non-duplicating one-finding guide, OCR 1.10.1 qualification, final local OCR remediation, feature merge, development artifact verification, and stable-delivery handoff. | | `v0.8.3` | [OCR boundaries and review tool-usage visibility](releases.md#plan-toolkit-0-8-3) | Authoritative compatibility failure publication, installed-OCR numeric boundary ownership, complete bounded review tool-activity counters, advisory macOS endpoint checks, feature merge, development artifact verification, explicit local-LLM non-claim, and stable-delivery handoff. | diff --git a/docs/engineering/execution_history/releases.md b/docs/engineering/execution_history/releases.md index 47201ec..dc74b30 100644 --- a/docs/engineering/execution_history/releases.md +++ b/docs/engineering/execution_history/releases.md @@ -2,6 +2,100 @@ This archive preserves completed execution plans moved out of the active registry; the release index associates each plan with the stable tag or release cycle it supported. `PLANS.md` remains the source for active or blocked repository work; historical receipts here remain part of the audit trail. + + +## Toolkit 0.8.6 — OCR 1.11.0 and precise security signals + +Status: repository complete; external stable delivery pending +Release classification: `release-required` +Target stable version: `0.8.6` +Repository completion date: 2026-08-28 + +### Goal and delivered scope + +Toolkit 0.8.6 qualifies OCR 1.11.0 as its sole accepted runtime, corrects +reviewer-guide security classification for neutral uses of the word +`injection`, and keeps provider-private reasoning and request state outside +every persisted public, receipt, summary, telemetry, and approval projection. + +Security promotion now requires explicit command/shell, SQL/NoSQL, code, +template, prompt, LDAP, XPath, CRLF/header, log, HTML/script, or expression +injection context. Neutral phrases such as knowledge or dependency injection +do not increase the published security count or estimated review effort; +finding severity, lifecycle, suppression, and approval behavior are unchanged. + +OCR reasoning, signed or encrypted replay payloads, and request `tool_choice` +state are removed before canonical result persistence and receipt-v5 binding. +Private-only removal preserves a byte-equivalent review projection and approval +eligibility. The same values laundered through public findings or warnings are +publication-filtered through the existing DLP and remain approval-ineligible. + +### OCR qualification and compatibility decisions + +- OCR 1.11.0 is the only production runtime accepted by toolkit 0.8.6. + OCR 1.10.2 is adjacent historical comparison evidence, not a fallback. +- Grouping inventory changes to status-first entries with added/deleted churn. + Qualification accepts the old wire form only for OCR 1.10.0 through 1.10.2 + and the new form from 1.11.0 onward; production code consumes neither form. +- `file_find` supports repository-relative subpaths and both slash styles. + Handlebars and Mustache join the built-in allowlist and Rules contract. +- OCR's 15-minute base subtask timeout scales to 15/30/45 minutes for + low/medium/high effort, so the GitLab example allows the 45-minute envelope. +- Max-tools runtime behavior is unchanged: omitted, `0`, `49`, and `50` remain + effectively `100`; `101` raises the cap to `101`. Corrected help text does + not alter findings, completeness, DLP, receipt, telemetry, or approval. +- The inherited completion cap remains OCR-owned. The toolkit supports an + operator-selected positive override, leaves it unset by default, and does + not recommend a provider-specific value. +- Receipt v5, result and manifest schemas, public token/tool counters, DLP, + toolkit telemetry, summary, and approval contracts remain unchanged. + +### Repository, OCR, and hosted evidence + +- Hosted qualification run 33158664020 verified the checksum-pinned OCR 1.11.0 + artifacts and required human review for the minor release. The PATH-effective + Darwin arm64 binary matched SHA-256 + `ac8bf5a0fcd176bb9dcc15b169e90f4b52bf32787adef17a850489dbed97fb78`. +- Exactly one configured-provider semantic review ran with concurrency 1 at + exact feature head `d2249abaa1760a1ac15e7b0ab75414e7af5a37ea`. Its manifest + completed all 7 selected files with failed/reused/waived `0/0/0` and found + one valid grouping-qualification defect. +- Signed corrective commit `2a96f02b58eb54fc3e71ff1e9cec7343f4a20076` + extends the qualification-only old-format parser across OCR 1.10.0-1.10.2 + while production preflight remains exact 1.11.0. No second OCR run was made. +- The final feature gate passed 1,321 tests plus 363 subtests at 86.52% branch + coverage. Risk groups passed at 85%, 82%, 86%, and 87%; Ruff, strict MyPy, + Bandit, lock/manifest validation, Towncrier draft, dependency audit, pinned + Gitleaks, deterministic builds, Twine, archive privacy, and clean Python + 3.12-3.14 wheel and sdist installs passed. +- Feature PR #154 passed all 13 hosted checks at reviewed head + `2a96f02b58eb54fc3e71ff1e9cec7343f4a20076` and tree + `0d37e445782671e9cbe95e2d6a0ba2ce1599eb17`, with zero unresolved review + threads. It was squash-merged as verified commit + `58170e9765480e25ca0a963cd790af5938df83bc` with the same tree. +- Development workflow run 33164086626 published and independently verified + `0.8.6.dev78`. TestPyPI wheel SHA-256 is + `2608b60b8efd891be1796c729ba6ac2151045febe4d0d724f355ec6a884327c6`; + sdist SHA-256 is + `e99a6e50b4a82d913660a66a46ba8c256104c5d1ab7971274716671208d1968a`. + Workflow and registry bytes, PEP 740 provenance, and clean installs agree. + +### Stable delivery handoff + +The release PR is the final repository mutation. It sets +`.release-version=0.8.6`, `.next-version=0.8.7`, deterministic source epoch +`1787913471` one second after the feature squash merge, exact sorted issues +`[153, 155]`, generated Towncrier notes, the stable example pin, and this +archived plan while returning `PLANS.md` to its inactive template. + +External closure remains pending until the exact reviewed release head is +squash-merged and the protected workflow is independently reconciled across +TestPyPI, PyPI, workflow artifacts, and the immutable GitHub Release. Closure +requires byte equality, PEP 740 provenance and GitHub attestations, annotated +`v0.8.6` tag and peeled target, immutable `release-receipt.json`, clean PyPI +wheel and sdist installs on Python 3.12-3.14, Actions-owned receipts, closed +#153/#155 and milestone `v0.8.6`, synchronized clean `main`, and scratch cleanup. + ## Toolkit 0.8.5 — provider diagnostics and OCR 1.10.2 diff --git a/examples/gitlab/ocr-review.gitlab-ci.yml b/examples/gitlab/ocr-review.gitlab-ci.yml index ac8645f..6bf1179 100644 --- a/examples/gitlab/ocr-review.gitlab-ci.yml +++ b/examples/gitlab/ocr-review.gitlab-ci.yml @@ -7,7 +7,7 @@ default: variables: OCR_VERSION: "v1.11.0" - OCR_TOOLKIT_VERSION: "0.8.5" + OCR_TOOLKIT_VERSION: "0.8.6" OCR_TOOLKIT_CHECKSUMS_URL: "https://github.com/xeonvs/open-code-review-toolkit/releases/download/v${OCR_TOOLKIT_VERSION}/SHA256SUMS" OCR_SHA256: "13f68cc2eca1a36d42140e9d37797b68fea5cbbf4b6345ec01ec1b06910fab60" OCR_POST_MODE: "draft" diff --git a/tests/test_release_notes.py b/tests/test_release_notes.py index 73cc2f5..dd5e4f3 100644 --- a/tests/test_release_notes.py +++ b/tests/test_release_notes.py @@ -225,6 +225,30 @@ def test_085_release_notes_keep_provider_diagnostics_bounded_and_actionable() -> assert phrase in notes +def test_086_release_notes_preserve_privacy_and_exact_ocr_migration() -> None: + """Keep the security-signal fix and OCR 1.11.0 boundary actionable.""" + + changelog = (ROOT / "CHANGELOG.md").read_text(encoding="utf-8") + notes = release.release_notes(changelog, "0.8.6") + + for phrase in ( + "standalone word `injection`", + "knowledge or dependency injection", + "encrypted/native replay payloads", + "tool_choice", + "publication-filtered", + "Open Code Review 1.11.0", + "sole accepted runtime", + "status-first with churn", + "45 minutes", + "operator-selected positive completion-cap override", + "does not recommend a provider-specific value", + "Handlebars", + "Mustache", + ): + assert phrase in notes + + def test_extracts_only_the_exact_release_section() -> None: changelog = "# Changelog\n\n## 0.2.0 - later\n\nnew\n\n## 0.1.0 - now\n\nfirst\n"