Alright, reporting in after having moved over my syncscroll to ULM MID/LO stabilizers, dividing up my synctable for three different cases (WK1**, WK2**, STE - dividing it up into five will be done if need arises) and then clearing (!) my syncline combo blacklist* and recreating it from scratch for ULM instead of regular HI/LO ...
It works. Whereas my previous code worked fine for all wakestates (WS1-4) and both cold and warm there was an intermediate phase, "warming", where two wakestates (WS2/4) were extremely irregular and the syncline combos produced unstable results. Since that "warming" phase appeared after ~30 minutes and persisted for another ~30 minutes it was simply unsatisfactory for usage.
Result:
The ULM version, while I'm still doing some final tests, now works for all wakestates (WS1-4) and both cold and warm. Additionally, there doesn't seem to be a long "warming" phase for WS2 and WS4 which is why I did this - and it seems to have been a success. There is an extremely short (1-2 minutes) phase after about an hour where one combination is temporarily unstable but 1-2 minutes compared to 30 is well worth the work.
Additional findings:
In WS2 (which is by far the most complicated WS to find stable combinations for***) one of my synclines isn't even working correctly in some combinations - the switch seems to fail. I will investigate why this happened when changed stabilizers (it's not a stabilized line) and how later. Can leftover words in the Shifter push the needed timing? [edit: Actually, after counting nops I might not switch where I thought I was, don't read too much into this]
In WS1 several combinations lead to the _next_ line, a normal line, being shifted -4. However, the state doesn't persist. I now understand what Paolo means - WS1 simply doesn't like to become unstable, the Shifter is able to clear itself without the need for a stabilizer at all.
Speculation:
So why am I getting a different result with MID/LO compared to HI/LO? I'm working with the assumption that stabilizers "clear" leftover words in the Shifter so as to make things easy for the following line. A HI/LO stabilizer is better (clears more incoming words?) than a MID/LO stabilizer, however, it's also more sensitive and will clear a different amount (?) of words depending on temperature. The same applies to MID/LO, but since it didn't clear as many from the beginning there are fewer ways for it to be different due to temperature.
Conceptual model -
most definitely not reality: A HI/LO stabilizer can take care of 1,2,3 incoming words - but only 1 when cold, 1,2 when warming and 1,2,3 when warm. A MID/LO can take care of 1,2 incoming words, 1 when cold and 1,2 when warm.
The above would lead to exactly what I see - it's much harder to find stable syncline combos when working with MID/LO stabilizers, but once they're found they're more stable throughout the cold->warming->warm phases.
(It also makes me wonder if even better results would be gotten if no stabilizers are used at all for synclines used in a sync scroller. More difficult to make it stable, less things that can change .. )
Very often a combination that leads to a stable bitplane error in WS2 cold (as an example) leads to a striped (every other line) error or cycling (different words every VBL) in WS2 warm. This is partly what makes me think of "the number of incoming words" in the conceptual model. I'm actually hoping it's possible for the number of incoming words in the Shifter to "push" timings needed for a syncline switch since that would open up the possibility to detect whether it's cold or warm ...
Caveat, as always: This is all based on tests on one single STF.
/Troed
*) My synctable finder does not have the knowledge Paolo has on what words will stay in the Shifter depending on what words came in on a line. It thus simply brute forces all combinations leading to the desired offset and the "blacklist" is a list of all combinations that do not lead to a stable result.
**) I use WKx to denominate the previous known wakeup states, also sometimes called "cold" and "warm" (Ijor's program). Thanks to Paolo's work we now know WK1 to be WS1/WS3 and WK2 to be WS2/4 and shouldn't be referred to as temperature
***) My WS1/WS3 blacklist contains 30 combinations. The list for WS2/WS4 contains 137. [The actual numbers are not interesting, the relation between them is]