Skip to content

OpenHands: independent OAuthlib reachability review of draft PR 535 (head bb3d00dc, candidate lock 8d257833), artifacts only - #536

Merged
seathatflowsinourveins merged 1 commit into
mainfrom
res-oh-oauthlib-review-535-20260930
Sep 30, 2026
Merged

seathatflowsinourveins merged 1 commit into
mainfrom
res-oh-oauthlib-review-535-20260930

Conversation

@seathatflowsinourveins

Copy link
Copy Markdown
Owner

Scope

  • What this PR changes: publishes, as sanitized artifacts, the independent OAuthlib reachability review of draft PR Qualify native runtime recipes and repair Sol routing and grader FTP dependency #535 at the immutable head bb3d00dc1ed493726481d0d3d746f6b0b46ed8bd (base f03f41c7f3601532b8635f8f112a3d2731454375) for its candidate lock, sha256 8d257833a90ad4096858d108a427e908a54850dee24d1036d37bd7b5e5d86676 (OpenHands SDK 1.50.0, Linux x86_64, CPython 3.13.15). It was requested and accepted by the Codex coordinator ("Codex will cite exact paths and hashes from your PR"). Contents: head and lock identity, the reproduced hashed installs, an independent metadata and raw-text sweep, the advisory files against the candidate's recorded hashes, OSV-Scanner 2.6.0 in CI form and the empty-config control, the closure difference against the PR base's lock, what constrains the three lowered packages, the commands as typed, the scripts as run, receipt.json (claims, findings, controls, residuals).
  • Not in this PR: any approval of a merge, an exception, a pin or a promotion; any change to Qualify native runtime recipes and repair Sol routing and grader FTP dependency #535 or to the live OpenHands lock, pins, tests or OSV configuration; the joint oauthlib 4.0.0 / PyJWT 2.15.1 relock (issue Relock OpenHands onto oauthlib 4.0.0 / PyJWT 2.15.1 by 2026-10-08 (osv ignores from #517 expire 2026-10-13) #518, no earlier than 2026-10-05T18:40:43Z). It is a historical scoped proof for that exact head and lock, not acceptance of the corrected closure Codex reports it will produce.
  • Base commit: f03f41c7f3601532b8635f8f112a3d2731454375 (main).
  • Lane: lane:foundation. The only file outside the new directory is manifests/evidence.json (registration through the hot-file protocol, docs/lanes.md); no shared file's text changes.
  • Owned paths touched: evidence/artifacts/openhands-oauthlib-review-535-20260930/, manifests/evidence.json.

SOTA sources

  • OSV-Scanner v2.6.0, binary sha256 ca69b3d3cd08f889a49dc0a383122f71cc528b83803671df5fd874d97485b108 (the pin in .github/workflows/security-scan.yml), advisories GHSA-hj66-6f7g-4r5v and GHSA-xpv3-w29h-x7cv (oauthlib 3.3.1, fixed in 4.0.0).
  • oauthlib 3.3.1 source files named in the existing exception reasons: oauth2/rfc6749/endpoints/revocation.py and oauth2/rfc6749/grant_types/authorization_code.py, compared byte for byte with the hashes in the candidate's own callers output.
  • The candidate's recorded install commands (uv pip install --require-hashes, uv 0.12.17) and the maintained callers-scan method it adapts, blueprints/runtime-workers/openhands/evidence/relock-2026-09-30.jwt-callers.py.txt (PyJWT relock record: redis decode search (D1), timing range from the outputs (D2), honest output labels #529).

Evidence-class table

Claim Evidence class Command / receipt
The head, the lock hash, pins.json, the exact-lock test entry and the evidence file agree; the OSV config gains only comment lines source_review receipt V1; checks/pr535-identity.txt
The candidate's hashed installs reproduce in a fresh environment (exit 0, pip check clean) local_integration V2; checks/install-log.txt
No code in the closure selects or calls the two advisories' server-side paths; requests-oauthlib is the only consumer (client side) local_integration (static; not a runtime trace) V3; checks/independent-scan.txt
The four advisory files and the Python 2 helper match the candidate's recorded hashes local_integration V4; checks/advisory-files-and-helper.txt
OSV 2.6.0: CI form exit 0; empty-config control exit 1 with exactly the two ids; base lock the same two local_integration V5; checks/osv-*
Against the base's lock: 159 macOS packages removed, click, pypdf and soupsieve lowered, none forced by a dependency local_integration and source_review V6, V7; checks/closure-diff-base-vs-head.txt, checks/pin-sources.txt

Local commands run

$ python3 scripts/validate.py
{"components": 69, "hashed_files": 8493, "profiles": 4, "receipts": 176, "status": "passed"}        exit 0
$ python3 scripts/evidence_manifest.py --check
{"files": 8493, "status": "passed"}                                                                  exit 0
$ python3 -B -m unittest tests.test_osv_lockfile_coverage
Ran 30 tests ... OK                                                                                  exit 0

The full unittest discovery runs in CI's validate check.

Decision record

None: this is a review record. Its findings (A: the candidate receipt's before-hash is not main's lock and the delta against main is unrecorded; B: the review covers the Linux x86_64 CPython 3.13.15 closure only) are in receipt.json.

Host evidence

This PR adds an artifact directory under evidence/artifacts/, not evidence/hosts/.

Checklist

  • No workflows or Actions are changed.
  • No secrets are printed, logged or committed.
  • No new paid hosting, subscription or billing surface.
  • Peer-owned untracked files and worktrees were preserved.

🤖 Generated with Claude Code

…head bb3d00d, candidate lock 8d257833), artifacts only

Publishes the already-run review as sanitized artifacts, at Codex's request: identity of the head and the lock, the hashed installs reproduced in a fresh
CPython 3.13.15 environment, an independent metadata and raw-text OAuthlib sweep (no server-side or advisory class outside oauthlib; requests-oauthlib the only
consumer), the advisory files against the candidate's recorded hashes, OSV-Scanner 2.6.0 in CI form (exit 0), the empty-config control (exit 1, exactly the two
oauthlib ids) and the closure difference against the PR base's lock (159 macOS packages removed; click, pypdf, soupsieve lowered without a forcing dependency).
A historical scoped proof for that exact head and lock, Linux x86_64 and CPython 3.13.15 only; it approves no merge, exception, pin or promotion. Only
manifests/evidence.json is touched outside the new directory (registration).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant