I want a notebook where causality can only flow forward through the cells. I hate notebook time-loops where a variable from a deleted cell can still be in scope.

1. Checkpoint the interpreter state after every cell execution.

2. If I edit a cell, roll back to the previous checkpoint and let execution follow from there.

I can't tell you how many times I've seen accidental persistence of dead state waste hours of people's time.

Might be worthy trying out nodebook [1] which at least enforces the forward directionality you mentioned.

Also polynote by Netflix, as a user below mentioned.

[1] https://github.com/stitchfix/nodebook