matrix

chromalchemy 2026-05-19T20:30:20.281339Z

Some glitch resolution for thought, https://github.com/replikativ/spindel/blob/main/docs/concepts.md

kennytilton 2026-05-22T19:02:10.357469Z

@whilo I left a note on GitHub after a glance thru the new doc. Looks like you have the bases covered!

kennytilton 2026-05-20T10:07:15.501069Z

Nice! But a topo sort on the current graph may not be the same sort of the new graph, because of conditional branching in formula code and, worse, hidden by function calls made by a formula? That very rare occurence is what broke Cells 2 and occasioned Cells 3. Philip Eby christened the the Pentagram of Death, because it required five Cells to demonstrate. I am pretty sure a Cells test (named appropiately) tests that, and shows how to set that up. MobX handles glitches the same way as Cells: always check that a dependency is "current" before using its cache, but with MobX using a different mechanism to determine consistency. Does Spindel deal with that case? ps. Love the "spin" metaphor!

kennytilton 2026-05-20T10:17:41.367729Z

Don't want to send you on a goose chase. I just looked for an existing source for the Pentagram test, no luck. I will look some more.

kennytilton 2026-05-20T10:23:27.526879Z

https://github.com/kennytilton/cells/blob/main/cells-test/df-interference.lisp (named before Eby came along)

kennytilton 2026-05-20T12:05:49.515189Z

Hang on. Just reading my comments, that test may not break a dependency sort. The key requirement is that a cell, A presented with a new runtime value for one dependency, now branches and takes on a wholly new dependency X, which itself establishes a new edge back to some original cell O. Cant find it! Pseudo code: X = 0 A = X + B B = if X = 42 then K else 0 K = X when X= 0, the known dependencies A < X, B B < X K < X when X changes, the sort dictates B or K in either order, then A. but K must go first. Hoplon's solution is to look at the formula source for B and establish a dependency B<K regardless, an inefficiency. And Hoplon does not then detect dependencies established by a function call. Still a nice package,

whilo 2026-05-21T06:00:29.519029Z

Thank you for the feedback @hiskennyness! I addressed it in this PR https://github.com/replikativ/spindel/pull/4. I am open to design suggestions and requirements spindel should cover. The ability to snapshot/branch executions/simulations is the most important raison d'etre for me and I deliberately want it to be very permissively open infrastructure for the Clojure ecosystem, I don't need to reinvent any wheels and I think FRP and similar runtimes are a fascinating design space to discuss.