From the link you posted:
…
A regular ADR request is scheduled when we have enough measurements and the current data rate is not optimal. The request is only scheduled, and will be attached to an existing application downlink (such as an ACK or downlink payload).
…
An ADR request is sent when the device sets the ADRAckReq bit. By default this happens after sending 64 uplinks without receiving a downlink, but as that depends on the device implementation we can’t give you an exact number here.
An ACK for a confirmed uplink would indeed be a downlink that TTN could use to piggyback the ADR on. But that would really be a waste of limited resources, when used just for ADR. (Also, LoRaWAN confirmed uplinks have a flaw.)
LMIC takes care of that for you. (But when powering down, you’ll need to save its state.)