Skip to content

feat: ship Flow 1.20.1 with verified managed runtimes#40

Merged
abrichr merged 15 commits into
mainfrom
fix/bundle-flow-1.20.0-exact
Jul 24, 2026
Merged

feat: ship Flow 1.20.1 with verified managed runtimes#40
abrichr merged 15 commits into
mainfrom
fix/bundle-flow-1.20.0-exact

Conversation

@abrichr

@abrichr abrichr commented Jul 23, 2026

Copy link
Copy Markdown
Member

Summary

  • freeze the exact OpenAdapt Flow 1.20.1 governed runtime into every native installer
  • bind native recording to the published openadapt-capture 1.0.4 direct-stream contract
  • provision the separately licensed FFmpeg 8.1.2 runtime from OpenAdapt's attested four-platform release using exact URL, byte-count, SHA-256, archive, capability, and provenance checks
  • provision exact PyPI NumPy 2.4.2, RapidOCR 1.4.4, and OpenCV 5.0.0.93 wheels on first vision use, with signed-manifest-bound wheel inventories, safe extraction, exact cache admission, cross-process activation locking, required notices, retry UX, and no NumPy/OpenCV/RapidOCR binaries in the MIT installer
  • keep Flow help/version offline, configure Playwright's stable first-use browser cache, and surface managed runtime progress in onboarding
  • keep the Linux runner's unpinned system libgcc_s outside the installer and prove the supported distro supplies it through sidecar and installer lifecycle smoke tests
  • fail Desktop publication if the wheel, sdist, frozen sidecar, licenses, private/copyleft boundaries, or embedded runtime pins drift

Exact runtime contract

  • openadapt-flow==1.20.1
  • openadapt-capture>=1.0.4 (lock resolves exact 1.0.4 wheel/sdist hashes)
  • playwright==1.61.0
  • managed FFmpeg 8.1.2-r1
  • managed vision rapidocr-1.4.4-opencv-5.0.0.93-numpy-2.4.2-r3

Local validation

  • 434 Python tests passed
  • Ruff and release-consistency gates passed
  • production TypeScript/Vite build passed
  • Rust tests passed (12 passed, one explicit proof test ignored), with cargo fmt and strict cargo clippy green
  • wheel and sdist built and passed archive-boundary inspection
  • frozen sidecar built and passed full archive inventory, notice, Flow, and Playwright checks (112,835,632 bytes on macOS arm64 before NumPy externalization)
  • clean first-use managed-vision download, exact hash verification, signed-RECORD cache admission, notice installation, activation, warm reuse, and real Flow lint passed
  • published Capture 1.0.4 wheel SHA-256: a5e93317e054f5faef6dd88ce9a50878770b16cffca97e21d59e6c171b4c6808
  • published Capture 1.0.4 sdist SHA-256: 990b93ed81f58c55ae0b5ee2dd09bcf1714740e7d995768d119ca742fb2ce9fc

This conventional feat: change intentionally drives the approved v0.9.0 semantic release after the four-platform CI and post-merge gates pass.

@abrichr

abrichr commented Jul 23, 2026

Copy link
Copy Markdown
Member Author

Release hardening update pushed at a756c2d:

  • native recording is now fail-loud and transactional through startup, local registration, shutdown, metadata, and DB finalization
  • the installed Capture runtime contract is tested directly
  • the frozen sidecar now rejects GPL/AGPL/LGPL dependencies and requires a SHA-256-bound concrete license/NOTICE inventory

The PR is intentionally not mergeable until the consolidated Capture follow-up replaces oa-atomacos and pynput with permissive native platform backends and publishes the fixed Capture version. The new CI gates are expected to refuse Capture 1.0.1 rather than produce a noncompliant or false-success installer.

@abrichr
abrichr force-pushed the fix/bundle-flow-1.20.0-exact branch from 2b4150c to 0a469e3 Compare July 24, 2026 01:30
@abrichr abrichr changed the title feat: bundle OpenAdapt Flow 1.20.0 feat: ship Flow 1.20.1 with verified managed runtimes Jul 24, 2026
@abrichr
abrichr merged commit c7bcaa4 into main Jul 24, 2026
14 checks passed
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