first check if really using a sysprepped image. If not it will never pickup the unattend.xml. Second check where you inject the script within the provisioning template. For example if you try to inject the script to c drive in winpe while c drive is not pointing to
the windows partition can also result in this failure, because windows can not find the unattend.xml. Make sure your injected script will be named unattend.xml,
If CTOS is having trouble, just boot to winpe and have a look at the CTOS log file.C:\Windows\Temp\ConfigureTargetHandler.log
At last, make sure your windows image is not an OEM version.CTOS (Configure Target OS) action will make use of the setupcomplete, that won't be executed in OEM versions.The last scenario will make use of the unattend but provisioning will not continue.
Hope that gave you some points to start troubleshooting.
I'll check the CTHandler.log file, see what it shows, and reply back.
I do have my template making sure the OS is marked as C before it injects the unattend file. And this is in the Post-OS installation section.
I will say when the CTOS part comes up and it does reboot like it should. And even if I do go through the setup for when Windows 10 boots, once I am in the OS, the CTOS task never continues. I have also rebooted to see if maybe that would work, but it never continues. I do see it somewhats reads the unattend file because it creates the ldprovisioning folder that is listed in the unattend file script.
In the setupcomplete.cmd is supposed to call up ldprovisioning.cmd which runs a agent so the template keeps going but in your case it never gets called. Why, I don't know I had the same problem. I had to add in the unattend file a line to call the ldprovisioning.cmd.See below.
-<component language="neutral" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" versionScope="nonSxS" publicKeyToken="31bf3856ad364e35" processorArchitecture="amd64" name="Microsoft-Windows-International-Core">
-<component language="neutral" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" versionScope="nonSxS" publicKeyToken="31bf3856ad364e35" processorArchitecture="amd64" name="Microsoft-Windows-Shell-Setup">
I had this same issue and ended up having to add <SkipUserOOBE>true</SkipUserOOBE> to the unattend.xml even though it's deprecated, but you already have that.
Here's my OOBE section, which is a little different than yours:
I found the original solution from the community, which may be useful: https://community.ivanti.com/thread/35690
This is also useful, which explains the other settings: https://docs.microsoft.com/en-us/windows-hardware/customize/desktop/unattend/microsoft-windows-shell-setup-oobe