Skip to content

Release 0.1.1 - #2

Merged
Lu-ITC merged 11 commits into
mainfrom
release/0.1.1
Oct 22, 2026
Merged

Lu-ITC merged 11 commits into
mainfrom
release/0.1.1

Conversation

@Lu-ITC

@Lu-ITC Lu-ITC commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Promotes the audited release candidate to stable 0.1.1.
  • Only version literals (pyproject.toml, init.py) and the changelog heading change; wheel payload is byte-identical to the RC wheel apart from version strings.
  • Carries the repaired branch (rc fixes from the 2026-10-16/17 audit cycle) into main.

Test plan

  • unittest suite on CPython 3.10/3.12/3.14 (macOS arm64), from source and from the installed wheel
  • CI matrix (ubuntu 3.10/3.12/3.14, macos 3.14) on this PR

Note

Medium Risk
Changes validation timing, JSON number handling, and error types for invalid inputs—behavioral fixes that could affect callers relying on old exceptions or float-based freshness edges.

Overview
Release 0.1.1 bumps package metadata and documents audit-driven fixes carried in from the RC line.

Input and parsing in load_handoff now consistently raise HandoffError for bad paths (non–path-like types, NUL, directories, unencodable paths) instead of TypeError or misleading JSON errors. JSON loading rejects nonfinite numbers from exponent overflow (1e999, etc.) via parse_float, and parse failures report line/column only—no echoed file content or paths.

Freshness compares elapsed time in exact integer microseconds against max_age_hours using Fraction, so long intervals and boundary cases (e.g. one microsecond over the limit) are stale reliably; huge integer max_age_hours no longer triggers undocumented OverflowError.

CI and packaging: PR tests run a multi-Python/OS matrix again; installs use hash-pinned requirements/build.txt and setuptools>=83 (CVE note). README/CHANGELOG align with PyPI install wording, CI claims, and library semantics.

Tests: new tests/test_regressions.py locks THC/RH behaviors; CLI version checks use package __version__.

Reviewed by Cursor Bugbot for commit ae1651b. Bugbot is set up for automated code reviews on this repo. Configure here.

claude and others added 11 commits October 16, 2026 19:23
Applied once from cloud-handoff/diffs/task-handoff-check.patch onto the audited base.
Not compiled, tested or reviewed at this commit; later commits review
and complete it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reviews the partial patch: keeps finite parse_float rejection and
location-only diagnostics; replaces its 87,840,000-hour cap with exact
int/float comparison (the OverflowError came from math.isfinite on a huge
int). Regression tests for overflow, huge options, diagnostics, forged and
contradictory handoffs, exit codes and the README/CI claim. setuptools>=83
build floor (CVE-2026-59890), hash-pinned build inputs in CI.

Not published. Local candidate for independent audit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
setuptools deprecates the license table and license classifiers and will
reject them after 2027-02-18; the >=83 build floor supports license =
"MIT" with license-files. Metadata only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- THC-R1: README claim and workflow matrix must match in both
  directions as (platform, Python) pairs.
- THC-R2: a NUL in the handoff path is "handoff path is invalid".
- THC-R3: point-in-time local verification moved to the CHANGELOG.
- Deep-nesting test no longer assumes a RecursionError (CPython
  3.14.6 parses it; the schema check refuses it).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- RH-01: elapsed time is integer microseconds and the limit an exact
  Fraction, so a centuries-long interval one microsecond over the limit
  is stale (library and CLI).
- RH-02: README said "Version 0.1.0" for the 0.1.1rc1 candidate; the
  sentence is removed and a test keeps any README version in sync.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…candidate)

Version only. Gives the re-audit fixes their own version so the rebuilt
artifacts cannot be confused with the independently audited ones.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A float limit is compared exactly as the binary value it holds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
load_handoff(None), bytes, a number or a path-like object returning
bytes raised TypeError from pathlib; it now raises the documented
HandoffError, as delivery-evidence-check does since r2. Inherited
direct-library misuse noted by the r2 audit (not a severity finding).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kofi's review of r3 (minor): an empty path or a directory raised "must
be a regular file, not a symlink", and a path with a lone surrogate
raised "unsupported JSON value". Both are HandoffError still, with
messages that say what is wrong. A path object whose own __fspath__
raises a ValueError still propagates that error, as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Promote the tested release candidate to the stable version. Only the version literals and the changelog heading change; the package payload is byte-identical to the audited candidate.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-22T04:21:02.266550Z ae1651b PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@Lu-ITC
Lu-ITC merged commit 1641098 into main Oct 22, 2026
5 checks passed
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.

2 participants