Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

ui-kit: identify the stalled intermediate ActionCard handoff opacity

Open
#1,946 18 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
20/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Active
Tech stack
css, github-actions, playwright, storybook, typescript

Research direction

Start with the failing playHandoff assertion at packages/ui-kit/stories/_ghost.tsx:99 and the LoadingToReady story in packages/ui-kit/stories/decisions/ActionCard.stories.tsx. Then check the .bk-ghost-out animation and @keyframes ghost-out in packages/ui-kit/src/tokens.css. The task is to capture per-frame animation identity, play state and computed opacity in the native browser run, not to change the assertion. Done means the cause is established from that trace, or the investigation is recorded as bounded and unresolved.

Written by the indexing model from the issue text.

Description

area: ui-kit needs: repro priority: p2 type: test

Out of scope

Changing the approved 600 ms handoff or 700 ms disappearance cap; weakening the strict intermediate-opacity or geometry assertions; skipping themes, widths or native browser proof; retrying an unchanged failing job to obtain green; changing the unrelated core conformance clocks in #1942.

Context

Part of #736, as an independent native verification-boundary investigation. Found while qualifying #1942 / PR #1943; outside #1849's test-cost implementation scope.

Automatic ready-PR CI 38638401326, attempt 1, browser shard 1 job 116107668394 failed storybook-light (chromium) → ActionCard → Loading To Ready. playHandoff observed outgoing opacity 1 and failed expect(out).toBeLessThan(1) at packages/ui-kit/stories/_ghost.tsx:99. The preceding greater-than-zero assertion passed. Incoming-opacity assertions and final disappearance/budget assertions were not reached. The shard recorded 4,566 passed / 1 failed / 4 existing skips, 218 files, 489.26 seconds Vitest duration.

Actual checkout 884d9cad35e0be9126c41beeb3f3f5a7a63d04ec, parents main 58f572c4d2f86fe55d76ff053fb315b83e549158 and head 1d3867e0dbbcc54db5f42e60a4e26d1e958cd557, tree 6184a08b338c8ad7caebfc01fce04ce21436f841. Job checkout log, artifact manifest, immutable GitHub commit API and local Git agree. All 346 browser inventory entries resolve to 206 source files with identical blobs between the base and candidate. Browser/product/configuration/lock inputs are unchanged; the PR changes only core test files and the wait guide, and its clock helper executes in the separate Bun unit job.

The source-bound native flow is:

  • LoadingToReady (packages/ui-kit/stories/decisions/ActionCard.stories.tsx:246-253) uses the shared 320/720 px Handoff and real ActionCard.
  • playHandoff (packages/ui-kit/stories/_ghost.tsx:47-120) observes committed arrival/removal, activates Land through native input, verifies frame geometry, then sleeps 300 ms before reading the first matching outgoing/incoming computed opacity at 95–101.
  • .bk-ghost-out (packages/ui-kit/src/tokens.css:1351-1355) uses the real 600 ms CSS animation. @keyframes ghost-out at1366–1373 goes from opacity 1 to 0.

The failed receipt does not retain actual animation objects, start/current time, play state, the sampled layer/width, or a frame trace. Artifact 11928734175 contains the checkout manifest and screenshots for other cases, not an ActionCard failure image. It cannot establish why the sampled outgoing opacity remained 1. No product, scheduler, paused-animation or timing cause is selected.

Closed #1179 corrected the final elapsed-time origin and retained this mid-handoff oracle; this is a different assertion. #1915 concerns an empty destination-animation set in another fixture, and #1938 concerns navigation paint. Shared animation terminology does not establish a common cause.

Scope

Capture and classify the native ActionCard intermediate-opacity boundary in the original pinned browser scenario before selecting a product or fixture correction. Inspect other shared playHandoff callers for the same confirmed bug class once a cause is established.

Acceptance criteria

  • Preserve the failed run/job/checkout, assertion and artifact limits.
  • Capture committed arrival, actual outgoing/incoming CSS animation identity, timeline/play state/current time, computed opacity and sample timing for each 320/720 px frame; retain the original native clicks and stylesheet.
  • Establish a controlled source-bound cause or record a bounded unresolved investigation. An isolated passing control is not a repair.
  • Any correction preserves both themes, both widths, real 600 ms animation, simultaneous intermediate layers with 0 < opacity < 1, frame/after-content geometry and the 700 ms disappearance guarantee.
  • A deliberate frozen/non-progressing or wrong-opacity animation must still fail the intermediate oracle; genuine over-budget and shifted-layout mutations must remain observable. Restore mutations and complete focused plus selected current-candidate hosted proof before claiming a repair.

Verification

Use the pinned offline Playwright image and real Storybook ActionCard case, including the original complete shard order where needed. Keep offline guards, actual native animation and all assertions. Do not replace this guarantee with a happy-dom clock test or raise a timeout to hide the failure.

Contract impact

No change selected. A test-only correction needs no consumer changeset; a confirmed product correction needs its own compatibility/release assessment.

Readiness gap

needs: repro: the hosted failure is confirmed, but actual animation/sample state and a causal control are missing. The next evidence is the bounded native trace above, not another unchanged green run.

Resumed investigation and diagnostic slice — 2026-10-15

2026-10-15 bounded original-checkout/full-shard diagnostic: no ActionCard opacity-1 recurrence observed. This is diagnostic progress, not a repair or current-candidate qualification.

The run uses the exact failed checkout 884d9cad35e0be9126c41beeb3f3f5a7a63d04ec (tree 6184a08b338c8ad7caebfc01fce04ce21436f841). The artifact's 346-entry combined browser/layout inventory contains 296 entries selected by the original browser command; the unchanged partitioner reproduces its 218/78 split exactly. Actual runtime selection is the original 218 entries, and each of all seven projects' sorted file orders matches its complete original hosted log order. Cross-project interleaving and host scheduling are not reproduced by per-project order equality.

One bounded command, unchanged native guards/input/deadlines: node scripts/visual.mjs --inside --shard=1/2, pinned mcr.microsoft.com/playwright:v1.63.0-noble (digest sha256:eff16c30e6f3f4af0a03fa4b706120d5e9b0891c344a27d64559aff5900a4a27), ordinary UID, network none, host IPC and readonly locked font cache. The shared measurement lease excludes this session's competing measurements, not unrelated host work.

Temporary diagnostics preserve all 17 original expect call sites and original style reads. Before the original opacity gate, they record only DOM identities, commit/removal timestamps and native animation events; they do not continuously sample styles, request animation frames, pause, seek, replace timers, or change CSS. After the original outgoing/incoming values have been read, one snapshot captures all matching layers in document order at both widths, computed opacity and actual CSSAnimation name/start/current time/play state/pending/timing. This extra snapshot took 0.8/0.9ms for ActionCard; diagnostics can still perturb execution and do not reconstruct the missing historical state.

ActionCard observations:

Theme Original outgoing / incoming opacity Native currentTime Removal after commit (both widths)
Dark 0.197472 / 0.802528 300.075ms 605.9ms
Light 0.197489 / 0.802511 300.065ms 604.8ms

The original sample occurs 306.9ms after Land returns in each theme. All ten matching layers per width agree on the same native progress, with ghost-in / ghost-out running and nonpending, rate 1 and 600ms duration. Original geometry and strict intermediate-opacity assertions pass, as do both 700ms disappearance checks. The trace includes actual selected-layer identities, arrival and animationstart events, and document/performance timelines. The complete shard passes 218 files / 4,567 cases with the same four existing skips, exit 0. Vitest reports 464.01s. The complete inside-container command costs 467.12s wall / 366.64 CPU-seconds / 6,821,560KiB peak process RSS. GNU time is process-tree accounting, not aggregate container memory. The 900s outer bound was not reached. Temporary diagnostic source was then restored byte-for-byte; no additional restored-runtime run is claimed.

Dependency provenance: the first shared-cache install inherited an unrelated REPRO1973 instrumentation patch in Vitest 4.1.11. It was detected before any browser execution. Its install/build cost is retained as unqualified preparation. All diagnostic-checkout dependency directories were replaced using a fresh empty private cache and copyfile backend; the clean installed Vitest chunk is SHA-256 a236001d048380e2c67d05423fc9ea3f26b07ee019ba8d6e622082f29d49102e, link count 1, without that marker. A new complete build followed. No shared dependency or user checkout was modified.

Costs before native execution: initial main-checkout install 0.62s; discarded historical shared-cache install 0.89s and build 51.29s; clean private-cache install 71.02s; clean build 56.87s, 106.93 CPU-seconds and 1,242,520KiB peak process RSS. The clean build waited 10s for the measurement lease; native command queue time was zero at recorded second resolution. These are costs, not a performance comparison. Browser reporter supplies case/file counts, not a reliable aggregate assertion invocation count; source assertion sites remain identical.

No correction or cause is selected. The old failure, unknown selected-layer native state and original artifact limits remain valid. #1930 changes only Bun tests and documentation; its later passing proof does not repair this native failure. This run addresses the previously unexercised exact-checkout/full-shard/per-project-order question with less intrusive diagnostics than continuous computed-style sampling. It does not rule out other scheduling/interleaving conditions. No further unchanged historical retry is proposed. Failure-only diagnostic PR #1984 was opened at 78f9f07fa45265abb84b3c3a91f32e21d78986ad. Its deliberate paused-animation, diagnostic-omission and capture-error controls validate the new receipt and preservation of the original failure, not this historical cause. All 34 restored ActionCard cases, strict types and committed preflight (231 tests / 2,302 assertions) pass. Selected hosted qualification subsequently passed; see the delivery section below. Measured local investigation and candidate validation cost totals 805.00 seconds, excluding queue/orchestration/hosted work; no speedup is claimed. Keep #1946 open with needs: repro; #1943 remains unqualified under its existing dependency requirements.

2026-10-15 update: recorded the bounded investigation, dependency provenance, separately scoped diagnostic PR and measured validation costs. The original causal gap and dependent PR blocker remain; this partial delivery targets 0.44.0.

Diagnostic delivery — 2026-10-15

PR #1984 is merged under Refs as 131f3a7d70c829bd27a3fa8ddac9fda0261918b9, parent c857a5db365b7725df24f0c00be8dd082fb68794, tree 01fd90972692493c55ec36ec3ef0e08cf49e83bd. The actual squash is verified on fetched main. Automatic ready qualification passed all 13 selected jobs and aggregate at its separately recorded checkout. The PR body retains every job identity, mutation/restoration receipts and measured costs. PR and advanced issue retain milestone 0.44.0.

The original cause remains unresolved; this delivers bounded failure evidence and preserves the original assertions, cases, deadlines and runtime guards. Automatic main-push qualification subsequently passed at the actual squash; its full identity is recorded below. The current body’s earlier pending-publication/qualification statements describe those earlier stages; this section records completed diagnostic delivery without changing the original acceptance criteria or dependent blocker.

Complete actual-main qualification — 2026-10-15

Automatic main run 38744780346, attempt 1, passes all 13 selected jobs, including the aggregate. All executed job checkout logs identify squash 131f3a7d70c829bd27a3fa8ddac9fda0261918b9, parent c857a5db365b7725df24f0c00be8dd082fb68794, tree 01fd90972692493c55ec36ec3ef0e08cf49e83bd. This independently qualifies the actual landed combination; the earlier PR receipt retains its distinct base/tree. Packaging is intentionally unselected.

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.

Job ID
changeset 116455446445
verify 116455732296
captures 116455732463
browser (2) 116455732545
unit (4) 116455732557
layout (1) 116455732578
runtime 116455732601
browser (1) 116455732606
unit (1) 116455732622
unit (3) 116455732631
layout (2) 116455732734
unit (2) 116455732884
proof 116467795874

Bounded short-task reproduction investigation — 2026-10-16

At source 4e4a663f98054d86f2dc90154b42ffbe8f8b7692, the reported opacity-1 boundary was not reproduced. This tests a different intervention from the earlier paused-animation, contiguous-stall, timer-order and external CPU-quota controls: a self-posting MessageChannel task burst starts when the existing MutationObserver first observes committed arrival. Each task occupies either 6 or 24 ms, then yields; posting stops after a bounded 450 ms window. No animation is paused, sought or rescaled, and native Reload/Land, stylesheet, original 300 ms wait and all 17 expectation sites remain unchanged.

Passive animationstart/end events and task timestamps are retained before the sample. Native animation/style snapshots occur only after the original outgoing/incoming opacity values have been read, preserving those original numeric assertions. Each snapshot retains all ten matching layers at each of 320/720 px, including selected-layer identity, computed opacity, native animation name/start/current time/pending/play state/duration, document visibility and timeline. This is diagnostic instrumentation and can influence execution.

Cell, both themes and widths Result Original outgoing opacity, two theme executions Native handoff currentTime at sample
Instrumented control, no posted tasks 34 passed, exit 0 0.197477 / 0.197477 300.072 / 300.072 ms
6 ms tasks 34 passed, exit 0 0.147629 / 0.171266 333.399 / 316.728 ms
24 ms tasks 34 passed, exit 0 0.0751743 / 0.0751203 400.002 / 400.065 ms
Original helper restored byte-for-byte 34 passed, exit 0 Original oracle passes; no added trace —

The 6 ms intervention executes 52/51 tasks before the oracle, consuming 312/306 ms of synchronous work; samples occur 343.1/335.7 ms after observed arrival. The 24 ms intervention executes 17 tasks and consumes 408 ms before each sample; samples occur 436.9/440.7 ms after observed arrival. Every sampled handoff animation is running and nonpending, with 600 ms duration. All matching outgoing/incoming layers at both widths agree on intermediate progress. Observed removal is 601.8–612.5 ms after arrival across the three instrumented cells; original geometry and both sub-700 ms checks pass. The restored run is cleanup proof, not a repair or an unchanged retry offered as diagnosis.

Each finite invocation uses the pinned mcr.microsoft.com/playwright:v1.63.0-noble image, digest sha256:eff16c30e6f3f4af0a03fa4b706120d5e9b0891c344a27d64559aff5900a4a27, Docker network none, host IPC, ordinary UID, readonly checksum-verified locked fonts, an isolated checkout and independently installed copyfile dependencies. Inside:

node scripts/visual.mjs --inside --filter=ActionCard.stories --project=storybook --project=storybook-light

Lock SHA-256 is a33ace577ec87f79769d40c3e8e25d637563b5ec8ea25e5ad40bb9b7a593285c; the clean installed Vitest CLI chunk matches the earlier diagnostic receipt, a236001d048380e2c67d05423fc9ea3f26b07ee019ba8d6e622082f29d49102e. Bun 1.4.2 completes the build. The four completed native commands cost 10.84/10.99/11.34/10.06 seconds wall, respectively; Docker-client CPU/RSS accounting is not container resource usage. No performance comparison is claimed.

Preparation receipts remain separate: an execution-environment restart interrupted initial preparation before any browser test; after recreation, an absent font-cache mount caused setup failure and 34 skipped cases, with no behavioral evidence. Preparing and verifying a persistent font cache corrected that setup. All four subsequent native commands execute all 34 cases. Full logs, native snapshots, exact probe patches, commands and summaries are retained locally outside the repository; the helper is restored and the worktree is clean.

Also inspected failed-job logs for the six latest failed CI runs after diagnostic delivery: 38771607452, 38782602296, 38797867268, 38819157269, 38827216679 and 38835409311. None contains an ActionCard opacity-1 failure or the delivered Ghost handoff failure diagnostic. This bounded failed-log search does not qualify those runs or establish absence from all CI history.

No source correction, historical cause, full-shard reconstruction or new mutation matrix is claimed. Keep the original failure and artifact limits, open state, needs: repro, priority, milestone and parent unchanged. Remaining evidence: capture a natural recurrence with the delivered failure diagnostic, establish the selected layer's native state at the original oracle, then exercise a causal control for that state. These passing short-task controls do not unblock dependent optimization work.

The recreated investigation branch is test/1946-task-burst-bf03a155-persist; no implementation commit or PR was produced. Releasing claim repro-1946-bf03a155-20261016 after this bounded unresolved investigation.

Rendering-lifecycle reproduction controls — 2026-10-16

A new controlled reproduction reaches the exact outgoing-opacity assertion, with a different native signature from the earlier deliberately paused animations. This does not identify the historical CI cause.

Source remains 4e4a663f98054d86f2dc90154b42ffbe8f8b7692. Run the real ActionCard Loading To Ready story in the pinned offline browser, preserving native Reload/Land, component CSS, the 300 ms sampling wait, all 17 original expectation sites and original disappearance budget. Immediately after the original arriving-frame and after-content geometry assertions, set the owning Vitest iframe's style.display to none. Restore its complete original style attribute in finally; do not pause, seek, rescale or replace an animation or clock.

Both themes then pass the original outgoing > 0 assertion and fail expect(out).toBeLessThan(1) with received 1. The bounded snapshots show:

  • Original samples: outgoing 1, incoming 0, at 300.1/300.2 ms after the intervention.
  • All ten matching layers per width remain in the DOM, but all 20 layers expose zero native animation objects. This differs from the earlier paused-animation control, which retained paused animation objects at time 0.
  • The embedding iframe computes to display: none; sampled child-frame geometry is zero. document.visibilityState still reads visible. Document visibility alone would miss this condition.
  • Original geometry assertions were reached and passed before the intervention. Geometry at the later hidden sample is collapsed; the incoming-opacity, final disappearance and final budget assertions are not reached in this failing cell. No passing final guarantee is attributed to it.

A causal recovery control performs the same hide but restores the original iframe style after 200 ms, leaving the original 300 ms sample untouched. Both themes return to strict intermediate opacity: outgoing 0.779059 / 0.836555, incoming 0.220941 / 0.163445, with actual running/nonpending handoff animations at 100.074 / 83.421 ms. Original frame/after-content geometry and final removal checks pass; observed removals are 602.2 / 602.7 ms after committed arrival. This establishes the intervention/recovery pair on this source, not its occurrence in the original job.

Nine completed, separately retained pinned cells:

Condition Result
Instrumented visible control 34 passed
Iframe translated offscreen after geometry 34 passed
Iframe display none after geometry 32 passed / 2 intended opacity-1 failures
Iframe visibility hidden after geometry 34 passed
Iframe translated offscreen in committed-arrival observer 34 passed
Iframe content-visibility hidden after geometry 34 passed
Open and activate an owned second browser page before native Land 34 passed
Hide iframe, then restore after 200 ms 34 passed
All helper/config changes restored byte-for-byte; temporary command removed 34 passed

The second-page cell actually observes the original document remain visible and focused in headless Chromium. It does not establish behavior for a genuinely backgrounded page. Page-count receipts verify the owned blank page opens and closes (2 back to 1) in each theme. Every iframe style restoration is also checked. The offscreen-at-arrival cell passes with unchanged internal frame geometry; its native animation startTime precedes the first observed arrival by approximately 1.1/4.5 ms. No claim that this control suppresses the first native animation tick follows.

These are nine finite executions of:

node scripts/visual.mjs --inside --filter=ActionCard.stories --project=storybook --project=storybook-light

Each uses Docker network none, host IPC, ordinary UID, readonly verified locked fonts and the pinned mcr.microsoft.com/playwright:v1.63.0-noble image/digest already recorded above. The retained private built checkout/dependencies and lock/Vitest chunk provenance are unchanged from the preceding investigation. No network guard, theme, width, assertion, duration or deadline was weakened. Qualified commands total 93.84 seconds wall; Docker-client CPU/RSS is not container accounting and no speed comparison is claimed.

An exploratory minimal iframe probe in the collaborative browser (Chromium 152) helped choose these cells; it is not pinned proof. In that probe, offscreen/visibility/content-visibility interventions could leave pending animations at time 0. The real Chromium 153 story controls above did not reproduce that state, so the exploratory result is not transferred to them. One instrumentation-generation error left an earlier invisible-mode source under an offscreen-at-arrival command label; that attempt was stopped, retained separately and excluded. The corrected invocation records its actual mode and source. No unchanged failed product job was retried.

The controlled display-none case is a candidate failure signature, not a product repair or a historical root-cause finding. Installed headless runner source inspected in this investigation does not supply an observed display-none transition for the original CI run. The original artifact lacks embedding-iframe/ancestor rendering state; an opacity-1 value alone cannot equate the historical failure with this control. A source-backed next step is to capture owning iframe/ancestor computed display/visibility/content-visibility and viewport rectangles alongside native animation state on a natural recurrence, then compare the zero-animation/collapsed-layout signature against pending/running alternatives. Preserve the original failed run and all limits. Keep needs: repro, open state, milestone, priority and parent; dependent optimization work remains blocked on its existing criteria.

All temporary source/config/command changes are restored; the clean original story passes 34/34. No implementation commit or PR was produced. Full logs, probes, exact hidden/recovery patches, snapshots, cleanup receipts and summaries are retained locally. Releasing claim repro-1946-lifecycle-bf03a155-20261016; the isolated investigation branch remains available for resumption.

Failure-only embedding diagnostic slice — 2026-10-16

PR #2008 (eb7f638ff39c144f84987215f7dacbee70f8d2f8) adds the requested bounded document/iframe/ancestor rendering-state receipt. New parent geometry reads follow the existing native layer snapshot and execute only after an original opacity assertion fails. The original native input, assertions, CSS and deadlines remain.

Focused pinned native controls distinguish hidden iframe from paused animation state, verify eight-ancestor truncation and hidden-parent identification, and preserve the original assertion plus all layer records when embedding capture throws. The baseline diagnostic verifier fails on the intended missing-field assertion; the candidate passes it. A runtime getter probe records zero embedding reads on successful handoffs; all 34 cases pass both with the success probe and with all probes removed. Strict types and committed local preflight pass (231 tests / 2,307 assertions). One initial deep-ancestor setup reloaded the iframe and is excluded; the corrected state-preserving setup supplies the bounded-ancestry receipt.

Selected ready-PR qualification 38842390329, attempt 1, subsequently passed all thirteen selected jobs. Delivery and actual-main qualification are recorded below. This remains a Refs delivery with the original causal gap and dependent blockers intact; the diagnostic claim is released after verification.

Embedding diagnostic delivery — 2026-10-16

PR #2008 is merged as 11655e165474578801b7a2425f0f4a070419157c, verified on fetched main. Actual parent is 9fc02d5fc5a7f62f13063c04ce68b3cbe12948c9; tree is 6fddd47d785eb9d7938cb2b06b9d956e7566d334, matching the independently reconstructed combination. Both issue and PR retain milestone 0.44.0.

Ready-PR qualification 38842390329, attempt 1, passes all 13 selected jobs and aggregate. Every actual job checkout log matches efdf8a55afee7fdcb08fd67774a67ad3e19769af, parents 04ef3552190d8f56eab09dd6c3580101b6385ba4 / eb7f638ff39c144f84987215f7dacbee70f8d2f8, tree 6cce8f331874630645f22e09c4fc62158bd4cf81. All browser/layout proof is fresh; pack is intentionally unselected. The PR retains every selected job ID and local intended-red/restored receipt.

Main advanced during qualification through #2006 (isolated renderer phase-budget tests and wait-guide evidence, complete timer-descriptor restoration) and #2015 (storage-design documentation only). Source inspection found no handoff, production dependency or browser-harness change; no unchanged rebase/repeat was performed. The earlier PR receipt is not attributed to the later combined tree.

Automatic main-push run 38844504065 subsequently passed all thirteen selected jobs at the actual squash; the complete source and job identities are recorded below. Verification is complete and claim diag-1946-embedding-bf03a155-20261016 is released. The original causal investigation remains open.

The requested failure-only rendering-state capture is delivered; successful handoffs perform zero embedding reads. The original cause remains unresolved. Keep #1946 open with needs: repro and existing dependent blockers: on a natural recurrence, compare the new document/iframe/ancestor state with the retained native layer signature before choosing a correction. This partial delivery does not close the original investigation.

Complete actual-main qualification — 2026-10-16

Automatic main-push run 38844504065, attempt 1, passes all 13 selected CI jobs, including the aggregate. Packaging is intentionally unselected. Every executed job checkout log identifies actual squash 11655e165474578801b7a2425f0f4a070419157c, parent 9fc02d5fc5a7f62f13063c04ce68b3cbe12948c9, tree 6fddd47d785eb9d7938cb2b06b9d956e7566d334. API/local immutable commit receipts agree and ancestry on fetched main is verified. The earlier PR qualification retains its separately recorded base/tree; it is not relabeled as this run.

Job Job ID
changeset 116791841619
verify 116791964971
browser (2) 116791964991
browser (1) 116791964998
layout (2) 116791965037
unit (2) 116791965050
runtime 116791965065
layout (1) 116791965070
unit (4) 116791965075
unit (3) 116791965080
captures 116791965109
unit (1) 116791965128
proof 116798241965

This completes qualification of the requested failure-only embedding diagnostic. The hidden/paused/ancestor-bound/capture-error controls retain their original intended assertion failures, while restored and zero-success-read controls pass 34/34 each. No assertion, native input, stylesheet, duration, deadline, theme or width was weakened. Both PR #2008 and issue #1946 retain milestone 0.44.0.

The original investigation remains open with needs: repro. The next evidence is a natural recurrence's native layer and embedding-state receipt, followed by a control for that observed condition; no historical cause or dependent unblocking is inferred. Claim diag-1946-embedding-bf03a155-20261016 is released after verification. The clean retained investigation branch and local receipts remain available for resumption.

2026-10-16 additional retained boundary: the concurrent evidence comment linked from the dated reproduction result reports a hosted ActionCard final-disappearance assertion at 713.9 ms versus the unchanged 700 ms cap (run 38906390560, job 116991239421, checkout a1b43160871d3bc72e3550c022eca3f6631b3ec2). This is a separate elapsed-time boundary from the original intermediate-opacity assertion; no common cause or repair is inferred. The eight new rendering-configuration controls pass both original boundaries on their own source and do not qualify that failed hosted checkout. Preserve needs: repro and both failed receipts.

Dominant language
TypeScript
Stars
1
Forks
0
Avg merge
4h 6m
Merged PRs (30d)
947

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from schlessera/brain-kit

All issues in schlessera/brain-kit

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.