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
Both test_installed_runtime_update_repairs_missing_public_contribution_module and test_packaged_update_reads_runtime_version_from_version_json now copy tree_hygiene.py from the real source directory into their isolated runtime directories, matching the pattern already used for runtime_home.py and auto_update.py.
Impact
This is a test-only change. 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.