Repository navigation
OpenHands runtime lock: litellm 1.93.0 to 1.93.2 (GHSA-3cv6-jpf6-8222), unblocking the required osv-scanner check - #562
Conversation
…, which fails the required osv-scanner check on every head Relocks requirements.lock with the recipe's own method (research.md "Runtime lock security relock") plus one upgrade, litellm==1.93.2, and the two-line edit of the extracted upstream workspace that upgrade needs (its litellm exclude-newer-package cap and its litellm==1.93.0 pin). The control reproduces the committed lock byte for byte; only the litellm requirement line and its hashes change. The IGNORE_ALLOWED_LOCKS entry is rebound to the new digest and to the new receipt; no ignore is added. Returned outputs, published scripts, scanner outputs and the receipt are in the evidence directory. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
…ord and open-PR sections, exit statuses of the published scripts, a test of the grants' receipts and of pins.json, review records Opus and two GPT-6.1 Sol reviews (packaged Codex lane through the local OmniRoute gateway) read the first head: 23 findings, all checked and repaired. Returned outputs gain the CI record (J), the open pull requests that touch the same files (K) and negative controls (L); the published scripts exit nonzero on a failing step; the grant guard now requires the receipt to record the lock's path and sha256 (tests/test_openhands_lock_binding.py, with pins.json's digests); receipt wording limited to what the outputs show; review records and their dispositions are in the tree. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…e, last commit) Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
6741c55 to
f2bf733
Compare
|
Independent bounded review found no concrete blocking defect at exact #562 head f2bf733. No hold or source correction is requested by this review. The published lock SHA-256 is e24df8328149c921f751eb93d682b3f5b66eb4efd09bf4b053ffcfca057181e1. All 334 other unique packages / 335 physical blocks are byte-identical to main and to the separately prepared private candidate. Requirement/version/marker lines match; LiteLLM's seven platform-specific hashes are the sole hash-set difference and each is official PyPI 1.93.2 metadata. They include the reviewed CP313 wheel All 26 changed source/artifact index bindings match. The guard, pins and new receipt agree on the new digest. Configurations, inventory, workflow, ignore IDs and expiries are unchanged. Actual light native reruns returned:
The original retained results support hashed installation/imports/pip checks (exit 0), and the 49-input native scans changing from 1/0 to 0/0. The reviewer inspected the original 236-test result with two skips; it did not rerun that full suite or installation. The fresh LiteLLM/source observations record zero OAuthlib mentions and explicitly retain that other callers were not rescanned. The independently accepted private closure 30668ebc84c56d2c9b2bb03e4dcb4f89d222cb7c0c00ae1486166498a1d51456 can support the same reviewed Linux x86_64 / CPython 3.13.15 official wheel and unchanged graph. That is matching-input source-evidence reuse, not a new execution or complete installed-byte attestation by this PR. Dynamic reachability, compiled extensions and other platforms remain unqualified. Claude |
) ### Scope Fix the newly reviewed advisories that blocked every required OSV check: target only fsspec 2026.6.0/multidict 6.9.1 in the OpenHands runtime lock, Mako 1.4.2 in the application Python lock, and source-map-js 1.2.2 in its pnpm lock. Preserve all other package pins and the original captured artifact bytes. The command center selected a dated source-backed exception for the frozen macOS input in its isolated config, and exclusion of both retired Lumibot lockchecks after the owner's confirmation. Each lock has native before/after evidence and its supported installation/qualification checks. No workflow or branch-protection setting changes. - Base: `ecfa112764c664d35377dd66b8cfcb67e5a94d60` (fetch confirmed current main). - Lane: `lane:foundation`. - Owned scope: three production locks, SDK pins/research/evidence, qualification and ruling receipts, bounded OSV configuration/inventory, existing binding/no-use guards and closure record. Evidence registry committed last. ## SOTA sources - [fsspec advisory GHSA-27vj-qcqg-25rc](GHSA-27vj-qcqg-25rc), [official 2026.6.0 release metadata](https://pypi.org/pypi/fsspec/2026.6.0/json), [maintainer tag](https://github.com/fsspec/filesystem_spec/tree/2026.6.0). - [multidict advisory GHSA-54p9-h82j-f925](GHSA-54p9-h82j-f925), [official 6.9.1 release](https://github.com/aio-libs/multidict/releases/tag/v6.9.1), [PyPI metadata](https://pypi.org/pypi/multidict/6.9.1/json). - [Mako advisory GHSA-5639-2j2p-m4mx](GHSA-5639-2j2p-m4mx), [maintainer release](https://github.com/sqlalchemy/mako/releases/tag/rel_1_4_2), [official metadata](https://pypi.org/pypi/Mako/1.4.2/json). - [source-map-js advisory GHSA-68fv-2mgg-jv7q](GHSA-68fv-2mgg-jv7q), [published 1.2.2 metadata](https://registry.npmjs.org/source-map-js/1.2.2), [maintainer fix PR79](7rulnik/source-map-js#79). - Dependent ranges: [Hugging Face Hub0.35.3](https://pypi.org/pypi/huggingface-hub/0.35.3/json), [aiohttp3.14.3](https://pypi.org/pypi/aiohttp/3.14.3/json), [yarl1.22.0](https://pypi.org/pypi/yarl/1.22.0/json), [Alembic1.20.0](https://pypi.org/pypi/alembic/1.20.0/json), [PostCSS8.5.23](https://registry.npmjs.org/postcss/8.5.23). Complete declared-parent checks include optional/null metadata handling; limitations remain explicit in receipts. - [#562 at74cc5468](#562): original builder/relock/hash/install/scan/guard pattern. Installed [uv0.12.22](https://github.com/astral-sh/uv/releases/tag/0.12.22) reproduces the accepted baseline byte for byte; #562's0.12.17 remains historical. - [#587 at798ac445](#587), [#252 atc96c2555](#252): bounded frontend qualification. [pnpm12.4.2 update parser](https://github.com/pnpm/pnpm/blob/9502f3c457717dae3a4ddbf4315a8c4aee16fdb4/pnpm/crates/cli/src/cli_args/update.rs) and [supported update docs](https://pnpm.io/cli/update): selective bare-name transitive update, no-save/lockfile-only; obsolete explicit-version/Infinity forms avoided. - Frozen config precedent [8fc8611](8fc8611) and the maintained closure at `docs/decisions/2026-09-22-github-automation-closure.md`. Indexed source offsets/reconstruction inspected at [source-map-js1.2.1](https://github.com/7rulnik/source-map-js/blob/428d49f6b1e1614f082b7706fa879a3d9c64f728/lib/source-map-consumer.js#L944). Dedicated input/digest/expiry guards retained. - Trial [#336 at20b52a5b](#336), existing captured XNYS exclusion precedent, and command-center ruling `task-ns2604-coop-20261006T003954Z`. The verified owner confirmation is a **report** row: `report-native-agent-stack-5f-20261006T0045Z-osv`, from `native-agent-stack-5f`, at `2026-10-06T00:41:23Z`, replying to `task-native-agent-stack-5f-20261006T004011Z`. Sanitized evidence: `evidence/receipts/osv-captured-lumibot-lockchecks-20261005.json`. No trial replay or new host-process census is claimed. ### Evidence-class table | Claim | Class | Actual result | | --- | --- | --- | | Published dependent ranges permit the fixes | source_review | Complete pinned metadata review; no caps/errors; exact parents linked above | | Targeted locks preserve other pins | local_integration | SDK byte-identical control; only two package blocks move. Mako only package block, native lock revision3→5 recorded. pnpm manager/importers unchanged; only source-map-js move | | Release identity and supported artifact hashes match | local_integration | Native hash checks0: fsspec2, multidict14, Mako2; universal wheels/sdist included | | Supported isolated/native qualification succeeds | local_integration | SDK178-package check/imports0; backend28-package check/import/render0; frontend frozen install/peers/typecheck/build0 | | Both required scan partitions pass locally | local_integration | Before:60ordinary/1frozen,5+1 unignored findings. After:58ordinary/1frozen, actual native exits0/0, zero unignored findings | | Binding/coverage/no-use guards remain effective | local_integration / synthetic |70 touched tests0; clean control0; all deliberate negative controls1 as expected | | Registry integrity | local_integration | validate.py0;69components/4profiles/212receipts/10309hashes; integrity only | | Hosted, image, provider and full API/browser acceptance | unknown | No claim; command-center exact-head cross-family read remains pending | ### Local commands run All heavy phases used nice19; scratch/cache and installs were isolated. Exact supported commands and sanitized actual returned output/hashes are retained in the three relock prefixes and linked receipts. ``` #562-pattern paired native uv control/targeted lock/check/export:0 native release hash checks:0 hashed SDK install / uv pip check / exact imports:0 targeted Mako lock/check; frozen/no-build sync; pip check; imports/render:0 pnpm12.4.2 update source-map-js --no-save --lockfile-only --ignore-scripts:0 pnpm install --frozen-lockfile --ignore-scripts; peers check; typecheck; build:0 python -m unittest tests.test_openhands_lock_binding tests.test_osv_lockfile_coverage tests.test_frozen_macos_variant_no_use 70 tests; latest final data-pin run6.936s; exit0 OSV2.6.0 ordinary scan:0; frozen scan:0 python3 scripts/validate.py:0,10309hashes component_matrix --write:0,32rows/zero flips new_host_grand_list --write:0,32layers/66winners git diff --check and git diff --cached --check:0 ``` ### Failed conditions The initial root-added UV_NO_CONFIG1 discarded the resolver's Linux workspace settings; the next copied formatter inserted two plus signs. Native lock/check/export succeeded in both, while the relock byte-comparison script failed. Neither candidate was adopted; both are disclosed separately. Test preflight rejected inside-checkout TMPDIR before execution; existing external lane cache was used. Intermediate stale receipt/unreviewed metadata-line guards failed before being corrected. Publication caught one private interpreter path in a negative-control trace; it was sanitized. Terminal progress whitespace was normalized and its capture hash rebound. No failure is promoted to a passing upstream test. ### Decision record `docs/decisions/2026-09-22-github-automation-closure.md`, "Four production relocks and preserved receipt inputs (2026-10-06)"; SDK research section and qualification/ruling receipts record alternatives, source/replay limits and overturn conditions. The macOS exception expires2026-12-24; its `.frozen` rename is a separate follow-up. Future use of captured trial dependencies requires a separately maintained/scanned qualification environment. ### Host evidence No evidence/hosts or platform-status flip. The native runtime imports/builds are local integration; source reviews, synthetic controls and hosted acceptance remain separate. Exact-head command-center review is requested. ### Checklist - [x] No workflow/action permission or branch-protection change. - [x] No credential value or authentication store read/printed/copied; no new required secret. - [x] No paid hosting, provider/model runtime call, deployment or restart. - [x] Peer-owned worktrees preserved; three captured locks remain byte-identical. - [x] Registry committed last; one lane:foundation label. - [x] Ordinary AND frozen native scans and touched tests passed before ready. - [ ] Command-center exact-head cross-family read and 5f landing; lane never merges. ## Dated input-binding repair (2026-10-06) The command-center exact-head read of67c6594d2 found two omitted downstream gates: both convergence records still resolved their original UV digest through the newly relocked live file, and the recipe ledger's PNPM current digest was stale. This amendment preserves trial evidence instead of attributing new dependencies to the original runs. - Retain ecfa112 UV/PNPM bytes and the two pre-amendment experiment snapshots byte-for-byte. - Change only each canonical record's UV input path; keep frozen digests, commands, observations, outputs and usage. Both records remain declared. - Append dated recipe supersession/current mappings and ordered path relocations; protect original/prior/superseded bytes and all non-path record bytes with the portability assertions. - Source: [#252 path-only relocation](https://github.com/seathatflowsinourveins/native-agent-stack/blob/c96c2555c2d84683d9e519623354c814aeb6a584/blueprints/convergence-practice/application-delivery/history/recipe-revisions.json#L121) and [#587 supersession](https://github.com/seathatflowsinourveins/native-agent-stack/blob/798ac445307e2cd8eba6e74d7722ac0e16da02c7/blueprints/convergence-practice/application-delivery/history/recipe-revisions.json#L99). - Dated decision/source receipt: `docs/decisions/2026-10-06-application-input-binding-amendment.md`, `evidence/receipts/pr765-bindings-amendment-20261006.json`. Before repair, all-recorded convergence exited1 (2invalid/32) and native-maintenance exited1 (29cases/one PNPM mismatch). Repaired focused checks: native-maintenance29passed; convergence/OSVcoverage/frozenMAC102passed. After main-registry refresh and full own-file re-registration, local validate0/10315hashes and all-recorded convergence0/32valid. Full local suite ran under A22's specific copied-fixture `install.sh --list` exception and exited1:10,343tests/2217.568s,18failures/18errors/905skips. Installer apply paths remain banned. Raw output is retained privately; known systemd parser (#767), missing calendar/mutation imports, PATH fixtures, token-canary fixtures and installed Windows Terminal type drift are recorded separately, never presented as a pass. Old reviewed head's hosted baseline was6/7 required contexts: validate failed, six others passed. Required acceptance is measured at the new pushed head; no workflow rerun loop or old local check is promoted into that acceptance. No production pin, recorded trial output, raw receipt, frozen macOS lock, captured trading lock or scanner exclusion changed in this repair.
Scope
blueprints/runtime-workers/openhands/requirements.lock) from litellm 1.93.0 to 1.93.2 (only the litellm requirement line and its hashes change) because OSV published GHSA-3cv6-jpf6-8222 at 2026-09-30T21:11:25Z and the scan workflow has concluded failure in every run listed after it (pull-request heads and main's own push runs; the one job log read shows the requiredosv-scannerjob failing on this finding), which keeps every PR from merging; rebinds the lock'sIGNORE_ALLOWED_LOCKSentry to the new digest and receipt; adds the receipt, the returned outputs, the published scripts, the review records and a datedresearch.mdsection; and addstests/test_openhands_lock_binding.py, because a review showed that the grant guard accepted a receipt of the previous digest and that no test comparedpins.json's digests with the lock files. No ignore is added.29458b43(origin/main)lane:foundation(the OpenHands recipe lock; the lock's previous owner is gone, the merge-train owner asked the Gate A owner session to take it and to relock rather than ignore)blueprints/runtime-workers/openhands/{requirements.lock,pins.json,research.md},blueprints/runtime-workers/openhands/evidence/relock-2026-09-30-litellm.*(new: returned outputs, 10 published scripts, 4 scanner outputs, 5 review records),evidence/receipts/osv-openhands-litellm-relock-20260930.json,tests/test_osv_lockfile_coverage.py(the OpenHandsIGNORE_ALLOWED_LOCKSentry and its comment),tests/test_openhands_lock_binding.py(new),manifests/evidence.json(registrations, last commit only).SOTA sources
fcc102a697874d54a357e36004e02c95040dbdc0(pins.jsonsource_archive, tarball sha2562d3006de86eaec690a82e497fcd4459816637afe6e53f7da87783183792148a8): rootpyproject.toml:8,19(theexclude-newer-packagecap for litellm and thelitellm==1.93.0pin),openhands-sdk/pyproject.toml:18(litellm>=1.93.0), rootuv.lock:2174-2175(litellm 1.93.0). The lock is generated from this source. The pinned archive and upstreammain(fad63774459171b08f889b12fd3b4d6346168c3e, read 2026-09-30T23:04:29Z) still pin litellm 1.93.0 inpyproject.tomlanduv.lock; no fixed upstream lock was found in those two inputs (other branches and releases were not read). The two-line edit of the extracted workspace (cap moved from 2026-07-20 to 2026-08-10, pin==1.93.2) is therefore ours, printed in full in the returned outputs (section B) and recorded as a limitation.0.12.17(astral-sh/uv,adoption/pins-linux-x86_64.json):uv lock --upgrade-package("Allow upgrades for a specific package, ignoring pinned versions in any existing output file") and--exclude-newer-package, quoted from the pinned binary's ownuv lock --help(returned outputs, section C);uv export --frozenas in the recipe.blueprints/runtime-workers/openhands/research.md"Runtime lock security relock (2026-09-27)" and the 2026-09-30 sections, and the scriptsevidence/relock-2026-09-30-urllib3.*at29458b43(the control of this relock reproduces the current lock byte for byte). The new scripts are published copies of what ran, derived from those; the review lane is the repository's packaged one (tools/sota-convergence/landscape-sweep,evidence/artifacts/terminal-lane-cross-family-review-20260930).v2.6.0(release asset sha256ca69b3d3cd08f889a49dc0a383122f71cc528b83803671df5fd874d97485b108, pinned in.github/workflows/security-scan.yml:50-58): the workflow's own scan step, run with the pinned binary. Advisory: GHSA-3cv6-jpf6-8222 / CVE-2026-84377 (OSV API record and its GitHub advisory reference, GHSA-3cv6-jpf6-8222; fixed in 1.93.2 among nine releases).v1.93.0(052b5a2169d8d3082e1d66e69f200a72b0c1e274) andv1.93.2(cd1bd0f4b8af865f8d05fbd938392fdd4703babc):git diff --stat(34 files), and the blob id oflitellm/llms/openai/responses/transformation.py, the fileresearch.mdR7 andworker.pycite, is equal at both tags. PyPI JSON API for litellm 1.93.0, 1.93.1 and 1.93.2 (upload times, hashes, yanked flags).Evidence-class table
cmpexit 0, sha256e24df832...), and the control (the current lock's six upgrades, unedited workspace) reproduces the current lock byte for byteevidence/relock-2026-09-30-litellm.osv-*uv pip checkand litellm 1.93.2 pass on the new locklitellm.proxy(8,877 files parsed by syntax tree, 0 references)osv-scannerjob failing on this findingpins.json,requirements.lock,manifests/evidence.jsonand the coverage test; #551 and #555 conflict only inmanifests/evidence.jsonpins.jsondigest that is not the lock's, and on a grant that names another lock's receipt; the published scripts exit nonzero on a failing test pipeline, hash check and installindependent_reviewand thereview-*fileslimitationsLocal commands run
Decision record
evidence/receipts/osv-openhands-litellm-relock-20260930.json(release_choice: the alternatives - an ignore, a newer line, waiting for upstream - and the overturn conditions;independent_review: the reviews and each finding's disposition) and the datedresearch.mdsection "Runtime lock litellm relock (2026-09-30)". Two edits are deferred to the pull requests that change the same files, with an owner and a date in the receipt'slimitations: the dated paragraph ofdocs/decisions/2026-09-22-github-automation-closure.md(#555) and the ignore reasons of.github/osv-scanner.toml(#535).Host evidence
Not applicable: no file under
evidence/hosts/changes.Checklist
permissions: contents: read: none changed.🤖 Generated with Claude Code