What happened

When v5.4.2 introduced from tree_hygiene import is_duplicate_artifact_name in both auto_update.py and plugins/update.py, two existing tests in TestRuntimeUpdate broke. These tests create isolated temporary directories that simulate a packaged NEXO runtime, copying specific source files but not tree_hygiene.py. The result was a ModuleNotFoundError that caused the CI publish job to fail with 2 failed / 857 passed.

The fix (v5.4.3 + v5.4.4)

v5.4.3 added the missing tree_hygiene.py copy to both tests. v5.4.4 adds fake .venv/bin/python3 and .venv/bin/pip stubs to tests that run nexo update, so _ensure_runtime_venv finds a pre-existing venv and skips the slow creation that exceeded the 10-second subprocess timeout on GitHub Actions runners.

Impact

Test-only changes. No runtime behavior is modified. The publish workflow should now complete successfully, allowing npm and GitHub Release artifacts for the 5.4.x line to be created.