RT diff on the "enwiki:Panic! at the Disco" page without the batching API
RT diff on the "enwiki:Panic! at the Disco" page with the batching API
Some explanations in order. The rt-testing script does the following to identify diffs
- wt_orig -> HTML_orig
- HTML_orig -> wt_rt
- return if diff(wt_orig, wt_rt) is empty
- wt_rt -> HTML_2
- html_diff = diff(HTML_orig, HTML_2)
- if html_diff is empty, report syntactic diffs in rt-ing
- if not, report semantic diffs in rt-ing and report the html diff for the wikitext that differed (this html is identified using DSR offsets in the HTML DOMs).
See checkIfSignificant in https://github.com/wikimedia/parsoid/blob/master/tests/roundtrip-test.js for the code that does all this.
So, with the batching API, step 6 is reporting no html diffs, and without the batching API, step 6 is reporting the HTML diff shown in that link above. This is a false semantic diff since the difference is in the id attribute of the <map> element that the timeline extension generates.
Some possibilities for why this might be the case.
- Timeline extension is likely using some page-global state to compute the id attribute. In this case, it seems that the batching API doesn't use or doesn't have access to the page global state. It doesn't seem like a catastrophic thing in this example. Is this basically undefined behavior (a la T110239) that generates different results in different implementations? Or is this a bug?
- If however, the timeline extension is not using page global state, something is broken with the non-batching code, or with our rt-tesing code.
In any case, this mystery needs further investigation.