Skip to content

Run workflow tooling through Python - #303

Merged
Eli Pinkerton (wallstop) merged 2 commits into
refactor/python-bridge-contractsfrom
refactor/python-release-workflow
Oct 19, 2026
Merged

Eli Pinkerton (wallstop) merged 2 commits into
refactor/python-bridge-contractsfrom
refactor/python-release-workflow

Conversation

@wallstop

@wallstop Eli Pinkerton (wallstop) commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

DISCLOSURE: LLM-GENERATED TEXT

Why: Release orchestration still requires reading substantial inline Bash.

What:

  • Move release control flow into typed Python through uv.
  • Preserve validation order, immutable tags, dry-run guards, and reruns.
  • Exercise orchestration with offline fixtures and mocked remote writes.
  • Run documentation builds through uv.

Fixes #171.

Type of Change

  • Refactor (code change that neither fixes a bug nor adds a feature)

Checklist

  • I have added tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • My changes do not introduce breaking changes, or breaking changes are documented

Note

Medium Risk
Release automation still performs git pushes, tagging, npm trusted publishing, and GitHub Releases; behavior is intended to be equivalent but any orchestration bug could block or mishandle a release.

Overview
Moves release and docs CI orchestration from large inline Bash blocks into scripts/release/workflow.py, invoked via uv run --no-project from GitHub Actions.

Docs workflow drops pip caching, adds astral-sh/setup-uv, and builds with uv run … build_docs.py --installer uv.

Release workflow replaces shell for prepare/publish (branch guards, version bump outputs, tree validation, git push/PR, tag resolution, npm/GitHub publish, reruns) with workflow.py subcommands (prepare, validate-tree, commit-push, resolve, publish-npm, etc.). Existing safety ordering (identity before push, artifacts before npm, immutable tags, dry-run) is preserved in Python.

Adds offline driver tests (test_release_workflow_driver.py) and updates workflow contract tests to assert on the new entrypoints; harness_scope.py maps the new script to those suites.

Reviewed by Cursor Bugbot for commit e09f531. Bugbot is set up for automated code reviews on this repo. Configure here.

The remaining release control flow lived in inline Bash despite the Python tooling migration. Move it to a typed uv entry point while preserving source resolution, immutable tags, validation order, dry-run guards, and idempotent npm/GitHub publication. Keep retained tooling usable when recovering older tags. Route the docs build through uv as well.

Offline contracts exercise command failures, exact source selection, branch/PR/tag reruns, checksum generation, and mocked publication. The fixture release chain uses the new preparation and verification entry points. Python 3.9 contracts, strict typing, the strict docs build, and all 17 local gate steps pass. Unity remains 395/395 EditMode and 15/15 PlayMode through the Python bridge; this layer changes no Unity sources. No release operation was dispatched or published.

Fixes #171 after the preceding native stack migration layers.
@wallstop
Eli Pinkerton (wallstop) added this pull request to stack #297 October 18, 2026 21:43
Windows CI exposed a cp1252 child stdout failure even though the runner decodes UTF-8. Explicitly select UTF-8 for Python child output and exercise the regression with an inherited cp1252 setting. Compare artifact arguments using the native path format in the mocked publication contract.

The explicit cp1252 regression fails before and passes after the repair on Linux. All ten Python 3.9 driver cases, strict pyright, and the changed-file fast check pass. Refs #171 and PR #303.
@wallstop
Eli Pinkerton (wallstop) merged commit cc4b96b into main Oct 19, 2026
5 checks passed
@wallstop
Eli Pinkerton (wallstop) deleted the refactor/python-release-workflow branch October 19, 2026 02:16
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.

chore: Migrate all scripts (js, ps1, bash, batch, etc) to typed python via uv

1 participant