Skip to content

Release 0.8.1: completion cap and safe provider failures - #131

Merged
xeonvs merged 8 commits into
mainfrom
codex/v0.8.1-provider-failures
Aug 24, 2026
Merged

Release 0.8.1: completion cap and safe provider failures#131
xeonvs merged 8 commits into
mainfrom
codex/v0.8.1-provider-failures

Conversation

@xeonvs

@xeonvs xeonvs commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Summary

  • Added: optional OCR_LLM_MAX_COMPLETION_TOKENS, unset by default, with protocol-specific request-body mapping and fail-closed collision handling.
  • Fixed: ocr-ci configure and ocr-ci preflight now share one provider-neutral URL/protocol/header/body owner; classified OCR provider failures produce bounded toolkit-authored GitLab guidance.
  • Changed: protected validation now has one owner per boundary. All five OS/Python jobs still run the complete suite, one job owns coverage, Build artifacts owns package smoke, and protected-main TestPyPI owns development publication/readback.
  • Removed: duplicate PR coverage instrumentation, duplicate package construction in CI quality, generic post-merge reruns of reviewed source checks, and duplicate quality/dependency audit inside TestPyPI development.
  • Privacy: retry diagnostics admit only closed class/phase/status/outcome facts. Raw provider/model data, bodies, codes/messages, IDs, paths, warnings, credentials, stderr, and failed-result findings stay private.
  • Unchanged: OCR remains 1.9.10; receipt v5, DLP, telemetry, review outcomes, severity, findings, posting transactions, approval policy, PR security/package gates, TestPyPI provenance/readback, release-PR checks, and the complete stable-release workflow are unchanged.

Release scope

Operator contract

  • openai maps the cap to llm.extra_body.max_completion_tokens.
  • openai-responses maps it to max_output_tokens.
  • anthropic maps it to max_tokens.
  • An equal JSON integer in OCR_LLM_EXTRA_BODY is deduplicated; a conflicting or non-integer field fails configuration.
  • /models.max_completion_tokens is not used to choose the cap.
  • A safe 429 note treats throttling, spending limits, and requested-output cost reservation as possibilities; it may suggest 4096 without claiming that the cap caused the failure.
  • Runtime 404 remains endpoint-or-model-not-found because raw provider text is not trusted to distinguish endpoint from model.

Validation ownership

  • Pull requests: five complete functional OS/Python jobs; coverage and four risk floors on Ubuntu Python 3.14; unchanged quality, Security, CodeQL, Dependency Review, and Build artifacts checks.
  • Protected main: deterministic TestPyPI development artifact, Twine/smoke, Trusted Publishing, provenance, bounded registry readback, and exact installs. General source and dependency checks are not repeated.
  • Release PR: the same protected pre-merge checks remain required.
  • Post-merge stable Release: exact authorization, quality, dependency audit, package build, provenance, TestPyPI/PyPI readback, supported-Python installs, tag, immutable Release, and receipt remain unchanged.

The live main ruleset was read back before push: required check contexts and strict protected-head policy still match the unchanged job names.

Exact OCR wire evidence

The official Darwin arm64 OCR 1.9.10 asset was checksum-verified as c626347bafcdbf25cf058af403d16568a3a9ffa1814046ff7c9d1e6becaf60d2 and executed in an isolated no-LLM local-gateway probe through the production configuration path:

  • unset cap observed max_completion_tokens=58888;
  • explicit cap observed max_completion_tokens=4096;
  • the temporary binary, HOME, configuration, repository, result, and receipt paths were removed.

Local validation

  • Exact head 4bfd9fc: scripts/quality.sh check passed 1,231 tests + 306 subtests; 86.13% combined branch coverage; risk groups 84% / 82% / 85% / 87% against floors 80 / 80 / 85 / 85; Ruff, mypy, and Bandit passed.
  • Focused workflow contract: 46 tests; YAML parsing for all five edited workflows; unchanged required check names; Towncrier 0.8.1 draft and git diff --check passed.
  • uv lock --check, OCR manifest validation, and checksum-verified Gitleaks 8.24.3 passed.
  • The preceding provider implementation head 53c6374 had byte-identical wheel/sdist builds plus clean Python 3.12-3.14 installs. The workflow-only maintenance commit deliberately does not claim those bytes for the new head; the exact-head Build artifacts check is the package owner.
  • Overall provider-boundary, privacy, DLP/approval, telemetry, rollback, validation-ownership, documentation, and public-diff review completed.

Remaining lifecycle

Wait for every hosted check on this exact head. Evidence-driven fixes must pass the same commit gate. After protected feature merge, verify the TestPyPI development build, then prepare the separate protected Release v0.8.1 PR and complete stable registry/GitHub/provenance reconciliation before closing #129, #130, #132, or milestone v0.8.1.

@xeonvs
xeonvs marked this pull request as ready for review August 24, 2026 19:10
@xeonvs
xeonvs merged commit 3f5c756 into main Aug 24, 2026
13 checks passed
@xeonvs
xeonvs deleted the codex/v0.8.1-provider-failures branch August 24, 2026 19:10
@xeonvs xeonvs mentioned this pull request Aug 24, 2026
xeonvs added a commit that referenced this pull request Aug 24, 2026
## Stable release candidate

- stable version: `0.8.1`
- next development line: `0.8.2`
- exact reviewed head: `8135ce658c4012eeb37868983f76c10a0ae1ad82`
- exact tree: `9f3f9487bf9dbf2f489a0cd8feb1b0104e409f03`
- protected base / feature squash merge:
`3f5c756ca5b6ccf62043765908fdc2cf2b29e14a`
- deterministic source epoch: `1787598637`
- tracked release issues: #129, #130, #132

## Included delta

- Adds the optional protocol-aware `OCR_LLM_MAX_COMPLETION_TOKENS`
contract, unset by default.
- Fixes provider URL/configuration ownership and projects private OCR
retry facts into safe provider-neutral GitLab failures.
- Preserves previous reviews and prevents failed runs from posting
findings or approving.
- Deduplicates repeated validation while retaining all OS/Python,
security, package, TestPyPI, release-PR, and stable-release boundaries.
- Keeps OCR pinned to qualified 1.9.10.

## Development artifact evidence

Feature PR #131 was squash-merged as
`3f5c756ca5b6ccf62043765908fdc2cf2b29e14a`. TestPyPI run 32766642880
published and read back `0.8.1.dev68` with verified provenance and clean
installs:

- wheel SHA-256:
`764d00835c725fa67274b48d95420bb5e3b3d0be28043dc73203cc166bad1ad0`
- sdist SHA-256:
`a9faf493df1d03d0f078ad6807fc04f9dc7cdc82aafc24ac9fec30cbd9843a12`

## Release-candidate validation

- 89 focused release/documentation tests passed.
- `scripts/quality.sh check`: 1,232 tests + 306 subtests, 86.13%
combined branch coverage, risk groups 84/82/85/87, Ruff, mypy, and
Bandit passed.
- Dependency audit, lock, OCR manifest, release notes, JSON metadata,
pinned Gitleaks 8.24.3, and diff checks passed.
- Two explicit `0.8.1` builds were byte-identical; Twine and clean
wheel/sdist installs passed on Python 3.12, 3.13, and 3.14.
- Candidate wheel SHA-256:
`05c3f7425bf69c494da9b5b689ac712daf8d1c3587a7fa564dea67e7c2eb47bc`.
- Candidate sdist SHA-256:
`14be57f3b0a94d37bb749b10f2494d7fb6d757f688f6e0b727fb750f2fafae8e`.

This is the final repository mutation for 0.8.1. After exact-head checks
pass, protected squash merge starts the unchanged stable publication,
provenance, registry readback, supported-Python install, immutable
Release, receipt, issue, and milestone reconciliation workflow.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant