I see debugging as a live activity, so it doesn’t need to follow the script. Turn them on from the command line when you need them.
Line length is already a faced limitation in the language with all mods. You can’t L 1 4 the most complex statement. You can’t IF X the most complex statement. You won’t be able to WA 1 (as an alias) the most complex statement. 
Besides, it seems that the system you’re proposing is far more limited, so it’s disingenuous to point out this downside. (“Pinching is painful, let’s stab instead!”)
Re: computational cost: I wonder if the following scenelet poses any risk to stability currently:
I: M 25
M: P 0 O
* Open Tracker Screen *
Re: toggle, WATCH.SHOW 0 or something would work, and I’m not opposed to a keystroke.
Beside the interface drawing code and the operator implementation, you’re looking at a couple of memcpy() and a memcmp() bracketing run_script_with_exec_state. Then, the live screen display code checks the dirty flag, conditionally running N post-commands, where N is the number of active watches.
I disagree. I would be interested in monitoring a lot of different things. Pattern indices, queue length. I can only think of a handful that I wouldn’t want to monitor, and those are only getters because the language doesn’t differentiate between (for lack of better terms) a function and a subroutine. E.g., @STEP.
Neither does WATCH, as mentioned, if you consider debugging a live exercise.
Actually, because you would have to capture the operator DRUNK and not the result of calling DRUNK, the syntax would have to be WATCH: DRUNK to capture the operator as the post-command. You have essentially proposed a more-limited version of WATCH because all of the other slots are static.
Implementing a custom AUX slot requires 100% of the work of the system I advocated. So you’re basically getting all the code complexity for little benefit.
Compromise
- Use the
WATCH-as-mod approach, allowing great flexibility.
- Use a toggle key / command to hide / show the display
- By default, populate the cells with A, B, C, etc.
- Allow users to change the post-commands in any cell by cell number.
Technical Solution to O, FLIP, IN, etc.
Shadow these variables in the scene state. Update the low-level getters to optionally draw from the shadowed value when the shadow flag is set, i.e.: when the screen draw routine is calling process_command().
Remote Getters (i2c, etc.)
WATCH: could easily just drop post-commands with any obviously problematic operators, which would be especially easy if we maintained an order of the operator table with all i2c ops at the end.
edit: actually, with a little bit of RAM, all last-known-ii-requests could be cached and shadowed with only changes to tele_ii_rx() and tele_ii_tx()! If you haven’t used it, why are you watching it?
(note that I understand the concern for computational overhead and could design this to be lightweight in that regard)