Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
9fb367b
feat(torch): select release-compatible runtime defaults
MrScripty Sep 25, 2026
f2f20c9
feat(torch): add Windows and macOS runtime management
MrScripty Sep 25, 2026
9585bad
chore(release): refresh attribution inventory
MrScripty Sep 25, 2026
6a726ea
fix(torch): register release options RPC method
MrScripty Sep 25, 2026
12e8b2a
feat(torch): provision managed Python for upstream installs
MrScripty Sep 25, 2026
ce9170d
fix(torch): repair managed release preview
MrScripty Sep 25, 2026
0588ed4
docs(torch): record managed 2.14 install acceptance
MrScripty Sep 25, 2026
2af8742
feat(torch): add native managed runtime acceptance
MrScripty Sep 25, 2026
c3ab6f2
docs(torch): record local desktop build verification
MrScripty Sep 25, 2026
fdc909c
test(torch): cover managed Python fallback and native failures
MrScripty Sep 25, 2026
f4b5442
feat(torch): retain managed Python archive attribution
MrScripty Sep 26, 2026
6f3b2d5
docs(torch): retain cross-platform Python archive evidence
MrScripty Sep 26, 2026
205402c
test(torch): verify restart path and discovery timeout
MrScripty Sep 26, 2026
c4f812c
fix(ci): keep Python source LF on Windows
MrScripty Sep 26, 2026
a065813
fix(torch): repair Windows and macOS managed install paths
MrScripty Sep 26, 2026
e2d5293
test(torch): retain release scan failure details
MrScripty Sep 26, 2026
298688c
fix(torch): retain safe preview failure diagnostics
MrScripty Sep 26, 2026
9541735
fix(torch): serialize cross-process runtime metadata
MrScripty Sep 26, 2026
032045a
fix(torch): pin discovered wheel during resolution
MrScripty Sep 26, 2026
07f7e9f
fix(torch): honor bounded release retry delays
MrScripty Sep 26, 2026
66ccbfe
docs(torch): record cross-platform native acceptance
MrScripty Sep 26, 2026
319a609
fix(torch): tolerate brief metadata lock contention
MrScripty Sep 26, 2026
2104169
fix: validate managed Python release attribution
MrScripty Sep 26, 2026
57e5fb7
docs: record packaged Linux Torch acceptance
MrScripty Sep 26, 2026
7d82ec5
docs: retain current cross-platform Torch acceptance
MrScripty Sep 26, 2026
d778eeb
ci: run Build on temporary Torch review bases
MrScripty Sep 29, 2026
8063144
fix(torch): refresh installed options and retain bounded cleanup custody
MrScripty Sep 29, 2026
b690480
fix(torch-ui): preserve alternative Python selection and retry runtim…
MrScripty Sep 29, 2026
a5e0b1e
fix(torch-evidence): audit nested license references and correct qual…
MrScripty Sep 29, 2026
c64cdf9
fix(ci): disable persisted credentials in native Torch acceptance
MrScripty Sep 29, 2026
e5c0e96
test(torch): account for Windows environment key normalization
MrScripty Sep 29, 2026
f811369
fix(torch): address activation fixture and empty catalog review
MrScripty Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
# Attribution hashes must match native checkouts even with core.autocrlf=true.
*.py text eol=lf
rust/Cargo.lock text eol=lf
rust/**/Cargo.toml text eol=lf
pnpm-lock.yaml text eol=lf
electron/package.json text eol=lf
frontend/package.json text eol=lf
scripts/release/artifact-plan.json text eol=lf
scripts/release/licenses/managed-python-sources.json text eol=lf
scripts/release/torch-managed-python-acceptance.py text eol=lf
rust/crates/pumas-app-manager/src/version_manager/managed_python.rs text eol=lf
docs/plans/torch-cross-platform-runtime-management/reports/v2.14.0-*-cpu-rpc-restart-acceptance/runtime.json text eol=lf
docs/plans/torch-cross-platform-runtime-management/reports/managed-python-license-collection/*/managed-python-licenses/full-archive-manifest.json text eol=lf

# Preserve verbatim third-party legal bytes, including mixed line endings.
scripts/release/licenses/* -text -whitespace
docs/release-attribution/**/THIRD-PARTY-NOTICES.txt -text -whitespace
# Archive-captured CPython metadata and license texts are evidence and must remain verbatim.
docs/plans/torch-cross-platform-runtime-management/reports/managed-python-license-collection/**/managed-python-licenses/full-archive/** -text -whitespace
105 changes: 96 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ on:
branches: [main]
tags: ['v*']
pull_request:
branches: [main]
# Temporary review bases for the three-part Torch PR stack.
branches: [main, prep/torch-managed-foundation, prep/torch-install-flow]
workflow_dispatch:

permissions:
Expand Down Expand Up @@ -88,7 +89,7 @@ jobs:
include:
- os: ubuntu-24.04
headless_os: linux
- os: macos-14
- os: macos-15
headless_os: macos
- os: windows-2025
headless_os: windows
Expand Down Expand Up @@ -164,12 +165,24 @@ jobs:
if-no-files-found: error

torch-quality:
name: Torch source QA
name: Torch native QA (${{ matrix.os }})
needs: lint-workflows
runs-on: ubuntu-24.04
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, windows-2025, macos-15]
runs-on: ${{ matrix.os }}
timeout-minutes: 60
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install repository Rust toolchain
run: rustup toolchain install --no-self-update
- uses: Swatinem/rust-cache@v2
with:
workspaces: rust -> target
key: torch-native-${{ runner.os }}
- uses: actions/setup-python@v6
with:
python-version-file: .python-version
Expand All @@ -178,8 +191,82 @@ jobs:
- run: python -m pip install -r torch-server/requirements-dev.txt
- run: python -m ruff check torch-server scripts/release
- run: python -m ruff format --check torch-server scripts/release
# Unit fixtures do not claim GPU inference or a shipped Torch runtime.
# Fixtures validate tags and resolver behavior; the native tests below
# validate host APIs without claiming GPU inference or model support.
- run: python -m unittest discover -s torch-server/tests
- uses: actions/setup-python@v6
with:
python-version: '3.14'
- name: Self-test native Torch acceptance script
run: python scripts/release/torch-managed-python-acceptance.py --self-test
- name: Test native Torch wheel filtering
run: cargo test --locked --manifest-path rust/Cargo.toml -p pumas-app-manager torch_alternatives
- name: Test native managed Python candidate selection
run: cargo test --locked --manifest-path rust/Cargo.toml -p pumas-app-manager version_manager::managed_python::tests
- name: Test native Torch preview provider paths
if: runner.os == 'Linux'
run: cargo test --locked --manifest-path rust/Cargo.toml -p pumas-app-manager version_manager::torch_preview::tests
- name: Test native Torch preview Python fallback selection
if: runner.os == 'Windows' || runner.os == 'macOS'
shell: pwsh
run: |
$testName = 'auto_python_fallback_requires_a_definite_unsupported_attempt'
$testList = @(cargo test --locked --manifest-path rust/Cargo.toml -p pumas-app-manager $testName -- --list)
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
if (@($testList | Where-Object { $_ -match '::auto_python_fallback_requires_a_definite_unsupported_attempt: test$' }).Count -eq 0) {
throw "No tests matched $testName"
}
cargo test --locked --manifest-path rust/Cargo.toml -p pumas-app-manager $testName
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
- name: Test Windows Torch activation fixture
if: runner.os == 'Windows'
run: cargo test --locked --manifest-path rust/Cargo.toml -p pumas-app-manager restart_falls_back_from_invalid_active_torch_to_verified_default
- name: Test Windows locked-stage cleanup ownership
if: runner.os == 'Windows'
run: cargo test --locked --manifest-path rust/Cargo.toml -p pumas-app-manager locked_stage_stays_owned
- name: Test native managed Python paths
run: cargo test --locked --manifest-path rust/Cargo.toml -p pumas-library test_venv_python_path
- name: Test Unix managed process-group ownership
if: runner.os != 'Windows'
run: cargo test --locked --manifest-path rust/Cargo.toml -p pumas-library platform::managed_child
- name: Test Windows managed Job ownership
if: runner.os == 'Windows'
run: cargo test --locked --manifest-path rust/Cargo.toml -p pumas-library platform::managed_child

torch-native-e2e:
name: Torch native RPC E2E (${{ matrix.os }})
needs: lint-workflows
if: github.event_name == 'workflow_dispatch' || (github.ref_type == 'tag' && startsWith(github.ref_name, 'v'))
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, windows-2025, macos-15]
runs-on: ${{ matrix.os }}
timeout-minutes: 120
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install repository Rust toolchain
run: rustup toolchain install --no-self-update
- uses: Swatinem/rust-cache@v2
with:
workspaces: rust -> target
key: torch-native-e2e-${{ runner.os }}
- uses: actions/setup-python@v6
with:
python-version: '3.14'
- name: Build native RPC for Torch acceptance
run: cargo build --locked --manifest-path rust/Cargo.toml -p pumas-rpc
- name: Accept v2.14 CPU/Core via native RPC (${{ runner.os }})
run: python scripts/release/torch-managed-python-acceptance.py rust/target/debug --evidence-dir torch-native-evidence
- name: Upload native Torch acceptance evidence
if: always()
uses: actions/upload-artifact@v7.0.1
with:
name: torch-native-${{ runner.os }}
path: torch-native-evidence/
if-no-files-found: ignore

build-rust:
name: Rust release (${{ matrix.os }})
Expand All @@ -188,7 +275,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, macos-14]
os: [ubuntu-24.04, macos-15]
runs-on: ${{ matrix.os }}
timeout-minutes: 120
steps:
Expand Down Expand Up @@ -228,7 +315,7 @@ jobs:
include:
- os: ubuntu-24.04
platform: linux
- os: macos-14
- os: macos-15
platform: mac
runs-on: ${{ matrix.os }}
timeout-minutes: 30
Expand Down Expand Up @@ -294,7 +381,7 @@ jobs:
platform: linux
headless: headless-linux
check: linux-no-inference
- os: macos-14
- os: macos-15
platform: mac
headless: headless-macos
check: mac-no-inference
Expand Down
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ repos:
rev: v4.5.0
hooks:
- id: trailing-whitespace
# Preserve verbatim upstream legal texts and their recorded hashes.
exclude: ^(scripts/release/licenses/|docs/release-attribution/)
# Preserve verbatim upstream legal texts and hash-pinned archive evidence.
exclude: ^(scripts/release/licenses/|docs/release-attribution/|docs/plans/torch-cross-platform-runtime-management/reports/managed-python-license-collection/.*/managed-python-licenses/full-archive/)
- id: end-of-file-fixer
exclude: ^(scripts/release/licenses/|docs/release-attribution/)
exclude: ^(scripts/release/licenses/|docs/release-attribution/|docs/plans/torch-cross-platform-runtime-management/reports/managed-python-license-collection/.*/managed-python-licenses/full-archive/)
- id: check-yaml
- id: check-merge-conflict
- id: check-json
Expand Down
Loading
Loading