Skip to content

Lift the MLX smoke lock past its transformers and mlx advisories - #99

Merged
seathatflowsinourveins merged 1 commit into
mainfrom
claude/mlx-smoke-security-20260923
Sep 23, 2026
Merged

seathatflowsinourveins merged 1 commit into
mainfrom
claude/mlx-smoke-security-20260923

Conversation

@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator

Resolves Dependabot alerts 1-6: transformers < 5.10.0 (3 high, 1 medium) and mlx <= 0.29.3 (2 medium), all in tools/mlx-smoke/requirements.lock.txt.

  • Why the Dependabot PRs fail: Bump mlx from 0.29.3 to 0.29.4 in /tools/mlx-smoke #97 and Bump transformers from 5.0.0rc1 to 5.10.1 in /tools/mlx-smoke #98 edit the hash lock directly, which the macOS job's recompile-and-diff check rejects. mlx-lm 0.30.2 also pins transformers==5.0.0rc1 exactly, so the lock cannot be raised without a newer mlx-lm.
  • Change: requirements.in now pins mlx-lm 0.31.3 and adds the floors transformers>=5.10.0 and mlx>=0.29.4. The lock is recompiled with the same --exclude-newer 2026-09-23 cutoff and resolves mlx 0.32.2, mlx-lm 0.31.3 and transformers 5.17.0.
  • macOS target: newer mlx wheels ship only for macOS 14+, so the lock and the CI diff-check both compile with MACOSX_DEPLOYMENT_TARGET=14.0. The runner is macos-15.
  • Evidence: this PR's macos-profile job is the first hosted MLX smoke on the new versions. The earlier 0.30.2 run (35808320867) stays the recorded profile evidence.
  • Checks: hardware-profile, hardening and coverage tests OK; zizmor and actionlint clean; guarded gitleaks found no leaks.

Supersedes #97 and #98.

🤖 Generated with Claude Code

mlx-lm 0.30.2 pinned transformers==5.0.0rc1, which Dependabot alerts 3-6 flag
(GHSA-xrqw-3rrv-vx5w, GHSA-fgcw-684q-jj6r, GHSA-29pf-2h5f-8g72,
GHSA-69w3-r845-3855), and the lock resolved mlx 0.29.3 (GHSA-j842-xgm4-wf88,
GHSA-w6vg-jg77-2qg6). requirements.in now pins mlx-lm 0.31.3 with floors
transformers>=5.10.0 and mlx>=0.29.4; the lock (same cutoff) resolves mlx
0.32.2, mlx-lm 0.31.3 and transformers 5.17.0. Newer mlx wheels are macOS 14+,
so the lock and the CI diff-check both compile with MACOSX_DEPLOYMENT_TARGET=14.0.
Supersedes Dependabot #97 and #98, whose raw lock edits fail the diff-check.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedpypi/​transformers@​5.17.077100100100100
Updatedpypi/​mlx-lm@​0.30.2 ⏵ 0.31.398100100100100
Addedpypi/​mlx@​0.32.299100100100100

View full report

@seathatflowsinourveins
seathatflowsinourveins merged commit af2c299 into main Sep 23, 2026
13 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/mlx-smoke-security-20260923 branch September 23, 2026 03:46
seathatflowsinourveins added a commit that referenced this pull request Sep 23, 2026
…stall-20260923

origin/main advanced to af2c299 (through #96, which stopped committing the
generated explorer and started keeping manifests/evidence.json sorted, and
#99, an unrelated MLX smoke lock update) while round 2's fixes were in
progress. Per the coordinator's merge instructions:

- .gitignore: kept both sides' additions (macos-example.json's own
  exception, and main's new /docs/ecosystem/index.html ignore rule).
- docs/ecosystem/index.html: modify/delete conflict (main stopped tracking
  it; this branch's earlier round had rebuilt it) -- `git rm` per
  instructions; it is a build artifact now, not committed.
- manifests/evidence.json: took origin/main's version, then re-registered
  every file this branch's own commits changed (17 files across both fix
  rounds) with scripts/host_receipts.py's register_file, then normalized
  with `python3 scripts/evidence_manifest.py --write`.

python3 scripts/validate.py and python3 scripts/build_ecosystem.py --check
both pass after this merge; the full python3 -m unittest (2546 tests) is
OK.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Sep 23, 2026
…immutable releases, target ruleset (#108)

* Close the catalog's GitHub automation: OSV/zizmor-online scans, gates, immutable releases, target ruleset

Add security-scan.yml: an osv-scanner job (OSV-Scanner 2.6.0, checksum-verified)
over every tracked lockfile in .github/osv-scanner-lockfiles.json with
--no-resolve, failing on unignored vulnerabilities and uploading SARIF off PRs,
plus a zizmor-online SARIF job. A unittest fails when a tracked lockfile is
missing from the inventory or an ignore lacks a <=90-day expiry.

Gate dependency review at high (warn-only removed) and grype at --fail-on high
with a reviewed, empty .grype.yaml; upload Scorecard SARIF with a job-scoped
security-events write; add a 7-day Dependabot cooldown. publish-catalog.yml
gains a tag-only release job (contents: write only) that re-checks the attested
digests and creates the immutable release with both files attached at creation.

.github/main-ruleset.json becomes the target (dependency-review and osv-scanner
required, strict checks, signatures, CodeQL code_scanning, squash only); the
tag rulesets match live 23829417 and 23859358. Record the evidence, the
CodeQL-vs-zizmor comparison on 168a3a8 and the superseded decisions in
docs/decisions/2026-09-22-github-automation-closure.md; update SECURITY.md,
automation.json, the docs, the regenerated verdicts/explorer and evidence hashes.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Drop required_signatures from the target ruleset; gate .grype.yaml changes; fix stale gate docs

A measured agent-lab run (2026-09-23) blocked PRs with unsigned branch
commits under required_signatures even though GitHub signs the squash merge,
so the target main ruleset leaves the rule out as keep-but-compare until every
writer signs. supply-chain.yml now runs its grype gate when .grype.yaml
changes, with a test. Scorecard, dependency-review and grype docs no longer
call the new gates report-only, and the CodeQL default-setup row cites the
re-read settings GET.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Resolve the catalog-automation review findings after rebasing on main

- Rebase onto origin/main 8faca90 (#96, #99-#104, #106): take main's removal of
  docs/ecosystem/index.html, merge main's explorer build/attest/upload steps
  with the release job's digest outputs, and re-register manifest hashes
  with host_receipts.register_file.
- OSV inventory: add a reasoned "excluded" list for the #101 grype
  positive-control fixture; the coverage test accepts only listed,
  fixture-scoped exclusions with an evidence path and still fails on any
  unlisted tracked lockfile. osv-scanner 2.6.0 exits 0 on the 37 listed files.
- Target main ruleset: strict_required_status_checks_policy false (auto-merge
  without a merge queue would stall every open PR when main moves);
  required_signatures stays out; regression tests assert both.
- automation.json: gating lanes move to security_gate_lanes with boolean
  required_check/target_required_check; fresh CodeQL default-setup GET cited.
- foundation.json: restore ci-supply-chain lane gap text, replace stale
  automation.json line citations with JSON-path anchors at 92bb279;
  regenerate verdicts and the handbook section with build_verdicts.
- Handbook automation summary and closure record updated (mlx branch dropped
  after #99, fixture alerts 7-15 dismissed and #105 closed, security updates
  kept on, strict decision, gap-ledger mapping).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Align merge-queue and osv-scanner catalog text with the strict-off target; record #104 CodeQL triage

- automation.json merge-queue non-adoption no longer cites strict checks;
  it points at the strict-off decision (closure record section 10) with its
  overturn condition.
- osv-scanner selection says "required in the target ruleset once applied"
  and names the 37 listed lockfiles, 2 covered manifests and 1 fixture
  exclusion.
- Closure record section 2: the 10 first-analysis CodeQL alerts were
  resolved in #104, not left for owners.
- Hashes re-registered in manifests/evidence.json.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Keep Dependabot security PRs off the grype positive-control fixture

ignore: urllib3 on a pip entry scoped to the fixture directory (ignore applies to
security updates; exclude-paths does not). Clarify that osv-scanner becomes a
required check only after the target ruleset is applied.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Refresh evidence hashes after rebasing onto #95

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

* Fix the OSV SARIF path under bash -e; keep the zizmor write token away from the analyzer

shell: bash implies -e, so a findings exit ended the OSV step before the SARIF run
(reproduced; found by an independent-implementation comparison and the Codex
cross-family review). zizmor now runs read-only and a tool-free upload job holds
security-events: write. Tests cover both, plus OSV PackageOverrides and grype
review-by dates.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

---------

Co-authored-by: seathatflowsinourveins <[email protected]>
Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant