Skip to content

test(smoke): retire the Windows Phase 14 missing-executable requirement - #1321

Merged
DeusData merged 1 commit into
mainfrom
fix/smoke-fixture-contract-phase14
Jul 28, 2026
Merged

test(smoke): retire the Windows Phase 14 missing-executable requirement#1321
DeusData merged 1 commit into
mainfrom
fix/smoke-fixture-contract-phase14

Conversation

@DeusData

Copy link
Copy Markdown
Owner

Release run 30384603265 failed all 30 test jobs -- Windows, macOS and Linux
alike -- from a single stale contract requirement. test_smoke_fixture_contract.sh
runs as step zero of every test leg, so one violation reddens the whole matrix.

The contract pinned a literal string so Windows Phase 14 would carry an MCP entry
naming a missing executable. Because it matched only the STRING and never the
property, it kept passing after the property was gone -- twice over:

  • the fixture now copies a binary to the retired path (added with the
    launcher removal), so that path stopped being missing regardless of the string
  • Windows update is a handoff to install.ps1, so nothing rewrites the entry
    in-process the way the launcher-managed update did

An entry naming a foreign path therefore survives to uninstall, which correctly
refuses to remove a config entry owned by a different installation -- making
Phase 14f assert precisely the removal uninstall must never perform.

The requirement now pins the installed binary, which is what install.ps1
leaves a real Windows user holding.

No coverage is dropped. The missing-executable classification moves to named
unit tests rather than this fixture:
cli_editor_mcp_preserves_unrecorded_posix_absolute_entries_without_probe and
cli_editor_mcp_preserves_unsafe_windows_drive_probe (the latter covering the
Windows missing-drive case specifically).

Verification

All 10 shell contract tests scripts/test.sh runs pass locally:

test_build_dir_safety                 PASS   test_soak_daemon_recovery_contract  PASS
test_makefile_ts_runtime_dependencies PASS   test_ui_dev_proxy_security          PASS
test_parallel_harness_contract        PASS   test_venue_parity_contract          PASS
test_security_strings_allowlist       PASS   test_vm_worktree_manifest           PASS
test_smoke_fixture_contract           PASS   test_windows_bundle_contract        PASS

Root cause confirmed identical on a macOS job and a Linux job from the failed
run, not inferred from the Linux one alone.

The fixture contract pinned the literal string

    STALE_CMD="$UPDATE_HOME/retired-install/codebase-memory-mcp.exe"

so that Windows Phase 14 would carry an MCP entry naming a missing executable.
Two separate things retired that intent, and because the requirement only ever
matched the STRING it kept passing while the property it stood for was gone.

First, the fixture itself now copies a binary to the retired path (added with
the launcher removal), so that path stopped being missing no matter what this
string said.

Second, Windows update is a handoff to install.ps1. Nothing rewrites the entry
in-process the way the launcher-managed update did, so an entry naming a foreign
path just survives to uninstall -- which correctly refuses to remove a config
entry owned by a DIFFERENT installation. Phase 14f was then asserting that
uninstall performs exactly the removal it must never perform, and it failed for
that reason.

The requirement now pins the installed binary, which is what install.ps1 leaves
a real Windows user holding. The missing-executable classification is not
dropped, it is covered by named unit tests rather than by this fixture:
cli_editor_mcp_preserves_unrecorded_posix_absolute_entries_without_probe and
cli_editor_mcp_preserves_unsafe_windows_drive_probe, the latter covering the
Windows missing-drive case specifically.

This contract runs as step zero of every test leg, so the stale requirement
failed all 30 test jobs of release run 30384603265 -- on Windows, macOS and
Linux alike -- from one violation.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
@DeusData
DeusData merged commit 0802689 into main Jul 28, 2026
9 checks passed
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.

1 participant