So you say the header-sync-first is implemented within LibBitocoin’s design of internally tracking a candidate chain and a confirmed chain.
When you say “We download unpopulated candidate blocks in parallell when the candidate chain is stronger” - are you saying that the headers-first sync ONLY downloads block headers into the candidate chain, or that it downloads then into the candidate or confirmed chain depending on situation;
Does “confirm chain” have the notion to it that all transactions have been downloaded already?
To get the supposed total height of the Bitcoin blockchain during sync, should I use as data source, listening/polling for the height of the candidate chain?