From 005debeeebb2c86a08b35b0600d3191f35fc84f4 Mon Sep 17 00:00:00 2001 From: xeonvs <11463419+xeonvs@users.noreply.github.com> Date: Wed, 26 Aug 2026 13:49:55 +0200 Subject: [PATCH] Release v0.8.4 --- .next-version | 2 +- .release-metadata.json | 8 +- .release-source-date-epoch | 2 +- .release-version | 2 +- CHANGELOG.md | 31 ++ PLANS.md | 334 +----------------- changelog.d/145.bugfix.md | 6 - changelog.d/146.maintenance.md | 8 - changelog.d/146.rules.md | 1 - docs/configuration.md | 2 +- docs/engineering/execution_history/README.md | 1 + .../engineering/execution_history/releases.md | 88 +++++ examples/gitlab/ocr-review.gitlab-ci.yml | 2 +- tests/test_release_notes.py | 22 ++ 14 files changed, 151 insertions(+), 358 deletions(-) delete mode 100644 changelog.d/145.bugfix.md delete mode 100644 changelog.d/146.maintenance.md delete mode 100644 changelog.d/146.rules.md diff --git a/.next-version b/.next-version index b60d719..7ada0d3 100644 --- a/.next-version +++ b/.next-version @@ -1 +1 @@ -0.8.4 +0.8.5 diff --git a/.release-metadata.json b/.release-metadata.json index ca837e8..d5df970 100644 --- a/.release-metadata.json +++ b/.release-metadata.json @@ -1,10 +1,8 @@ { "issues": [ - 139, - 140, - 142, - 143 + 145, + 146 ], "schema_version": "ocr-toolkit.release-authorization/v1", - "version": "0.8.3" + "version": "0.8.4" } diff --git a/.release-source-date-epoch b/.release-source-date-epoch index 7a102d1..651a150 100644 --- a/.release-source-date-epoch +++ b/.release-source-date-epoch @@ -1 +1 @@ -1787732180 +1787744412 diff --git a/.release-version b/.release-version index ee94dd8..b60d719 100644 --- a/.release-version +++ b/.release-version @@ -1 +1 @@ -0.8.3 +0.8.4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 74bcf2c..53f1350 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,34 @@ +## 0.8.4 - 2026-08-26 + +### 🐛 Bug Fixes + +- 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. + + ([#145](https://github.com/xeonvs/open-code-review-toolkit/issues/145)) + +### 🛠 Maintenance + +- 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. + + ([#146](https://github.com/xeonvs/open-code-review-toolkit/issues/146)) + +### 🧩 Rules + +- 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. ([#146](https://github.com/xeonvs/open-code-review-toolkit/issues/146)) + + ## 0.8.3 - 2026-08-26 ### 🚀 Features diff --git a/PLANS.md b/PLANS.md index 6a0703c..ca171a2 100644 --- a/PLANS.md +++ b/PLANS.md @@ -4,336 +4,4 @@ Use this file for active or blocked repository work. Update it before implementa ## Active Work -### Toolkit 0.8.4 - GitLab summary correctness and OCR 1.10.1 - -#### Goal - -Deliver toolkit `0.8.4` through the complete protected stable-release lifecycle: -finish and independently review the existing Draft feature PR, run one final -local OCR `1.10.1` review, correct confirmed findings, merge the exact hosted- -green feature head, prepare and merge `release/v0.8.4`, and independently -reconcile the published artifacts, provenance, immutable receipt, issues, and -milestone. - -#### Plan Origin - -`plan_mode_approved` - -#### Requested Scope - -- Resolve #145 by separating four GitLab summary inputs: OCR coverage, - publication integrity, ordinary findings/warnings, and a toolkit-owned OCR - core advisory. -- Resolve #146 by recording hosted qualification evidence for OCR `1.10.1`, - promoting the exact version and checksums, documenting relevant upstream - behavior, and updating the direct local OCR binary without changing user - configuration. -- Permit HTAB only in published `existing_code` and `suggestion_code` values - while preserving all remaining publication-DLP checks. -- Avoid duplicating one published finding in `Recommended focus areas` while - preserving the deterministic ranking for two or more findings. -- Preserve the current tool-call and token technical-summary format and emit - those independent non-empty metrics under passed, private-sanitized, and - publication-filtered states. -- Finish with verified stable `0.8.4` artifacts and provenance, Actions-owned - receipts on #145/#146, both issues closed, milestone `v0.8.4` closed, and a - clean local `main` synchronized with `origin/main`. - -#### Requirement Traceability - -| Requirement | Owner | Implementation evidence | Acceptance evidence | -| --- | --- | --- | --- | -| OCR 1.10.1 compatibility and local update | #146 | compatibility evidence, manifest/preflight/example pins, current-version docs, Rules and Maintenance changelog fragments | hosted run `32955196785`, exact checksum validation, isolated no-LLM version/help/background/rule checks | -| Closed OCR advisory | #145 | strict private `ocr.toolkit-advisory/v1` parser/projection and Technical details renderer | spoof/malformed/duplicate/extra-key/no-receipt and approval-independence regressions | -| Correct publication-filtered coverage | #145 | derive original coverage from validated receipt v5 `publication.original`; keep publication integrity separate | complete 5/5 filtering, real partial/budget, no pathless fallback regressions | -| Field-bounded HTAB support | #145 | allow HTAB only for `existing_code` and `suggestion_code` through private and public publication DLP | tab preservation plus secrets/PII/laundering/control-character regressions | -| Non-duplicating reviewer guide | #145 | omit focus-area ranking for one published finding | one- and two-finding renderer regressions | -| Operational handoff | #145, #146 | Draft body and issue checklists with exact head/tree, checksums, validation, Added/Fixed/Changed/Unchanged | hosted-green Draft status, clean merge state, zero unresolved threads, remote/worktree readback | - -#### Explicit Non-Goals - -- No additional OCR qualification campaign or enriched-context qualification; - run only the user-authorized final local OCR review on this repository. -- No receipt v5, publication-DLP signal v2, result, manifest, telemetry, or - approval-contract version changes. -- No weakening of global context DLP or publication controls outside the two - exact code-value fields. -- No adoption of upstream GitHub Action, delegate skill, npm launcher, - provider preset, or upstream repository-local `providers.go` rule. -- No mechanical test-directory reorganization or refactor unrelated to the - two activated issues. -- No consumer-repository, B2B, `core/common`, or shared-template integration. -- No issue or milestone closure before independent stable-release readback. - -#### Constraints - -- Release classification: `release-required`; target stable version: `0.8.4`; - delivery state: `active stable delivery`. -- Branch: `codex/v0.8.4-summary-ocr-1.10.1`, based on clean released `v0.8.3` - `main`; `.next-version` already owns `0.8.4`. -- The first tracked repository write is this complete active plan. -- After the signed planning commit, make one initial push and open the Draft PR; - make no further pushes until all local implementation slices are complete. -- Every logical signed commit requires focused tests, complete slice diff - self-review, trust/data-flow review, and `git diff --check`. -- New tests stay with existing thematic owners and include docstrings. -- Do not change OCR configuration, credentials, or the user's `HOME`. -- The final local OCR review uses the already configured local OCR `1.10.1`, - concurrency `2`, no provider-specific `4096` completion cap, and private - ignored artifacts. Its exit status is insufficient without complete result - and manifest readback. -- Keep long-running test and OCR output in ignored owner-only logs and expose - only bounded summaries in the interactive session. -- Run the full local gate after the final fixes; hosted workflows own the - cross-platform, dependency, Security, and CodeQL validation, while local - release closure additionally owns deterministic package and clean-install - evidence. - -#### Inputs And Sources - -- GitHub issues #145 and #146 and compatibility run `32955196785`. -- OCR `1.10.1` release assets and checksums: - - Linux amd64: `8b806c221d409727a21611b4a7952d8e15edadbbc25f5affccaeb8f677e4055c`. - - Darwin arm64: `8fc24bd825c9d918b894be05c0cf27fac8d30bc549257c812d87337167c7563c`. - - `sha256sum.txt`: `ec72bda51f1227f412ee00602d952868efc57d847cce0ae1586fb97069d4139d`. -- Current public contracts in `docs/configuration.md`, `docs/gitlab.md`, - `docs/operations.md`, `docs/security.md`, and `docs/compatibility.md`. -- Runtime owners under `src/ocr_toolkit/` and their existing thematic tests. - -#### User Decisions And Answers - -- Complete and publish stable toolkit `0.8.4` in this task. -- Run one final local OCR `1.10.1` review, correct confirmed findings, perform a - holistic self-review, then push and move the exact Draft head through the - protected release process. -- Preserve the existing technical-summary format and publish tool-call/token - numeric metrics only when their list/value is non-empty and non-zero. -- Default `OCR_REVIEW_EFFORT` remains `medium`. -- Highlight required environment variables in public documentation where - applicable. -- Avoid duplicate local validation already owned by hosted PR workflows. - -#### Completed Baseline State - -- `main` and `origin/main` both resolve to released `v0.8.3` commit - `4c697fee6eeceb02a50fbed1c150a6eb953a08d6` with a clean worktree. -- `.next-version` contains `0.8.4`; `.release-version` contains `0.8.3`. -- Hosted OCR compatibility run `32955196785` passed the required result, - completion-cap, medium-effort, and max-tools probes for `1.10.1`. -- The direct local OCR binary is `1.10.0`; no Homebrew-managed OCR package is - installed. -- Upstream semantic audit identified bounded session cache keys and `.m` - MATLAB/Objective-C rule resolution as consumed behavior; result/manifest, - completion cap `16384`, explicit cap `4096`, medium effort, and max-tools - semantics remain unchanged. - -#### Current Work Queue - -1. **Plan and Draft coordination - completed** - - Create milestone `v0.8.4`, assign #145/#146 to `xeonvs`, add both issues to - the milestone, commit this plan, push once, and open the Draft PR. -2. **OCR 1.10.1 qualification - completed locally** - - Import canonical evidence, human conclusion, manifest/preflight/example - pins, current-version docs, and separate Maintenance/Rules fragments. - - Atomically update the direct local binary with checksum verification and - rollback on validation failure; run isolated no-LLM checks. -3. **Closed advisory contract - completed locally** - - Remove the accepted background advisory from OCR warnings; validate and - attach a private toolkit-owned numeric advisory after publication DLP; - render it only with a valid receipt in Technical details. -4. **Coverage, publication DLP, and reviewer guide - completed locally** - - Use `publication.original` for filtered coverage; suppress the legacy - warning fallback in filtered state; correct DLP wording; permit HTAB only - in the two code fields; omit focus areas for one finding. -5. **Independent feature review and final OCR - active** - - Review the complete Draft diff and trust/data flows, run focused and full - validation with bounded output, then execute the single final local OCR - `1.10.1` review with concurrency `2`. - - Inspect the OCR result and manifest for complete selected-item coverage; - trace and fix only confirmed findings, rerun their owner tests, and record - the private-safe conclusions without publishing raw provider artifacts. - - The final exact-range run completed all 10 selected items at - `02c2f9d8f76d736ba83deed7700bed9374c4e38d` with no failed, reused, or - waived coverage and produced three confirmed boundary corrections: make - receipt-v5 original outcome/count validation exhaustive; preserve the - original HTAB-bearing code value for secret and forbidden matching while - relaxing only its control-character admission; and carry a valid - receipt-bound OCR core advisory into failed-result Technical details. -6. **Holistic self-review and feature delivery** - - Review the complete post-OCR diff, correct findings, run the final - quality/coverage, lock, manifest, Towncrier, Gitleaks, deterministic-build, - clean-install, and diff gates, then push the exact reviewed head. - - Verify hosted checks and unresolved threads on that head, move #147 to - Ready, and squash-merge it through the protected branch policy. -7. **Release PR and stable publication** - - Verify the protected-main development publication, prepare - `release/v0.8.4` with the canonical release metadata, changelog, issue set, - and plan archive, then validate and squash-merge the exact release head. - - Monitor the Release workflow and independently verify TestPyPI/PyPI/GitHub - bytes, PEP 740 provenance, GitHub attestations, annotated tag target, - immutable Release, receipt identities, and clean Python 3.12-3.14 installs. -8. **External closure** - - Verify Actions-owned receipts, close #145/#146 and milestone `v0.8.4` only - after external reconciliation, re-read planning sources, synchronize clean - local `main`, and remove temporary logs, archives, and unused environments. - -#### Locked Decisions - -- Data flow for the advisory is - `exact preview stderr -> strict parser -> numeric toolkit state -> closed renderer -> Technical details`. -- The accepted advisory is not an OCR warning, DLP input, coverage signal, - receipt input, telemetry field, or approval signal. -- Raw OCR output may not supply the reserved `_ocr_toolkit_advisory` key. -- Advisory schema is exact `ocr.toolkit-advisory/v1` with kind - `background_recommended_limit`, bounded positive non-boolean `actual` and - `recommended`, `actual > recommended`, and unit `characters`. -- Without a valid receipt v5 the advisory is untrusted; malformed, extended, - duplicated, or spoofed forms fail closed. -- Complete OCR coverage plus publication filtering renders - `Review complete with publication filtering`; real failed/budget/partial - coverage retains its existing higher-priority state. -- Publication filtering always blocks auto-approval; a valid advisory alone - does not. -- HTAB is allowed only in values of `comments[*].existing_code` and - `comments[*].suggestion_code`; all secret, PII, forbidden-value, laundering, - budget, and other control-character checks remain active. -- OCR `1.10.1` promotion is Maintenance; MATLAB/Objective-C rule effects are a - separate Rules entry. Historical `1.10.0` records remain immutable. - -#### Verification - -- Per slice: focused owner tests, complete diff review, requirement and - trust/data-flow review, `git diff --check`, signed commit. -- OCR checks: compatibility evidence/manifest validation, exact checksum and - documentation consistency, isolated `--version`/`--help`, soft/hard - background preview, and MATLAB/Objective-C rule resolution without LLM. -- #145 regression matrix: both reported scenarios; advisory spoof/malformed/ - duplicate/extra-key/no-receipt; approval independence; complete filtered and - actual partial/budget coverage; field-specific HTAB and remaining DLP - controls; one/two finding guide; tool-call/token summaries across publication - states. -- One final local gate: `scripts/quality.sh check`, coverage floors, - `uv lock --check`, `scripts/ocr_compat.py validate`, Towncrier draft, - `scripts/gitleaks.sh`, and `git diff --check`. -- Hosted Draft PR: build artifacts, Twine, clean installs, OS/Python matrix, - dependency checks, Security, and CodeQL. - -#### Latest Validation Results - -- Baseline branch/worktree check: clean `main` at - `4c697fee6eeceb02a50fbed1c150a6eb953a08d6`. -- Hosted OCR compatibility run `32955196785`: successful. -- OCR `1.10.1` compatibility slice: 146 focused tests passed; support manifest - and Towncrier draft validated. -- The direct local Darwin arm64 binary now reports OCR `1.10.1` and matches - SHA-256 `8fc24bd825c9d918b894be05c0cf27fac8d30bc549257c812d87337167c7563c`; - upstream `sha256sum.txt` matches - `ec72bda51f1227f412ee00602d952868efc57d847cce0ae1586fb97069d4139d`. -- Isolated no-LLM version/help, hosted/local contract, soft/hard background, - and MATLAB/Objective-C rule-resolution checks passed without changing user - configuration or `HOME`. -- Closed advisory slice: 360 focused tests and Ruff passed. Raw/duplicate/ - malformed/unbound advisory input fails closed; the valid numeric projection - remains outside OCR warnings, publication DLP, coverage, receipt v5, - telemetry, and approval inputs and renders only in Technical details. -- Coverage/publication slice: 342 focused tests and 209 subtests passed. The - complete 5/5 filtered scenario retains its original coverage counts without - legacy pathless failures; real partial/budget state remains stronger; - passed/private-sanitized/publication-filtered tool and token lines remain - independent; field-specific HTAB, hostile controls and remaining DLP checks, - one/two-finding guide behavior, and impossible receipt counts are covered. -- Final quality gate passed: Ruff format/lint, mypy, Bandit, and the complete - pytest run produced 86% combined coverage. Risk groups passed at 85% - (result/preflight), 82% (posting/GitLab transaction), 86% - (review/context/DLP/approval), and 87% (MCP/provider/policy/result). -- `uv lock --check`, OCR support-manifest validation, Towncrier 0.8.4 draft, - and `git diff --check` passed. The rendered draft has separate Bug Fixes - (#145), Maintenance (#146), and Rules (#146) sections with explicit - deployment and unchanged-contract guidance. -- The original product implementation and all three final-OCR corrections are - complete locally. Focused posting/review regressions pass 343 tests plus 217 - subtests; shared DLP callers pass 66 tests plus 8 subtests; Ruff and strict - MyPy pass. The release remains active pending the final holistic gates, push, - hosted CI reconciliation, Draft transition, and protected release lifecycle. -- The single authorized final local OCR `1.10.1` review completed the exact - `origin/main..02c2f9d8f76d736ba83deed7700bed9374c4e38d` range in 6m23s with - concurrency `2`, complete 10/10 coverage, no failed/reused/waived items, - no stderr, and 102 tool calls. Its three candidates were all confirmed as - bounded correctness or trust-boundary defects and are the active corrective - scope above; the retained private result and DLP sidecar remain local-only - remediation evidence and will be deleted after verification. -- Final holistic gates passed after the corrective slice: Gitleaks 8.24.3 - scanned the complete `origin/main..HEAD` feature range; `pip-audit - --skip-editable` found no known dependency vulnerabilities; the focused - public-contract suite passed 25 tests; and `git diff --check` passed. -- Two independent local `0.8.4` builds with one fixed source epoch were - byte-identical. Twine accepted both wheel/sdist pairs, archive inspection - found no private/log/Git/environment/key paths, and clean wheel plus sdist - installations passed `ocr-ci --help` on Python 3.12, 3.13, and 3.14. -- Holistic documentation review replaced the remaining obsolete - tab-normalized-copy wording with the implemented unchanged-value DLP - contract. Required variables remain bold in the canonical tables, and the - example toolkit pin correctly stays at the currently published `0.8.3` - until the release PR advances it. - -#### Risks And Recovery - -- **Advisory spoofing or privilege confusion:** reject reserved input before - toolkit projection; exact-schema validation and receipt-gated rendering fail - closed. Revert the advisory slice if the boundary cannot be proven. -- **Coverage conflation:** use only already-validated receipt v5 original counts - for filtered publication; preserve real partial/budget outcomes. Revert the - summary slice if legacy result compatibility regresses. -- **DLP weakening:** make the allowance field-aware and tab-only; retain every - semantic scanner. Any secret/PII/control regression blocks the commit. -- **Local OCR replacement:** verify release checksum and existing source binary, - stage an adjacent replacement atomically, retain a rollback copy until all - no-LLM checks pass, and restore `1.10.0` on failure. -- **Hosted-only failure:** diagnose from exact job evidence, make a focused - reviewed fix commit, rerun the affected local owner check, and push only the - evidence-driven correction. - -#### Resume Point - -Current action: sign and push the complete post-OCR corrective head, verify the -hosted checks and review threads on that exact head, then move Draft PR #147 to -Ready and squash-merge it through the protected branch policy. - -#### Plan Fidelity Check - -- The active queue maps every accepted requirement to #145 or #146 and retains - all approved trust, DLP, approval, compatibility, and release boundaries. -- No requested product behavior is deferred silently; stable publication alone - is intentionally deferred. -- Scope additions require an explicit plan update before implementation. - -#### Reconciliation Check - -- Before final push, compare implementation, tests, docs, changelog, manifest, - examples, and issue acceptance criteria against this plan. -- After hosted CI, verify the exact remote head/tree, all required checks, - unresolved review threads, Draft state, merge state, and local cleanliness. - -#### Closure Gate - -This objective is complete only when the exact protected release is externally -reconciled: registry and Release bytes agree, provenance and attestations -validate, the annotated tag and immutable receipt bind the reviewed release, -Python 3.12-3.14 clean installs pass, Actions-owned issue receipts exist, -#145/#146 and milestone `v0.8.4` are closed, and local `main` is clean and -synchronized. Earlier feature, merge, development-publication, or workflow-green -states are intermediate only. - -#### Post-Close Delivery - -No post-close repository delivery remains in this objective. Conditional backlog -work stays inactive unless its own trigger and authorization are met. - -#### Handoff Notes - -- Draft PR #147 may move to Ready only after the final OCR fixes, holistic - self-review, exact-head local gates, push, and hosted reconciliation. -- #145, #146, and milestone `v0.8.4` remain open until the stable receipt and - independent external readback prove closure. -- OCR `1.10.1` is the qualified toolkit target; the previous `1.10.0` evidence - remains historical and must not be rewritten. +No active or blocked repository work. diff --git a/changelog.d/145.bugfix.md b/changelog.d/145.bugfix.md deleted file mode 100644 index 7fec936..0000000 --- a/changelog.d/145.bugfix.md +++ /dev/null @@ -1,6 +0,0 @@ -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. diff --git a/changelog.d/146.maintenance.md b/changelog.d/146.maintenance.md deleted file mode 100644 index e24a454..0000000 --- a/changelog.d/146.maintenance.md +++ /dev/null @@ -1,8 +0,0 @@ -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. diff --git a/changelog.d/146.rules.md b/changelog.d/146.rules.md deleted file mode 100644 index 14acb34..0000000 --- a/changelog.d/146.rules.md +++ /dev/null @@ -1 +0,0 @@ -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. diff --git a/docs/configuration.md b/docs/configuration.md index 7dbe3b9..be5c021 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -94,7 +94,7 @@ These names belong to `examples/gitlab/ocr-review.gitlab-ci.yml`; they are shell | --- | --- | --- | --- | --- | | **`OCR_VERSION`** | Example pipeline | Yes | `v1.10.1` | Checksum-pinned recommended OCR binary release for toolkit 0.8.4. | | **`OCR_SHA256`** | Example pipeline | Yes | `8b806c221d409727a21611b4a7952d8e15edadbbc25f5affccaeb8f677e4055c` | Expected Linux AMD64 OCR binary digest. | -| **`OCR_TOOLKIT_VERSION`** | Example pipeline | Yes | `0.8.3` | Exact toolkit wheel release installed by the current published example. | +| **`OCR_TOOLKIT_VERSION`** | Example pipeline | Yes | `0.8.4` | 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 f512c2e..7ecae69 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.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. | | `v0.8.2` | [OCR 1.10.0, review effort, and compatibility failure recovery](releases.md#plan-toolkit-0-8-2) | Exact OCR 1.10.0 promotion, medium review effort, private grouping/round data, toolkit-owned output/DLP/approval boundaries, failed-qualification retention, BL-017 ownership audit, feature merge, development artifact verification, explicit local-LLM non-claim, and stable-delivery handoff. | | `v0.8.1` | [Completion cap, safe provider failures, and validation ownership](releases.md#plan-toolkit-0-8-1) | Protocol-aware completion cap, canonical provider configuration, bounded provider-failure projection, privacy and approval invariants, protected validation deduplication, feature merge, development artifact verification, and stable-delivery handoff. | diff --git a/docs/engineering/execution_history/releases.md b/docs/engineering/execution_history/releases.md index 6274df4..a9d0c94 100644 --- a/docs/engineering/execution_history/releases.md +++ b/docs/engineering/execution_history/releases.md @@ -2,6 +2,94 @@ 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.4 — GitLab summary correctness and OCR 1.10.1 + +Status: repository complete; external stable delivery pending +Release classification: `release-required` +Target stable version: `0.8.4` +Repository completion date: 2026-08-26 + +### Goal and delivered scope + +Separate OCR coverage, publication integrity, ordinary findings or warnings, +and the low-level OCR core background recommendation in GitLab summaries. A +strict receipt-bound `ocr.toolkit-advisory/v1` projection now renders only in +Technical details and does not become an OCR warning, DLP input, coverage +signal, receipt field, telemetry field, or approval signal. Complete OCR +coverage followed by publication filtering retains its validated original +counts and renders the publication-filtered state; real partial, budget, and +failed outcomes remain authoritative. + +Publication DLP admits HTAB only in `existing_code` and `suggestion_code` while +checking the unchanged value for secrets, PII, forbidden values, laundering, +and budget. A single published finding no longer repeats itself in Recommended +focus areas; deterministic ranking remains for two or more findings. Toolkit +0.8.4 promotes checksum-pinned OCR 1.10.1, including its `.m` MATLAB versus +Objective-C rule selection, while preserving receipt v5, publication-DLP signal +v2, result and manifest schemas, ordinary OCR warnings, and the existing +non-zero tool-call and token summary format. + +### Decisions and non-claims + +- Issues #145 and #146 are the complete tracked release set. +- The OCR core advisory is accepted only from the exact preview diagnostic, + projected to bounded positive character counts, bound to a valid receipt, + and rendered under Technical details. Raw or malformed advisory input fails + closed and cannot affect approval. +- HTAB admission is field-specific rather than a whitespace-normalized checking + copy: every private and public DLP check sees the original code value. +- OCR 1.10.1 compatibility is Maintenance; its effective `.m` review behavior + is a separate Rules entry. Historical OCR 1.10.0 evidence is unchanged. +- The final OCR run used context mode `off`; no enriched-context qualification + is claimed and no second local OCR run is part of release preparation. +- B2B, `core/common`, shared templates, and other consumer repositories remain + outside this release. + +### Repository, OCR, and hosted evidence + +- Final local OCR 1.10.1 reviewed exact range + `origin/main..02c2f9d8f76d736ba83deed7700bed9374c4e38d` with concurrency + `2`, context mode `off`, and no explicit completion cap. It completed all + 10 selected items with failed/reused/waived `0/0/0`, 102 tool calls, and + empty stderr. +- Three confirmed OCR findings were corrected: exhaustive receipt-v5 original + outcome/count validation; unchanged HTAB-bearing values across all remaining + DLP checks; and valid advisory rendering for failed-result Technical details. +- The final local gate passed 1,290 tests plus 337 subtests at 86.46% combined + branch coverage against the 85% floor. Risk groups passed at 85%, 82%, 86%, + and 87%; Ruff, strict MyPy, Bandit, Gitleaks 8.24.3, lock and OCR manifest + validation, Towncrier draft, deterministic builds, Twine, archive privacy, + and clean Python 3.12-3.14 wheel and sdist installs passed. +- Feature PR #147 passed all 13 hosted checks at reviewed head + `54521ceb370a91cd5b5d5cf95eb7565cd8da78b0` and tree + `619869ca79d687fab3feb5c374096b5b35d39230`, with zero unresolved review + threads. It was squash-merged as verified commit + `5393e7526c9358873ad668fdd1d8f35443d14940` with the same tree. +- Development workflow run 32964488326 published and independently verified + `0.8.4.dev74`. TestPyPI wheel SHA-256 is + `dbb97bee0fe74d75721ab978d6db49c7e6c265f6d059186276a60430fb32e095`; + sdist SHA-256 is + `904b829ffde000e2825bf979147fed9e1191317aca7957d8570eedff360d26f0`. + Trusted Publishing provenance, exact readback, and clean installs passed. + +### Stable delivery handoff + +The release PR is the final repository mutation. It sets +`.release-version=0.8.4`, `.next-version=0.8.5`, deterministic source epoch +`1787744412` one second after the feature squash merge, exact sorted issues +`[145, 146]`, generated Towncrier notes, stable example pins, 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 stable workflow output 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.4` tag and peeled target, immutable `release-receipt.json`, clean PyPI +wheel and sdist installs on Python 3.12-3.14, Actions-owned receipts, closed +#145/#146 and milestone `v0.8.4`, synchronized clean `main`, and scratch cleanup. + ## Toolkit 0.8.3 — OCR boundaries and review tool-usage visibility diff --git a/examples/gitlab/ocr-review.gitlab-ci.yml b/examples/gitlab/ocr-review.gitlab-ci.yml index 99a452f..b7a9bef 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.10.1" - OCR_TOOLKIT_VERSION: "0.8.3" + OCR_TOOLKIT_VERSION: "0.8.4" OCR_TOOLKIT_CHECKSUMS_URL: "https://github.com/xeonvs/open-code-review-toolkit/releases/download/v${OCR_TOOLKIT_VERSION}/SHA256SUMS" OCR_SHA256: "8b806c221d409727a21611b4a7952d8e15edadbbc25f5affccaeb8f677e4055c" OCR_POST_MODE: "draft" diff --git a/tests/test_release_notes.py b/tests/test_release_notes.py index eb95a1f..ee67df5 100644 --- a/tests/test_release_notes.py +++ b/tests/test_release_notes.py @@ -182,6 +182,28 @@ def test_083_release_notes_cover_hotfix_activity_and_release_gates() -> None: assert phrase in notes +def test_084_release_notes_separate_advisory_publication_and_dlp_contracts() -> None: + """Keep the summary hotfix and OCR deployment boundary explicit.""" + + changelog = (ROOT / "CHANGELOG.md").read_text(encoding="utf-8") + notes = release.release_notes(changelog, "0.8.4") + + for phrase in ( + "ocr.toolkit-advisory/v1", + "Technical details", + "Review complete with publication filtering", + "original outcome/count combinations", + "horizontal tabs", + "unchanged value", + "secret, PII, forbidden-value, laundering, and budget checks", + "two or more published findings", + "Open Code Review 1.10.1", + "MATLAB or Objective-C", + "update directly from OCR 1.10.0 to 1.10.1", + ): + 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"