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

solidjs / solid / 36236190710
74%
main: 89%

Build:
Build:
LAST BUILD BRANCH: feat/attribute-slots
DEFAULT BRANCH: main
Ran 26 Sep 2026 10:41AM 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

26 Sep 2026 10:34AM UTC coverage: 73.772%. Remained the same
36236190710

push

github

web-flow
fix(signals): an optimistic draft sees the row a previous setter added in the same action (#3665) (#3670)

Inside an action, a second optimistic-store setter in the same synchronous
stretch saw the first setter's structural add on `length` and `in` but read
`undefined` for its value — `d.push(row)` then `d[d.findIndex(...)]` missed.
The draft is the writer's channel and composes on the tick's own unflushed
overrides (`hasActiveOverride`'s rule — the has trap's draft arm,
visibleKeys, optimisticView and ensurePB's seeding all apply it); rc.9's A28
sweep (8ff4803) reader-gated the one remaining draft arm, the get trap's
absent-own-key arm, on `visibleOverride`. Restored to the writer rule.

Next to it, `visibleDescriptor` had no draft arm at all (since ae0ec3f5,
rc.8): `ownKeys` listed the added key while its descriptor reported it
absent, so every enumerator — Object.keys, spread, Object.entries,
JSON.stringify — dropped the row inside a later setter, and on arrays rc.9
serialized a literal `null` hole. It gains the twin of visibleKeys' split
(`draft ? hasActiveOverride : visibleOverride`, gated on
draftSeesOverrides), reading the synthesized descriptor's value from the
override itself rather than through nodeValue (the reader rule).
snapshotWalk — the value deep()/snapshot() return — composes the same way
inside a draft, and skips composition over a draft's own view-seeded
backing (composing again would clobber the draft's later writes with the
overrides they superseded).

Reader-side visibility (A28 (5)) does not move: an effect and an untracked
read see the add only at the flush that carries it, and the revert follows.
#3668's enumerator skip is untouched — inside a draft there is no observer
and no presence read; the new arm births no nodes.

Tests: tests/store/optimistic-draft-visibility-3665.test.ts — every channel
in the reports' tables (get / has / length / ownKeys / descriptor /
Object.keys / spread / Object.entries / JSON.stringify / deep()) ... (continued)

625 of 914 branches covered (68.38%)

Branch coverage included in aggregate %.

922 of 1183 relevant lines covered (77.94%)

27.06 hits per line

Jobs
ID Job ID Ran Files Coverage
1 36236190710.1 26 Sep 2026 10:41AM UTC 8
73.77
GitHub Action Run
Source Files on build 36236190710
  • 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 #36236190710
  • 1a7d14fc on github
  • Prev Build on next (#36232586916)
  • Next Build on next (#36249027261)
  • 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