Repository navigation
fix(tests): repair v0.32.0 release validation contracts - #3081
Merged
Daniel Meppiel (danielmeppiel) merged 1 commit intoSep 25, 2026
Merged
Conversation
Assert plugin removal and retained skill state instead of obsolete cleanup prose. Allow a finite 300s live marker collection budget on contended release runners and pin fail-closed timeout/environment behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Daniel Meppiel (danielmeppiel)
requested a review
from Sergio Sisternes (sergio-sisternes-epam)
as a code owner
September 25, 2026 16:37
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Exclude shared retained-skill paths from the plugin-only removal assertion.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 1
Open (1)
What changed in this PR
Test-only repair for plugin lifecycle validation and Windows compatibility-gate collection.
Changes:
- Adds filesystem and lockfile cleanup assertions.
- Adds bounded, fail-closed collection timeout coverage.
- Documents the revised test contracts.
| File | Summary |
|---|---|
tests/unit/test_windows_compat_gate_workflow.py |
Adds bounded timeout and environment validation. |
tests/integration/test_plugin_e2e.py |
Strengthens plugin cleanup and retained-skill checks. |
docs/src/content/docs/contributing/integration-testing.md |
Documents updated test contracts. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Daniel Meppiel (danielmeppiel)
deleted the
danielmeppiel-release-ci-blockers
branch
September 25, 2026 16:57
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

fix(tests): repair v0.32.0 release validation contracts
TL;DR
Repair the two test contracts that blocked the unpublished v0.32.0 release after #3080.
Plugin uninstall now checks removed files/lock ownership and the unchanged retained skill instead of obsolete cleanup wording.
The live Windows-marker collection check gets a finite 300-second budget with explicit environment and fail-closed timeout coverage.
Important
Test-only release repair: no runtime, workflow, version, dependency, README, or changelog changes.
This PR does not merge, move the v0.32.0 tag, or publish.
Protected-branch review, required checks, and merge queue still apply.
Problem (WHY)
Cleaned upandintegratedwhile actual cleanup reportedCleaned 2 stale files. Linux x64 was cancelled by matrix fail-fast, not a separately confirmed assertion failure.-m windows_compatdeselects only after importing and collecting both roots. A small selected family does not imply a small collection workload.The scope follows the observed failures rather than changing production behavior to fit a test.
Validation is execution-backed, following the Agent Skills instruction to
"do the work, run a validator (a script, a reference checklist, or a self-check), fix any issues, and repeat until validation passes."
Approach (WHAT)
Implementation (HOW)
tests/integration/test_plugin_e2e.pydeps treesuccess.tests/unit/test_windows_compat_gate_workflow.pyTimeoutExpired.docs/src/content/docs/contributing/integration-testing.mdDiagrams
Omitted under the template's omission provision: these are independent test-contract repairs, with no runtime architecture or workflow-topology change.
Trade-offs
Benefits
SKILL.md, other deployed file bytes, and dependency entry stay unchanged.Validation
Local validation passed; hosted PR/release checks are not claimed green.
All commands used the editable 0.32.0 checkout and its locked dependencies.
Local dependency setup used the ambient Microsoft proxy without committing proxy configuration.
UV_NO_SYNC=1prevented lockfile rewrites.Collection evidence and targeted results
Before the change, the entire Windows-gate contract file:
Its nested collection call took 30.36 seconds cold.
The exact helper on a warm cache:
A separate cProfile collection imported 1,156 test modules:
UV_NO_SYNC=1 uv run --extra dev pytest -p no:cacheprovider -q tests/unit/test_windows_compat_gate_workflow.py tests/integration/test_plugin_e2e.py::TestPluginHeroScenarios::test_local_plugin_uninstall_after_sequential_skill_install_cleans_deployed_files --durations=5UV_NO_SYNC=1 uv run --extra dev pytest -p no:cacheprovider -q tests/integration/test_plugin_e2e.py -m 'not requires_e2e_mode and not requires_network_integration' --durations=5The skipped cases are the existing network opt-in class; no skip was added.
UV_NO_SYNC=1 uv run --extra dev pytest -p no:cacheprovider -q tests/unit/test_windows_compat_gate_workflow.py -n 4 --dist worksteal --durations=3Full lint, strict test-quality ratchets, and scope checks
After fetching and merging
origin/main, the canonical lint chain usedUV_NO_SYNC=1:Output excerpts:
The architecture-boundary script exited 0 without output.
The remaining YAML I/O, 2100-line, and portable-path guards also passed using Python equivalents of the CI grep/awk predicates because ripgrep is unavailable in the local shell.
UV_NO_SYNC=1 uv run --frozen python scripts/check_test_assertions.pyandUV_NO_SYNC=1 uv run --frozen python scripts/check_exact_test_duplicates.py:git diff --checkandgit diff --exit-code origin/main -- uv.lock pyproject.toml CHANGELOG.md README.mdexited 0.The docs-impact classifier returned schema-valid
no_change, high confidence, at deterministic L0: only tests and contributor documentation changed.Scenario Evidence
tests/integration/test_plugin_e2e.py::TestPluginHeroScenarios::test_local_plugin_uninstall_after_sequential_skill_install_cleans_deployed_files[standalone][plugin-skill];TestPluginNetworkE2E::test_lockfile_preserved_on_sequential_installretains hosted coverage (regression contract for run 36156463741).tests/unit/test_windows_compat_gate_workflow.py::test_windows_compat_gate_marker_selects_nonempty_subsettests/unit/test_windows_compat_gate_workflow.py::test_nested_collection_preserves_environment_and_bounded_timeoutand::test_nested_collection_timeout_fails_closedHow to test
UV_NO_SYNC=1when dependencies are already installed.uv.lockdiff.Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com