Last year at a Jupyter Community Workshop, the discussion touched on how to manage out-of-order execution. Fernando put it well (per my notes):
Out of order execution is like leaving your hammer and your screwdriver on the workbench. It’s OK, you’re getting things done, you know where it is. The problem is when you come back the next week and you don’t remember where anything is.
In the context of data acquisition where we are steering real hardware to measure real samples, the confusion resulting from out of order execution can lead to expensive mistakes. But if used well, the notebook can serve as useful guide or “walk-through” and a lab notebook recording what was done.
Is there a way to constrain users to linear, top-to-bottom cell execution? Such a tool should allow users to append cells and to skip cells, but once a cell has been executed, it should not be allowed to execute any of the cells above it (until the kernel is restarted).
Has this been done? Two related projects I know of are nodebook and gather but neither of them do precisely this.
If such an extension does not yet exist, what would the right extension point(s) be? I imagine a labextension and/or nbextension would be needed to provide UI changes, but where would the actual constraint be implemented?