Thanks @RobLa-WMF for the summary and the poke. :) Looks like @arlolra submitted a wip patch already, but a bunch of details still need to be ironed out. So, I am moving that discussion here.

So, it appears that the original idea of storing HTML (without redlinks) and doing a post-process on that HTML (in a html2html) pass has morphed into something different:
* Render red links in Parsoid as part of the normal render.  Internally, the code can continue to be structured as a DOM transformation on the parsed HTML.
* Rely on Change Propagation to provide Parsoid the information about what redlinks to update which can be done efficiently as a html2html transform (without reparsing the page from scratch).  T39902#2199600 has some options.

I am not opposed to this, but, can someone summarize what led to this change? @GWicke ?

But, in any case, no matter how / when the redlink transform happens, in order to get the redlinks info, we would have to query the mediawiki API. Here are a few different options for doing so:
* @Anomie provided a link to the links API. That can work, but to get the full list of links the continue links would have to be navigated which is a bunch of API calls (in series, not parallel) in the general case which makes this inefficient and adds to the parse time.
* It would be better would be to have a redlinks api call that only returns missing links (if that can be done efficiently). But, I understand that this is Parsoid-specific which brings me to the next alternative.
* This can be done as part of the ParsoidBatchAPI extension (which has some custom Parsoid functionality already).
* However, as far as I understand, all the 3 solutions above assume / require that the core parser to have already processed the page and is an unnecessary dependency. Instead, a better alternative would be to have Parsoid send a bunch of links to the API and request a list of links that don't have a corresponding page entry in the database. This functionality is probably best done in the ParsoidBatchAPI and also eliminates the dependency on the core parser.

Thoughts?