Skip to content

chore: prepare OpenMed v2.3.0 - #3018

Merged
maziyarpanahi merged 7 commits into
masterfrom
release/openmed-230
Sep 4, 2026
Merged

maziyarpanahi merged 7 commits into
masterfrom
release/openmed-230

Conversation

@maziyarpanahi

@maziyarpanahi maziyarpanahi commented Sep 2, 2026 •

Copy link
Copy Markdown
Owner

Pull Request

Description

Prepare the complete OpenMed v2.3.0 release candidate from release/openmed-230 and make it ready to merge and tag.

  • Audit the full v2.2.0..f7ebc7eaeb81b0a76f5fd5784830a63895662578 range: 253 commits and 652 changed files; commit subjects reference 127 issue or pull-request identifiers.
  • Align all 19 inspected release surfaces on 2.3.0 / v2.3.0 and confirm that the tag and PyPI/npm versions remain unused.
  • Record the Python API inventory: 37,735 to 41,729 symbols, 3,994 additions, zero removals, narrowed signatures, or new deprecations. REST remains at 19 paths and 17 schemas.
  • Fix npm default-model loading and Transformers.js source-offset reconstruction while preserving v2.2 public numeric-offset contracts.
  • Keep optional NLTK installed and approve one seven-day release exception for unpatched CVE-2026-81726, scoped to the nltk package in uv.lock and expiring 2026-09-11. The exception cannot match another artifact or suppress a finding after upstream publishes a fixed version. OpenMed does not call the affected model-artifact APIs, and the service image does not contain NLTK.
  • Preserve the reviewed v2.3 Pages baselines and size ceilings. Final staging measures 449 files, 37,504,986 total bytes, 37,167,407 unique bytes, and 57,041 bytes of unique headroom.

Release state: READY TO TAG AFTER MERGE. PR head f7ebc7eaeb81b0a76f5fd5784830a63895662578 is mergeable, includes current master, and has 44 successful hosted checks, 3 expected conditional skips, zero failures, and zero pending checks.

After merge, pushing the immutable v2.3.0 tag triggers PyPI and npm publication, distribution provenance, the GitHub release and release SBOM, multi-architecture GHCR publication and follow-on signing, image SBOM generation, and Android release validation/JitPack availability. Pages deploys from the master merge. Maven Central is an optional Android path and will be skipped because its four signing/Sonatype secrets are not configured; the documented JitPack release is unaffected and the tag workflow does not fail for that skip.

The pypi and npm environments expose the expected secret names. The same package workflow's latest tag run, for v2.2.0 on 2026-08-21, completed all six build, verification, publication, evidence, and SBOM jobs successfully. Encrypted secret values cannot be read or pre-authenticated; their current validity is exercised by the real tag publication.

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality not to work as expected)
  • Documentation update
  • Code refactoring
  • Performance improvement
  • Test addition/improvement

Changes Made

  • Add local-first privacy, multimodal, clinical-evidence, trace, training, runtime, integration, deployment, and SDK capabilities accumulated for v2.3.0.
  • Repair npm model selection, token-offset alignment, Unicode span handling, and legacy TypeScript compatibility.
  • Harden release versioning, packaging, SBOM/provenance, lock, vulnerability, secret, license, API, documentation, container, Android, Apple-platform, and reproducibility gates.
  • Add the approved target-isolated NLTK waiver and a regression proving that it cannot suppress the same CVE in a different artifact.
  • Update the public v2.3.0 changelog, release notes, migration guide, installation surfaces, and deployment documentation.

Testing

  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • I have tested this change with different models/inputs

Validation on the final head:

  • Full local Python suite: 14,099 passed, 126 skipped, 20 warnings in 391.38 seconds.
  • Focused vulnerability-gate and publishing/provenance suite: 32 passed.
  • Hosted exact-head validation: 44 passed, 3 expected skips, 0 failed, 0 pending. This includes all seven Python matrix jobs, Nix, Android, iOS/watchOS/visionOS, amd64/arm64 container builds and smoke tests, Pages/browser validation, SBOM, and the image/lockfile vulnerability scan.
  • npm: clean install, zero-finding audit, ESM/CommonJS build, declarations, typecheck, 30 tests, and an 18-file package dry run.
  • Python artifacts: wheel and sdist rebuilt with Hatchling 1.31.0; both passed Twine and Core Metadata 2.4 checks.
  • API diff and migration completeness, strict MkDocs, repository/license policy, the 577-package lock, 185 Actions references, Ruff, pre-commit, and version preflight all passed.

The three hosted skips are intentional on a pull request: Pages deployment, multi-architecture container manifest publication, and the unchanged-path CJK/Indic job.

Documentation

  • I have updated the documentation accordingly
  • I have added docstrings to new functions/classes
  • I have updated the CHANGELOG.md

docs/release/v2.3.0.md and docs/migration/2.2-to-2.3.md contain the public release and migration guidance. The requested RELEASE_NOTES_v2.3.0.md remains an ignored local maintainer handoff and is not part of this PR.

Code Quality

  • I ran make format, make lint, and make format-check
  • For Swift/OpenMedKit changes, I ran make format-swift and make lint-swift
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings

Dependencies

  • I have not added any new dependencies
  • OR I have added new dependencies and they are justified because: ____

Existing dependency locks received reviewed security updates. Optional model weights and runtimes remain outside the package. Model registry pointers are unchanged; no model promotion is included.

Checklist

All final release content is committed and pushed. No merge, tag, registry publication, documentation deployment, container manifest publication, or model promotion has been performed by this PR-preparation task.

Related Issues

No issue is closed by this release-preparation PR.

Screenshots/Examples

The reviewed Linux Chromium 1440x900 light/dark documentation snapshots remain included. The final npm smoke uses synthetic text only and reports span offsets and labels without source content.

@maziyarpanahi maziyarpanahi self-assigned this Sep 2, 2026
@maziyarpanahi
maziyarpanahi merged commit b1e8707 into master Sep 4, 2026
47 checks passed

This branch was successfully deployed

2 active deployments
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