Tres divergencias con el gemelo de TypeScript, cerradas, y ninguna movio el digest:
- primaryType en los cuatro typed data que se entregan a una wallet
- el nonce salia como bytes (json.dumps tiraba TypeError)
- los uint como enteros de Python: con un salt real de 32 bytes JSON.parse lo
redondeaba y viem firmaba OTRO struct sin dar error (0x4c88c56a vs 0x15a8587e)
El gate de conformidad cruzada ahora compara el DOCUMENTO y no solo los 65 bytes:
430 checks en verde, probado en rojo tres veces. El vector compartido sale byte
por byte igual que el de lifecycle_auth.rs del facilitador.