I'm far from sure, but I could be on to something...
Looking at the code for azx_via_get_position, it seems that for recording streams, it accesses a register at position VIA_IN_STREAM0_FIFO_SIZE_OFFSET = 0x90. Looking at the datasheet for SB700, that register is not even present. This does not seem right to me.
Could it be that we should use POS_FIX_LPIB by default for AMD/ATI chipsets instead? It seems more reasonable to me. In addition, I looked through some of the commits for quirking to POS_FIX_LPIB and the four I checked were all ATI chipsets.
So; I've tried adding: options snd-hda-intel position_fix=1 to /etc/modprobe.d/alsa-base.conf
...to my machine with the infamous [1002:4383] controller (and rebooted), and the few times I've tested, recording worked successfully with pulseaudio. So could you please follow this up with testing on your machines to see if we have actually managed to solve this long-standing bug?
The only annoying thing is that I didn't realise this earlier :-/