v0.3.62 — Safe consumer package rollout
Why this matters
A package release can be correct while a multi-project rollout still gives a
false sense of coverage. A missed project, an unproven package pin, or a Unity
process left running after a timeout can turn a partial rollout into risky
manual cleanup.
What changed
This release adds scripts/testing/run_consumer_rollout.py, a fail-closed
helper for moving several Unity projects to one published Git package tag. It:
- compares the expected projects with an ignore-independent manifest scan;
- freezes clean and dirty package files before changing anything;
- checks Unity, licensing, write access, running processes, and cleanup
ownership; - resolves and compiles one canary before updating other clean projects;
- records each project in an atomic, resumable ledger; and
- lets a root operator clean up a timed-out process only after rechecking its
process identifier, project, and log.
What this gives developers
Release operators get one repeatable path that protects in-progress package
edits, proves the published package in a canary first, stops on unexpected
conditions, and leaves compact evidence that can be reviewed or resumed.
Validation
- Focused rollout and timeout-contract tests: 23/23 passed.
- Full host suite: 966/966 passed, with 14 expected platform skips.
- Public documentation UI suite: 42/42 browser checks passed.
- Unity
2022.3.67f2and6000.0.58f2: each passed package Edit Mode
91/91, Play Mode 5/5, interactive acceptance 9/9, refresh
contract 2/2, compile contract 2/2, and batch compilation. Both
editors closed with no owned Unity process left for cleanup. - Release-version consistency, documentation freshness, and public-release
safety checks passed on the release tree.
Known limitations
- The helper proves Git package resolution and script compilation; it does not
replace each game's Edit Mode, Play Mode, user-interface, or product tests. - Dirty package manifests or locks are skipped. One ledger covers one selected
Unity version. A licensing or global-process blocker stops before mutation. - The hosted
Unity Package CIcontinuous integration workflow remains
explicitly waived because its runners do not have Unity license credentials.
The local Unity results above are the package proof for this release; there
is no CI-recorded Unity test result for the release commit.