Is
R=rpm
S=spark advance
D=dwell
C=cylinder
V=??
E=??
L=degree later than requested

I noticed that around and above 3400 rpm L becomes very unstable.
That corresponds with some dwell calculations in dwell time at PCM.
3E99 ldd word_204E ; DWELL vs volts
RESERVED:3E99 ; ABOVE 3400rpm
RESERVED:3E9C subd word_135
RESERVED:3E9F lsrd ; 4.35ms - current low res time /2
RESERVED:3EA0 adcb #0
RESERVED:3EA2 adca #0
RESERVED:3EA4 std word_143
RESERVED:3EA7 xgdx ; X goes to D
RESERVED:3EA8 subd word_143 ; D[55f0] /X [fil ad Volt] - {4.35ms - current low res time /2}
RESERVED:3EAB bcc loc_3EB0
RESERVED:3EAD ldd #0
RESERVED:3EB0
RESERVED:3EB0 loc_3EB0: ; CODE XREF: OC4I+4B1j
RESERVED:3EB0 xgdx
That code is executed above 3400rpm and it corrects some of the dwell time.
Dwell is modified with high map accelaration too, Voltage correction or with rpm threshold for high rpm situation.
So it is not perfectly linear and predictable.

You can still consider PCM modification for constant dwell time and for development purpose. It can be done that way, but can be perfectly tuned with some PCM mods too.
At the last stage of development we need to do some spark match tests. Does actuall spark is the same as commanded spark from PCM.
Can you hook the arduino to aldl line to get spark advance from the data PCM streams all the time. It wont be used all the time, but for relaxed cruise is good.
The line should be fast enough since traction request on f-body is done on the ALDL bus.

Pulling the engine is not that bad, if you pull the optispark too. Than you can make a test bench. All you need is spinning opti with a drill at variable rpms and hooked PCM. Than you can simulate all kind of conditions, change the spark with eehack and measure est line for intermitten signal at high rpm.