Repository navigation
ui-sdk: clean owned-prune fixture roots when source transformation refuses #2466
Description
Context
During #2457 qualification for PR #2464, the unchanged real tick test left one empty temporary directory in each of the initial anchor-refusal and mutation runs. At corrected commit f8c97e1, packages/ui-sdk/tests/owned-prune-variant.test.ts:32 starts the tick test, line 33 creates its root, and line 34 calls ownedPruneVariant before the cleanup try/finally. An expected transformer refusal therefore exits before cleanup is established. The two exact empty roots were recorded, independently rechecked and removed by their owner. Successful-path cleanup is unchanged.
Scope
Make the tick fixture own cleanup immediately after temporary-root allocation, including source transformation, generated-file setup and global descriptor replacement. Audit other setup-before-finally paths in this test file. Keep this correction separate from the already-qualified one-line source-anchor update.
Out of scope
No production prune behavior, admission/execution policy, timeout, source-anchor tolerance or proof selection change. This small test-fixture follow-up is not an additional blocker for #2457 or PR #2464; the separate #2465 qualification blocker remains independent.
Acceptance criteria
- A deliberately refused real transformer after fixture allocation leaves no owned temporary root and propagates the original refusal.
- Setup and later execution failures restore any replaced console descriptor and clean only resources allocated by that fixture.
- Existing fixed-anchor refusal, syntax, actual tick joining and original/variant operation-order assertions remain intact.
- Audit the test file for the same early-setup cleanup gap and document the result.
Verification
Use a named failing-first control that reaches the real allocation and transformer refusal. Show it fails because the owned root survives, then passes with cleanup. Preserve the original successful three-test behavior and validate restoration of full property descriptors. Do not enumerate and delete unrelated temporary roots. Run required preflight before publication.
Contract impact
Test-fixture ownership only; no public API or runtime contract change. Found during #1849 / #2457 work; no release milestone committed for this follow-up.
2026-10-21 triage at main e2deae1f3c4e18affacc0da45d6202b0ca4378fc: verified the real tick fixture allocates its root and calls ownedPruneVariant before its cleanup try/finally (test("real variant tick, packages/ui-sdk/tests/owned-prune-variant.test.ts:32-45); the later fixture also replaces the console descriptor before its try/finally. These are the existing acceptance criteria’s setup/cleanup boundaries, not a new production defect. The scope, exclusions, causal failing-first control and complete descriptor restoration requirements form a ready brief. Priority p2 sorts wanted, unscheduled fixture work. Preserve the existing native #2457 parent and its separately owned qualification/diagnostic work; this independent cleanup task does not require that parent to close. No runtime execution or release commitment is claimed.
Activity