Skip to content

security: resolve Pillow 12.3.0 advisories vs Python 3.10 support #2459

Closed

Description

@groupthinking

Resolution — verified security merge

Resolved by PR #2456, merge e93fd0e975cda0f3a59cb7fa812c19c64f6b2a52, approved head 9a76e5d64bfa9d37e002dba12ac27eb8d4c5fa9b. Current execution receipt records the exact mutation, evidence, limitations and post-merge check state. The findings below are the original issue history; they do not describe current main.

Security blocker

PR #2456's dependency-review gate now passes the certifi finding but blocks on vulnerable Pillow==12.3.0. The gate reports multiple advisories, including three critical findings. Representative reviewed advisory:

Compatibility conflict

Pillow 13.0.0 requires Python >=3.11 and explicitly drops Python 3.10. EventRelay currently declares requires-python = ">=3.10" and CI runs Python 3.10. A lock-only upgrade would therefore violate the supported runtime contract.

Decision required

Choose and implement one bounded path:

  1. Raise EventRelay's Python floor to 3.11 — update project metadata, CI matrix, docs, Pillow floor, and lock; run the full Python test matrix.
  2. Retain Python 3.10 — isolate or remove Pillow from the Python 3.10 runtime path, or adopt a maintainer-published 12.x security backport if one becomes available.

Do not allow-list these critical advisories merely to make the gate green.

Acceptance criteria

  • No affected Pillow release resolves for any supported Python/runtime target.
  • Dependency Review passes without allow-listing these findings.
  • Full Python matrix and image-processing tests pass.
  • Runtime-support decision is documented.
  • No production deployment or merge without applicable authorization.

Current evidence

Activity

  1. linear-code commented on Oct 22, 2026

    @linear-code
    Contributor
  2. github-actions commented on Oct 22, 2026

    @github-actions
    Contributor

    👋 Thanks for opening this issue! It has been automatically labeled for triage.

  3. groupthinking commented on Oct 22, 2026

    @groupthinking
    OwnerAuthor

    Independent current-head verification — 2026-10-22

    The authorized continuation implemented the Pillow/runtime fix in PR #2456, current head 9a76e5d64bfa9d37e002dba12ac27eb8d4c5fa9b. It remains open and unmerged. The older 6deccdc license failure is historical.

    Maintainer review scope: the latest commit adds MIT-CMU and Unlicense to the repository-wide allowed-license list, not a package-only exception. That policy expansion is reviewable in commit 9a76e5d . It is not active on main. No vulnerability/advisory exception was added by this Watch run, and no merge or deployment was performed.

    Next boundary: review/approve the exact PR/head (including that policy scope), then re-fetch all required checks/protection/reviews/threads and mergeability before an expected-head merge. The workflow-lock pilot is separately drafted as #2460 and currently based on this unmerged branch; retarget it to repaired main only after an approved security merge.

    Canonical receipts: concept_tracker action144 with independent Watch review, review334; pilot action149. This is branch/CI evidence, not production acceptance or live-model performance.

  4. added a commit that references this issue on Oct 23, 2026
    e93fd0e
  5. groupthinking commented on Oct 23, 2026

    @groupthinking
    OwnerAuthor

    Verified merge receipt — security dependency repair

    • Authorized in this chat by Hayden's “Continue” immediately after the exact-PR/head merge request, including the repository-wide MIT-CMU and Unlicense additions.
    • Merged PR fix(security): guard AI SDKs and move to patched Pillow #2456 with expected_head_sha=9a76e5d64bfa9d37e002dba12ac27eb8d4c5fa9b, method merge.
    • GitHub returned and a subsequent commit fetch confirmed merge e93fd0e975cda0f3a59cb7fa812c19c64f6b2a52, parents 560f07120dee5294da0af0f2aab8eec8b79de8b5 and the approved head.
    • Merge tree 08aca6db68446550ddd97987efb3f547e5603cf8 equals the tested approved-head tree exactly.
    • Before merge: every applicable repository-policy context passed; active ruleset 24057160 required Closing keyword to open issue, also PASS. No unresolved threads, no REQUEST_CHANGES review, mergeability clean. CodeRabbit's exact-head comment explicitly skipped for repository configuration; this is not a human review approval.
    • Corrected metadata from three closing keywords to one canonical Closes #2459; Guard Anthropic SDK major before API 2026-10-21 migration #2457/security(deps): patch certifi GHSA-6q48-6c7w-9gw2 #2458 remain linked. New closer check 120160192030 passed before merge.
    • Independently refetched Python 3.11 job120153758064 and 3.12 job120153757927: each 2,946 passed, 9 deselected, 5 XPASS, 118 subtests; additional MCP lane 38 passed/20 subtests. Both installed Pillow13.0.0 and certifi2026.10.19.
    • Post-merge checks are now VERIFIED PASS on merge e93fd0e975cda0f3a59cb7fa812c19c64f6b2a52: CI39875628067, Dependency Review39875628072, Security39875628007, Coverage39875628010, CodeQL39875628006, E2E39875628012, Secret Scan39875628005, Anthropic WIF39875628011 and iteration-loop39875628009. All returned push-triggered runs completed successfully. Fresh Python jobs120160408995/120160408875 each report 2,946 passed,9 deselected,5 XPASS,118 subtests plus38 MCP tests/20 subtests.
    • Full classic branch-protection endpoint returned 403; branch metadata and the complete returned active ruleset were fetched instead. No protection bypass was used. Vercel project reads returned 404; deployment configuration remains UNKNOWN. No production deployment API or CLI command was issued.
    • fix(ci): lock dependency review actions and detect lockfile changes #2460 automatically retargeted to main. Fresh review then exposed a lockfile-only detector gap, fixed on that same PR at 5cd469aac4b1f7ad031d9afe54e4292dc18170f5 with real Git-diff regressions. Pilot now has three changed files and all current-head checks pass; separate exact-PR/head approval is still required. Pilot receipt.
    • Owner: groupthinking / Codex continuation. Canonical ledger: action144; pilot action149. Rollback: reviewed revert of the merge, reassessing restored vulnerability exposure.

    Scope status: security merge and post-merge checks VERIFIED. Overall two-PR delivery NOT COMPLETE: pilot implementation/checks/review are verified, but its separate merge approval remains. The existing Vercel integration reports success on main, but its deployment environment/configuration could not be inspected; no production acceptance claim is made.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions