I finally took the plunge into the terrors of heavy testing. With power, i.e. with the full progression rules and everything. Annnnnnd...
Everything works! Three bugs popped up in the basic function tests: i neglected to install a self-off in the "store" decoder, so the first run went off the rails. I forgot to remove tracks under a bunch of transmitter rollers in the adder, so once again, first run went off the rails. I forgot to link one "read" hatch to the actual read signaller. It's linked _somewhere_, i've no idea where. We may never find out... On the flip side, there's only one function that could actually malfunction due to the last error - "load from register", and only when targetting that exact register and only if that particular bit was off and the bit in the storage target on.
The first actual program test showed a rather egregious oversight - totally forgot to link one input register to one line of adder gears. Took several runs before i managed to spot it, but that was easily rectified. And one cart _somehow_ overspeeds when the bit is on, while several other carts using the exact same configuration don't. <shrug> i downgraded the roller from highest to medium and that was that.
Test program: multiplication. Factor 1 in Register A, Factor 2 in Bf (buffer/transfer).
Program:
-store Bf in Register D (counter)
-copy Rg. A to Rg. B (direct copy through the adder)
-decrement Register D
-Add Rg. A to Rg. B, store result to B (normal operation of the adder)
-decrement Register D, check for zero
-Jump to #4 if not zero
-Halt
001 100 st D
010 100 ad A0 -> B
011 101 ct zD-
010 000 ad AB -> B
011 101 ct zD-
101 011 jmp 4
111 110 div halt
yes, those are six-bit command words, allowing loading and storing data, conditional jumps, addition, increment/decrement, skips based on comparison and some input/output.
The result ends up in register B.
I multiplied 35 (reg. A) by 12 (counter). All results (intermediate and final) were correct, final result was 420 (01101 00100). It took a few weeks, yes.
PS: and the "nanocontroller" device also works - writing to output when the buffer's sixth bit is on, seventh off and eight and ninth are inequal, the pumps activate and supply the watercannon with ammo.