Repository navigation
Release 0.1.1 - #2
Merged
Merged
Conversation
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.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
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_handoffnow consistently raiseHandoffErrorfor bad paths (non–path-like types, NUL, directories, unencodable paths) instead ofTypeErroror misleading JSON errors. JSON loading rejects nonfinite numbers from exponent overflow (1e999, etc.) viaparse_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_hoursusingFraction, so long intervals and boundary cases (e.g. one microsecond over the limit) arestalereliably; huge integermax_age_hoursno longer triggers undocumentedOverflowError.CI and packaging: PR tests run a multi-Python/OS matrix again; installs use hash-pinned
requirements/build.txtandsetuptools>=83(CVE note). README/CHANGELOG align with PyPI install wording, CI claims, and library semantics.Tests: new
tests/test_regressions.pylocks 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.