Skip to content

ui-sdk: clean owned-prune fixture roots when source transformation refuses #2466

Open

Description

@schlessera

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyContext and acceptance criteria are complete enough for an agent to take this unattended.area: ui-sdkWire protocol, runtime schemas, the server and client SDK surfaces.priority: p2Wanted, not scheduled. Pulled in when a milestone has room.type: testCoverage, harness or proof work with no behaviour change.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions