Skip to content

Bump pillow to the fixed release - #1267

Merged
seathatflowsinourveins merged 4 commits into
mainfrom
wave/bump-pillow-13
Oct 21, 2026
Merged

seathatflowsinourveins merged 4 commits into
mainfrom
wave/bump-pillow-13

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

Rebuild #1267 on #1266's accepted head, carrying #1266's reviewed certifi
2026.10.19 change at eb898b5 and adding Pillow
13.0.0 in exactly five active locks. This stacked PR lands alone; #1266's
branch and the old wave/pillow-13 reference remain unchanged.

  • Base commit: eb898b558afbaa36b3d7a69b1f8c6cbfa91cbd2b.
  • Head: f8ab28f37da37605491ba07d3a7bf9a03d0bdae8; exactly one new commit, with that exact parent.
  • Lane: lane:shared; coordinator lapo's cross-lane ruling is recorded in the decision section.
  • Owned paths: the five lock paths in the audit table, worker README/research/pins, trading install/accept/scheduler binders, source hashes, scanner inventory, final-stack source digest, test pins and predecessor admission, manifests/evidence.json, repin research and archival input bytes.
  • No package other than Pillow moves relative to the accepted parent.

SOTA sources

Evidence-class table

Claim Evidence class Command / receipt
Accepted worker control reproduced byte for byte before Pillow local_integration WORKER-CONTROL-on-1266.source.txt, SHA256 096f6255391e56270df7843cb6739d1e373012d6a54e38d7fd7813e0b9e6a96a; BLOCKER-on-1266.json commands
Five resulting locks change only Pillow and retain certifi exactly local_integration AUDIT-on-1266.json; parsed comparison and complete non-Pillow byte comparison
Only two authorized timestamp lines differ from native trading output local_integration AUDIT-on-1266.json, original native candidate 52f17cf0 and resulting 9d8350a6
Both pinned uv versions accept preserved trading bytes offline local_integration Exact commands and exit 0 in AUDIT-on-1266.json
Accepted certifi predecessor migrates and arbitrary locks refuse synthetic Real installer admission block in tests.test_trading_2604_migration; new regression fails with exit 73 before admission fix, then all eight cases pass
Consumer API compatibility and remaining image scope source_review Pillow 13.0.0 release and pinned consumer metadata in repository RESEARCH.md; unchanged rule-6 record below

Authorized trading timestamp preservation: four proofs

  1. The final trading lock SHA256 is 9d8350a6773437a6890808c5b6ae61d98d305021b16ea0a4b4e753dd2f4f6223. Its native uv 0.13.1 source is 52f17cf0799be010152b0cb432ccd1a6e96b30be0cd01d7b7adc5629f02c07f9. Their complete line comparison differs at exactly lines 254 and 256, restoring 2026-10-20T02:24:16.604828Z and 2026-10-20T02:24:15.072385Z instead of the native millisecond strings. No other line changes.
  2. The complete certifi block at blueprints/us-equities/runtime-2604/trading-2604-runtime/uv.lock:250 is byte-identical to eb898b5; block SHA256 5ea1003a2d440a0f39428b41094337fe0035a7a837aceb09bc82286bf8a51244. This is native pillow content, reviewed certifi timestamp precision preserved, as Bump certifi to 2026.10.19 (GHSA-6q48-6c7w-9gw2) #1266 recorded them.
  3. Parsed TOML comparison with eb898b5 has 192 package entries and differs only in Pillow. Non-Pillow package objects, lock header and manifest metadata match. The other four native exports are adopted without edits: their complete non-Pillow bytes, including certifi blocks, match eb898b5.
  4. Both scratch uv 0.13.1 and 0.12.17 exit 0 on uv --no-config lock --check --offline --python <scratch CPython 3.12.3> --no-python-downloads. UV_NO_CONFIG and UV_CACHE_DIR are unset, the existing default cache is retained, UV_PYTHON_DOWNLOADS=never and UV_DEFAULT_INDEX=https://pypi.org/simple; no lock bytes change. Exact binaries, cwd, output and exit codes are in AUDIT-on-1266.json.

Retained inputs

The retained-copy rule is docs/decisions/2026-10-06-application-input-binding-amendment.md. #1266's 13 reviewed published-* copies already preserve the da55495 inputs and remain unchanged. None of bd86117's duplicate pinned-at-da554958 copies is added. The five distinct eb898b5 inputs are retained once under evidence/artifacts/pillow-13-repin-20261020/historical/on-1266/ as published-.source.txt. Only the five matching current input paths in the frozen certifi repin receipt relocate; its hashes, observations, commands and claims remain unchanged. No scanner exclusion, advisory ignore or bypass is added. Old acceptance does not transfer.

Local commands run

Native regeneration commands, all resolver output, accepted worker control,
Pillow artifact hash sets and rejected preliminary annotation outputs are in
BLOCKER-on-1266.json. That filename is retained as chronology: its old precision
blocker was resolved by the wave builder's narrow two-line exception, not by
relaxing certifi byte identity. candidates-on-1266/ retains every native output.
AUDIT-on-1266.json records the authorized final-byte comparisons.

uv 0.13.1 --no-config lock --check --offline --python <scratch CPython 3.12.3> --no-python-downloads
exit 0; Resolved 192 packages
uv 0.12.17 --no-config lock --check --offline --python <scratch CPython 3.12.3> --no-python-downloads
exit 0; Resolved 192 packages
python -B -m unittest tests.test_trading_2604_migration
exit 0; Ran 8 tests; OK

The full candidate invocation completed: 901 tests in 142.781 seconds,
873 pass and 28 optional skips, zero failures/errors, exit 0. validate.py
passes (71 components, 12,350 hashed files); all 33 convergence records are
valid; evidence_manifest --check passes (12,350 files); final_stack --check,
trading_gates --check and git diff --check exit 0. CHECKS-on-1266.json contains
the exact commands, completion output and missing-import evidence. The optional
skips are 17 hftbacktest cases, nine Betterleaks cases, one zizmor case and
one PyYAML case. Existing report-only landscape pin drift and native-fault
source drift in runner.py/safety.py/transport.py remain, without acceptance
transfer.
The 21-module command includes all prior Pillow tests, adoption contract,
scheduled trial, migration, research convergence and SOTA convergence.
No local osv-scanner is installed (which exits 1). The required hosted scan
still must run; no advisory ignore, inventory exclusion or bypass is added.
Optional runtime imports in the hashed CI venv fail for hftbacktest, skfolio,
cvxportfolio, openhands.sdk and matplotlib. No combined runtime install or
destination-host/model acceptance is claimed.

Implementation review and commit proof

Independent staged-increment review APPROVE is in FINAL-REVIEW-on-1266.md.
The committed tree aa4fc1b4be972f6accab7f4a692a1cb1ebd82afa is exactly that
approved tree. COMMIT-on-1266.json repeats the parent, all changed-file
manifest bindings, parsed five-lock comparisons, unchanged rule-6 text and
protected engine blob from committed Git objects. The head was pushed to this PR's branch, replacing the earlier head bd86117.

Decision record

Repository: evidence/artifacts/pillow-13-repin-20261020/RESEARCH.md, Round 4
section; worker method and unchanged rule-6 text in
blueprints/runtime-workers/openhands/research.md, 2026-10-21 section.
Coordinator input decision-20261020-2010-nas-osv-cross-block.md was read in full,
SHA256 541389f021392223bc53fc6a68258edc67f3572ac6730726a1945ed8d35190f8.
The wave builder authorized preserving exactly two certifi timestamp strings
in the native trading output. The earlier independent review confirmed uv's
millisecond precision boundary; it is historical evidence, not an unresolved
blocker after that explicit decision. Turn back if any non-Pillow package,
certifi byte, frozen digest or preserved engine blob changes.

The protected engine file is
blueprints/us-equities/adaptive-paper/requirements-linux-x86_64-py312.lock.
git rev-parse f8ab28f37da37605491ba07d3a7bf9a03d0bdae8:blueprints/us-equities/adaptive-paper/requirements-linux-x86_64-py312.lock
returns 4c9e5ae67770da6167204a198831f1b00bda96ca.

Deviation (rule 6): authorized scratch-only Pillow override

Only AFTER reproducing that current control, add to the same root [tool.uv]
table in scratch, beside environments:

override-dependencies = ["pillow==13.0.0"]

Add pillow = "2026-10-21T00:00:00Z" to exclude-newer-package. Preserve the
seven-day cooldown, LiteLLM August 10 and lmnr August 23 dates. Then:

uv lock --upgrade-package pillow==13.0.0
uv lock --check
uv export --frozen --format requirements.txt --no-header --no-annotate \
  --package openhands-tools --no-emit-workspace

All exit 0. Resolved 412 packages; exactly one Updated line:
Updated pillow v12.3.0 -> v13.0.0. Append the unchanged wheels for the adopted
SHA256 above. Every other exported block is byte-identical; no Darwin 48.0.1
branch returns, and Linux cryptography stays 50.0.0 with its original marker.

Reason and turn-back: the nine Pillow GHSAs in
the repin research
(maximum CVSS 9.2) first fix in 13.0.0. Streamlit 1.63.0's pillow<13,>=7.1.0
cap belongs only to the workspace dev group, absent from this export.
Every exported parent permits 13.0.0: SDK 1.49.6 pillow>=12.3.0, browser-use
0.11.9 pillow>=11.2.1 and reportlab 4.4.4 pillow>=9.0.0. Primary metadata:
https://pypi.org/pypi/openhands-sdk/1.49.6/json ,
https://pypi.org/pypi/browser-use/0.11.9/json ,
https://pypi.org/pypi/reportlab/4.4.4/json ,
https://pypi.org/pypi/streamlit/1.63.0/json . Remove the scratch override when
Streamlit or upstream admits Pillow >=13. Neither override nor scratch uv.lock
is installed or committed as runtime metadata.

F18-style scope limit: only the recipe venv is fixed. The image's PyInstaller
server still builds from upstream's unchanged uv.lock with Pillow 12.3.0;
image digest, server build and grader remain unchanged. Primary source:
https://github.com/OpenHands/software-agent-sdk/blob/fcc102a697874d54a357e36004e02c95040dbdc0/openhands-agent-server/openhands/agent_server/docker/Dockerfile#L129-L158 .
No model or host acceptance is inferred. uv override/environment/export sources:
https://github.com/astral-sh/uv/blob/0.12.17/docs/concepts/resolution.md and
https://github.com/astral-sh/uv/blob/0.12.17/docs/concepts/projects/export.md .
Exact commands, raw output and hashes are in external WORKER-RELOCK.json.
Regression control: require the current SHA256 before adding Pillow settings,
then compare all 336 exported blocks. A returning Darwin fork or any unexplained
non-Pillow delta rejects the candidate.

Host evidence

No evidence/hosts/ receipt changes. This publication changes repository locks
and local integrity fixtures only. The worker recipe venv is the bounded
Pillow target; the image's PyInstaller server and grader remain unchanged.
Old destination-host acceptance, strategy and broker evidence do not transfer.

Checklist

  • No workflows or required checks were weakened; pinned workflow references remain unchanged.
  • No secrets were read, printed or committed, and no required secret was added.
  • No paid hosting, subscription or billing surface was introduced.
  • Peer-owned files and worktrees, Bump certifi to 2026.10.19 (GHSA-6q48-6c7w-9gw2) #1266's branch, and the old Pillow branch were preserved.
  • Bump certifi to 2026.10.19 (GHSA-6q48-6c7w-9gw2) #1266's reviewed retained copies remain byte-identical; no advisory ignore or scanner exclusion was added.
  • Full candidate tests and validators pass with the documented optional skips.
  • Local commit f8ab28f has parent eb898b5 and the exact approved tree.
  • Committed-blob proofs pass for all five parsed locks, every current binder, unchanged rule-6 text, the two timestamp lines and the protected engine.
  • Both families ACCEPT the exact new head and native Codex LOCAL_REVIEWS is recorded.
  • All seven exact-head contexts pass: validate, token-report, secret-scan, dependency-review, osv-scanner, verdict-review-gate and sota-sources.
  • Both lanes acknowledge the exact head. Landing goes through tools/landing/nas_land.sh under the standing NAS landing rule, with headRefOid read immediately before merge. Bump certifi to 2026.10.19 (GHSA-6q48-6c7w-9gw2) #1266 remains open and unchanged.
  • Thursday stage1 remains on the eb898b5 custody bundle. A later session re-pin and any required reviewed path list/C06 are separately coordinated; this publication changes no session or gate.

GHSA-6q48-6c7w-9gw2 (published 2026-10-20 19:35Z): certifi >= 2019.03.09,
< 2026.10.19 bundles emSign ECC Root CA - G3, whose intermediates had
compromised keys. certifi 2026.10.19 drops that root and keeps the
unaffected emSign roots. #1262's required osv-scanner context fails on it
across every lock below.

Lock delta (certifi only, following #1265's method):
- certifi 2026.7.22 -> 2026.10.19 in every lock that pinned it: the
  adaptive-paper engine lock, the trading-2604 runtime uv.lock, the memory
  native-qualification uv.lock, the OpenHands worker lock and pins, the
  adoption SDK lock and constraints, portfolio-risk, catalyst-provenance,
  sim-crosscheck-hftbacktest, deepagents-omniroute,
  openhands-native-capabilities, mlx-smoke and the macOS e2e evidence lock.
- Hashes from PyPI's JSON for 2026.10.19, each file downloaded and checked:
  wheel 42d35340cc5b9ba78e818ddbff0c5b1c2b779de448a340fd1b989f5fa8670e1b,
  sdist 035c1e85572b141bf1c3a3eff0e33a8eb74917522f2559075ff8d2fea780a1ae.
  No other package line changes in any lock.
- adaptive-paper engine lock sha256
  645544edbd13e7ff2434d5459e981ec0a2506c944e30d47844b4f3c57f602db8 ->
  8e08849c3370b905b7993a75e2f356920d45cdba81d64709a71fa3ff6263cb2d.
- trading-2604 runtime lock a1413f20... -> 2df71327...; the published a1413f20
  becomes one more recorded migration input in install-trading-2604.sh, as
  #873 and #1265 did, never acceptance; accept-trading-2604.sh and
  adaptive-paper/scheduled_trial.sh require the new hash.

Bindings refreshed: .github/osv-scanner-lockfiles.json (per-lock sha256 and
the retained fixtures as excluded evidence), adaptive-paper/source-hashes.json
(scheduled_trial.sh, test_scheduled_trial.py), tests/test_scheduled_trial.py,
tests/test_trading_2604_migration.py, runtime-2604/README.md, the convergence
records' frozen inputs re-pointed to the retained copies,
catalogs/landscape/final-stack.json (sources hash of the trading-2604 lock
only), and manifests/evidence.json for every changed and added file.

Retained bytes: each pre-bump lock is kept byte-identical (git show
da55495) under evidence/artifacts/certifi-2026.10.19-repin-20261020/
historical/ as published-<hash>-<name>, an excluded evidence fixture in the
osv inventory (not an install input; the active lock is scanned), with
repin.json as the record.

Checks (python -B, scratch venv from .github/requirements-ci.txt with
--require-hashes):
- scripts/validate_convergence.py --all-recorded: 33 records, all valid;
- scripts/validate.py: passed;
- scripts/evidence_manifest.py --check: passed (12,342 files);
- scripts/final_stack.py --check: passed;
- unittest of test_trading_2604_lock, test_trading_2604_migration,
  test_scheduled_trial, test_osv_lockfile_coverage,
  test_receipt_sha256_key_custody, test_convergence_contract,
  test_evidence_manifest, test_research_convergence_practice and
  test_sota_convergence: 310 tests, OK;
- git diff --check: clean.
osv-scanner was not run locally (not installed); the required context runs it.

No install, accept or trial script was run; no host state, broker or paper
contact. LIVE remains NO-GO.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
…rd-5)

The certifi bump changes adoption/sdk/requirements-linux-x86_64-py313.lock,
which tests/test_adoption_contract.py binds two ways: every non-SDK pin must
equal the supply-chain receipt's historical inventory (certifi 2026.7.22), and
the runtime-sdk-20261003 qualification receipt's lock_sha256 (3a17fa09) must
equal the current lock. Both failed at 1328f12, in
test_lock_matches_accepted_inventory_and_all_pins_have_hashes and
test_sdk_upgrade_keeps_independent_inventory_and_client_guards (validate-shard-5);
both pass at da55495. The ignore route does not apply: .github/osv-scanner.toml
allows an ignore only for unreachable code, and certifi's bundle is reachable
from any HTTPS client in this SDK environment.

The relock is recorded instead of silently re-baselined, in the shape of
IGNORE_ALLOWED_LOCKS in tests/test_osv_lockfile_coverage.py:
- SDK_SECURITY_RELOCKS names certifi 2026.7.22 -> 2026.10.19 and
  GHSA-6q48-6c7w-9gw2 (GHSA-6q48-6c7w-9gw2,
  first patched version 2026.10.19). The inventory guard applies exactly that
  move, and only from the inventory's own version.
- SDK_QUALIFIED_LOCK is the retained pre-bump lock (this PR's evidence
  fixture, byte-identical to da55495). When the receipt's lock_sha256 is not
  the current lock's, it must be that fixture's, and the current lock may
  differ from it only in the relocked blocks; the preamble and every other
  block must be byte-identical.
- The historical receipts stay unedited. A re-qualification of the SDK pair
  records the new lock and inventory and empties the table.

New regression test:
test_relocked_lock_differs_from_the_qualified_lock_only_in_recorded_relocks.
It keeps every version, changes one charset-normalizer hash in the current
lock and then in the qualified fixture, and requires the two new guards to
refuse each. The existing duckdb and openai-codex-cli-bin drift cases still
fail on their own guards. manifests/evidence.json carries the test file's new
hash.

Local, in a requirements-ci venv:
- tests.test_adoption_contract, test_osv_lockfile_coverage and
  test_evidence_manifest: 80 tests, OK;
- scripts/validate.py: rc 0; evidence_manifest --check: passed (12,342 files);
  final_stack --check: passed; git diff --check: clean.

validate_shards.py run --shard 5 --shards 8 at 1328f12 also failed locally in
test_adoption_launchd and test_codex_job_lane_hardening. Those failures come
from the checkout location: mise installs [email protected] there, and GitHub's
attestation API refused it with a 403 rate limit. In clean worktrees of
1328f12 and of da55495, the same three modules give the same result (1
pre-existing error, test_claude_usage_sampler). test_runtime_boot needs PyYAML,
which this venv lacks, on both commits.

No install, accept or trial script was run; no host state, broker or paper
contact. LIVE remains NO-GO.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
…ree modes

Both families' checks of 1328f12 (AMEND, agreed):

1. HIGH (Claude D1, GPT P2a): the adoption SDK lock contract.
   The contract now admits exactly the move evidence/artifacts/
   certifi-2026.10.19-repin-20261020/repin.json records for
   adoption/sdk/requirements-linux-x86_64-py313.lock:
   - certifi 2026.7.22 -> 2026.10.19, GHSA-6q48-6c7w-9gw2;
   - prior 3a17fa09... (the retained qualified lock, which the
     runtime-sdk-20261003 receipt names) -> current 9ee41e37....
   It also requires the record's "Prior native acceptance does not
   transfer". The dated receipts (the 09-19 supply-chain inventory and the
   10-03 SDK qualification) are unedited. The inventory guard and the
   client mutation guard both stay (the duckdb and openai-codex-cli-bin
   cases). The regression test
   test_relocked_lock_differs_from_the_qualified_lock_only_in_recorded_relocks
   now refuses four version-preserving mutations, each by its own guard:
   a lock hash, a qualified-fixture hash, the record's current sha256 and
   the record's no-transfer sentence.

2. GPT P2b: tools/mlx-smoke/requirements.lock.txt did not reproduce under
   hardware-profile-smoke.yml's --exclude-newer 2026-09-23T00:00:00Z.
   The step adds --exclude-newer-package certifi=2026-10-20T02:30:00Z. That
   is uv 0.12.17's own per-package override (crates/uv-cli/src/lib.rs:
   7158-7177, PACKAGE=DATE, flattened into pip compile through
   ResolverArgs:7486 and PipCompileArgs:1642, at tag 0.12.17). certifi
   2026.10.19's files reached PyPI at 2026-10-20T02:24:15Z and 02:24:16Z,
   and no later release exists. Every other pin keeps the original cutoff.
   Reproduced locally with the pinned uv 0.12.17 (x86_64 release archive,
   sha256 fa82fd8d..., equal to its published .sha256) and the step's exact
   arguments: diff -u against the committed lock is empty.

3. MEDIUM (Claude D2, GPT P3): mode 100755 restored on
   adaptive-paper/scheduled_trial.sh, runtime-2604/accept-trading-2604.sh
   and runtime-2604/install-trading-2604.sh, with no content change (blobs
   afe6305, ed1b600 and 412c571, unchanged).

manifests/evidence.json carries the new hashes of the test and the
workflow. No lock byte changes; the engine lock stays 8e08849c.

Local, in a requirements-ci venv:
- scripts/validate.py: rc 0;
- evidence_manifest --check: passed (12,342 files);
- final_stack --check: passed;
- validate_convergence --all-recorded: 33 records valid;
- test_adoption_contract, test_osv_lockfile_coverage, test_evidence_manifest,
  test_workflow_hardening, test_workflow_security_coverage,
  test_scheduled_trial and test_trading_2604_migration: 234 tests, OK
  (13 skipped);
- git diff --check: clean.
Shard 5 (validate_shards.py run --shard 5 --shards 8) at 710733d, in a
clean worktree: 2,304 tests, 0 failures. Its 2 errors are local only and
the same on da55495: test_claude_usage_sampler, and test_runtime_boot,
which needs PyYAML.

No install, accept or trial script was run; no host state, broker or paper
contact. LIVE remains NO-GO.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Stack the five native Pillow relocks on #1266 accepted head eb898b5,
carrying its reviewed certifi pins unchanged. Only Pillow package entries
move. Preserve exactly the two reviewed trading certifi timestamp strings
under the wave builder decision; both pinned uv versions accept the lock
offline.

Reproduce the worker certifi export byte for byte before reapplying the
unchanged scratch-only Pillow override, rule-6 turn-back and F18 scope.
Retain each accepted intermediate input once; reuse #1266 reviewed history
and relocate only frozen receipt paths, never their digests or acceptance.
Refresh all live binders and add real predecessor-admission regression.

Checks: 901 tests, 873 pass and 28 optional skips; publication validation,
all 33 convergence records, evidence manifest, final-stack, trading gates,
shell syntax and whitespace pass. Local osv-scanner is unavailable; normal
exact-head hosted checks and both-family reviews remain required.

Sources and compatibility evidence: evidence/artifacts/
pillow-13-repin-20261020/RESEARCH.md and worker research.md, 2026-10-21.
No destination-host, image, grader, model, broker or paper acceptance.
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Trading lane acknowledgement (docs/lanes.md, lane:shared) for head f8ab28f37da37605491ba07d3a7bf9a03d0bdae8, whose parent is exactly eb898b558afbaa36b3d7a69b1f8c6cbfa91cbd2b (#1266's reviewed head).

The trading lane acknowledges this PR's changes to trading-owned paths, reviewed at this exact head:

  • blueprints/us-equities/runtime-2604/trading-2604-runtime/uv.lock, sha256 9d8350a6773437a6890808c5b6ae61d98d305021b16ea0a4b4e753dd2f4f6223. Parsed against the parent, it has 192 packages in both versions, none added or removed. The only changed package is pillow 12.3.0 → 13.0.0. The certifi 2026.10.19 block is byte-identical to the parent's, and so are the header lines (version = 1, revision = 5, requires-python). pyproject.toml is unchanged (aa370e42…).
  • Each lock binder equals the committed lock's sha256 (9d8350a6…): adaptive-paper/scheduled_trial.sh:54, runtime-2604/accept-trading-2604.sh:15, runtime-2604/install-trading-2604.sh:93 and tests/test_scheduled_trial.py:454.
  • adaptive-paper/source-hashes.json matches the committed files: scheduled_trial.sh is 96c0c8b7… (:35) and tests/test_scheduled_trial.py is 5c0036fd… (:88).
  • install-trading-2604.sh admits the parent's lock pair (2df71327… / aa370e42…) only as a migration input. The retained historical copy is byte-identical to the parent's lock, and tests/test_trading_2604_migration.py adds the case for it.
  • After this lands, the scheduled trial and the offline acceptance require 9d8350a6… and refuse earlier locks. Any trading session run from the landed commit must therefore migrate the runtime first and re-run its acceptance there. Destination-host acceptance of this lock is still pending, as the runtime README states.

Noted, not verified by this acknowledgement: the README says the lock is uv 0.13.1's output, with two certifi upload-time strings preserved as #1266 recorded them, and that uv --no-config lock --check --offline passes under both uv 0.13.1 and the installer's pinned 0.12.17. The trading lane did not rerun those checks. They remain with the PR's family reviews.

This is an acknowledgement for the trading-owned paths only. It is not a merge approval: the landing still needs both reviewers' acceptance of this exact head, all seven required contexts, the native review, and headRefOid read immediately before the merge.

Also noted: this PR currently shows no lane label. docs/lanes.md asks for exactly one.

@seathatflowsinourveins seathatflowsinourveins added the lane:shared Touches files owned by both lanes; needs both lanes' acknowledgement label Oct 21, 2026
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Foundation lane acknowledgement (docs/lanes.md, lane:shared; wave builder, on coordinator lapo's request) for head f8ab28f37da37605491ba07d3a7bf9a03d0bdae8, whose parent is exactly eb898b558afbaa36b3d7a69b1f8c6cbfa91cbd2b (#1266's reviewed head).

The foundation lane acknowledges this PR's changes to foundation-owned paths at this exact head, for merge:

  • the OpenHands worker: blueprints/runtime-workers/openhands/requirements.lock, pins.json, README.md and research.md (the 2026-10-21 Pillow section, including the rule-6 scoped override record);
  • examples/openhands-native-capabilities/requirements.lock;
  • the shared inventories and records: .github/osv-scanner-lockfiles.json (stored sha256 values only), manifests/evidence.json, catalogs/landscape/final-stack.json, and evidence/artifacts/certifi-2026.10.19-repin-20261020/repin.json (five current-input paths relocated to the retained on-1266 copies; its hashes and claims are unchanged);
  • the retained inputs and research under evidence/artifacts/pillow-13-repin-20261020/.

Basis:

  • both families ACCEPT this exact head (GPT 0c1e2933, Claude 2aca9bd6);
  • the native Codex review is clean;
  • all seven required contexts pass at this head, osv-scanner included, with no ignore and no exclusion.

This acknowledgement is for f8ab28f3 only. Any new commit voids it.

@seathatflowsinourveins
seathatflowsinourveins merged commit 4b8ca62 into main Oct 21, 2026
36 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the wave/bump-pillow-13 branch October 21, 2026 01:51
seathatflowsinourveins pushed a commit that referenced this pull request Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:shared Touches files owned by both lanes; needs both lanes' acknowledgement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant