From 740d9b4fc5447321e1f3734ca0456ea0c94ff539 Mon Sep 17 00:00:00 2001 From: Martin Vogel Date: Tue, 28 Jul 2026 20:05:47 +0200 Subject: [PATCH] test(smoke): retire the Windows Phase 14 missing-executable requirement 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 --- tests/test_smoke_fixture_contract.sh | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/tests/test_smoke_fixture_contract.sh b/tests/test_smoke_fixture_contract.sh index 9b5ade76d..c4ba81094 100755 --- a/tests/test_smoke_fixture_contract.sh +++ b/tests/test_smoke_fixture_contract.sh @@ -334,9 +334,23 @@ require( and 'STALE_CMD="$UPDATE_DRIVER"' in smoke_test, "POSIX Phase 14 must refresh from positive running-image identity without probing config paths", ) -require( - 'STALE_CMD="$UPDATE_HOME/retired-install/codebase-memory-mcp.exe"' in smoke_test, - "Windows Phase 14 must test a literal missing executable, not an ambiguous extensionless command", +# This used to pin the retired path so Windows Phase 14 carried a config entry +# naming a missing executable. Two things retired that intent. The fixture now +# COPIES a binary to the retired path, so it stopped being missing regardless of +# what this string says -- the requirement was only ever checking the string, +# never the property. And Windows update is a handoff to install.ps1 now, so +# nothing rewrites this entry in-process the way the launcher-managed update +# did: an entry naming a foreign path simply survives to uninstall, which +# correctly refuses to remove a config entry owned by a DIFFERENT installation, +# and 14f would then be demanding the one thing uninstall must never do. +# +# The missing-executable classification lives on in named unit tests instead of +# here: cli_editor_mcp_preserves_unrecorded_posix_absolute_entries_without_probe +# and cli_editor_mcp_preserves_unsafe_windows_drive_probe (tests/test_cli.c), +# the latter covering the Windows missing-drive case specifically. +require( + 'STALE_CMD="$UPDATE_HOME/.local/bin/codebase-memory-mcp.exe"' in smoke_test, + "Windows Phase 14 must seed the MCP command at the binary uninstall will own", ) for changed_path in ( "install\\.(sh|ps1)",