Repository navigation
test(ui-kit): retain native ghost handoff failure evidence - #1984
Conversation
Complete actual-main qualification — 2026-10-15Automatic main run 38744780346, attempt 1, passes all 13 selected jobs, including the aggregate. All executed job checkout logs identify squash All 16 policy cases, all selected ActionCard/browser checks, both layout shards and original ten-minute native endurance pass, alongside all unit shards, strict verification, runtime and captures. The original investigation remains open: this is verified diagnostic delivery, not a causal repair. PR and issue retain milestone 0.44.0, and the invocation’s claim is released. Executed CI job cost is 8,699 seconds, excluding separate workflows and queue. No failed job was retried, no selected job was canceled, and no assertion, deadline, guard or coverage cell was weakened.
|
Refs #1946
What changed
A failed ghost handoff opacity assertion now emits a bounded receipt containing the original sampled values, selected layer identities, both frame widths, arrival/removal times and native CSS animation state. The original assertion error remains authoritative if collecting that receipt also fails.
Why this shape
The original ActionCard failure retained opacity 1 but no native animation state. Reading styles or animation objects before its oracle could start pending animations and hide the boundary. Extra style/animation reads therefore occur only after an assertion fails. Captures retain at most two frames, 32 layers per frame and four animations per layer, with explicit truncation flags. All 17 original assertion sites, native clicks, 600ms CSS duration, simultaneous intermediate-opacity checks, geometry and 700ms disappearance bounds remain.
Proof
Candidate
78f9f07fa45265abb84b3c3a91f32e21d78986ad, based on200efc8d4e5e2ef6bd7c5385440a9289bd14c774. Committed-headbun run check:pr --base origin/mainpasses at origin/main82c1f211ee2ebabf44ed819e4a6bae47c93fca51: all local gates and 231 tests / 2,302 expectations across 14 files. The sole newer main commit is the independent #1977 index-release namespace fixture. Strict repositorytsc --noEmitpasses with an explicit 4GiB compiler allowance. No consumer change or changeset.Four focused invocations use the pinned offline Playwright image, ordinary UID, readonly locked fonts and unchanged Storybook input, projects and guards:
The paused control fails the original
expected 1 to be less than 1assertion in each theme. Its independent log checker requires both receipts, original outgoing 1/incoming 0, selected layer presence, both 320/720px frames, ten captured layers per width and actual ghost-in/out animations paused at time 0 with duration 600ms. Omitting the diagnostic makes that checker failExpected two failure receipts; received 0. A deliberate capture exception still exposes the original opacity assertion, not the diagnostic error. Restoration emits no failure receipt. All source/CSS mutations are restored; the committed helper preserves the exact 17 expectation lines. The four commands cost 43.68s; this is validation cost, not a performance improvement or attribution of cold/warm runner differences.Separately, one exact-historical-checkout diagnostic at
884d9cad35e0be9126c41beeb3f3f5a7a63d04ecretains the complete original 218-file shard and matches every original per-project file order. It passes 4,567 tests / four existing skips, with both ActionCard themes showing native intermediate animation progress and removal within 606ms. This historical instrumented run costs 467.12s command / 366.64 CPU-seconds / 6,821,560KiB peak process RSS. Its low-interference trace does not reproduce the original opacity-1 state, prove a cause or qualify the new candidate. It is not a green retry offered as a repair.Dependency provenance is explicit: the initial shared-cache install inherited unrelated Vitest diagnostics, detected before browser execution. Those dependencies were discarded; all actual native commands use fresh private-cache copyfile dependencies, with clean installed Vitest chunk SHA-256
a236001d048380e2c67d05423fc9ea3f26b07ee019ba8d6e622082f29d49102e. Discarded setup costs remain recorded separately. Measurements share the session's lease, while unrelated host activity remains uncontrolled; process RSS is not aggregate container memory.Complete hosted qualification — 2026-10-15
Automatic ready-PR run 38740639468, attempt 1, passes all 13 selected jobs, including the independently validating aggregate. Packaging is intentionally unselected. The successful contract gate is separate; opening/label events superseded earlier admission runs without retrying a failed test.
Every executed job log identifies checkout
34ae6aa8e50c5f77d8ac9cb75eb91ac9ee5753e9, parents main82c1f211ee2ebabf44ed819e4a6bae47c93fca51and head78f9f07fa45265abb84b3c3a91f32e21d78986ad, tree97b5dd2d1c6c7bfbc3659644af8db714ce1c2956. Immutable API and fetched Git agree.Checklist
Anything left open
#1946 remains open with its historical cause unresolved. This diagnostic does not repair the original stalled opacity or remove #1943's qualification dependency. Complete selected hosted proof for this diagnostic candidate passed as recorded above. No animation, elapsed-budget, geometry or theme/width guarantee is weakened.
Pre-merge base assessment
Live main advanced after qualification to
e75f9af2ee058b3e43059d92daf78064db467fe2through #1981's Claude terminal-cancellation correction. Its nine changed paths do not overlap this diagnostic. The policy fixture supplies its own backend, and the ghost Storybook helper does not execute the Claude turn runner; no changed adapter code is used by these diagnostic boundaries. A clean prospective merge was verified. The older passing PR run retains its actual base/tree above and is not relabelled as proof of the newer combined tree. Automatic main-push proof will separately verify the landed combination, including the new backend code.