• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

solidjs / solid / 35774262131
74%
main: 89%

Build:
Build:
LAST BUILD BRANCH: feat/frames-live
DEFAULT BRANCH: main
Ran 22 Sep 2026 07:35PM UTC
Jobs 1
Files 8
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Sep 2026 07:30PM UTC coverage: 72.775%. Remained the same
35774262131

push

github

web-flow
fix(signals): a reawakened lazy memo rejoins its owner's chain (#3555)

* fix(signals): a reawakened lazy memo rejoins its owner's chain (#3554)

unobserved() splices an auto-dispose memo out of parent._firstChild when
its last subscriber leaves, but the reawaken in prepareComputed only
recomputed it. The node then ran live outside the chain with a null
_prevSibling and a stale _nextSibling, so its next dormancy took the head
branch of the splice and wrote the stale pointer into parent._firstChild,
orphaning every sibling created after it (still subscribed, still running
after the root's dispose()). Dev builds threw the owner-chain-head
invariant from #3552 mid-flush instead.

The reawaken now links the node back at the chain head before the
recompute, through the same linkChild helper createOwner and
setupComputedNode use for the creation-time link. A zombie is not
relinked: disposeChildren skipped its splice, so it still sits on the
parent's pending chain. Core floor 25,671 -> 25,684 bytes.

Claude-Session: https://claude.ai/code/session_01JH7R7yDguTxuXpDioMzMCT
Co-Authored-By: Claude <noreply@anthropic.com>

* fix: address review findings (round 1)

A dormant lazy memo read after its owner's dispose() is no longer linked
into that owner's child chain. disposeChildren skips the dormancy splice
when the parent is already REACTIVE_DISPOSED, so a relinked node stayed at
the head and the next reawaken linked it to itself, which sent markDisposal
and DEV.getChildren into an endless loop; the dead chain is also never
drained again, because dispose() early-returns on REACTIVE_DISPOSED.

linkChild resets node._prevSibling itself instead of relying on the caller
having cleared it. Core floor 25,684 -> 25,716 bytes, under the 25,750 cap.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: address review findings (round 2)

A lazy memo a cleanup reawakens while its owner's held children are torn
down stays on the owner's chain. recompute drains those child... (continued)

550 of 818 branches covered (67.24%)

Branch coverage included in aggregate %.

824 of 1070 relevant lines covered (77.01%)

17.44 hits per line

Jobs
ID Job ID Ran Files Coverage
1 35774262131.1 22 Sep 2026 07:35PM UTC 8
72.78
GitHub Action Run
Source Files on build 35774262131
  • Tree
  • List 8
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #35774262131
  • f884589e on github
  • Prev Build on next (#35772188487)
  • Next Build on next (#35785788686)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc