@SignOfficial $SIGN #SignDigitalSovereignInfra
It’s 2:47am and the Mumbai attestation just failed verification against the Singapore reference schema. Not because the structure changed, the field hashes match exactly, byte for byte. The Sign Protocol schema ID is identical: 0x8a3…1f2. But the “eligibilityStatus” enum that meant “pre-approved for Tier-1 disbursement” when we all onboarded six months ago now means “pre-approved pending secondary KYC review” in the MAS circular issued Tuesday. The schema didn’t move. The policy did.
We built this interoperability on Sign because the World Bank disbursement system needed to verify attestations from three different sovereign welfare programs without parsing XML hell. It worked beautifully. The fields lined up. The OIDC hooks validated. The compliance predicates checked out. Then Delhi changed the qualifying income threshold while the schema still captures “incomeBracket: 3” exactly as it did in January. The on-chain record hasn’t budged. The attestation is still cryptographically perfect.
Now I’m looking at a valid Sign attestation where the verifying contract returns true, the schema structure is intact, and the recipient shows “eligible” on-chain. But the issuing agency’s backend policy shifted the eligibility window to exclude this cohort starting last Friday. The Sign Protocol verifier sees matching field types and valid signatures. The meaning forked three days ago and the infrastructure hasn’t noticed. We’re still technically interoperable.
I could version the schema, deploy 0x8a3…1f3, but that means twelve ministries across four jurisdictions update their Sign ID integrations and re-attest 40,000 recipients before next week’s disbursement. Or I could keep validating technically correct attestations that mean increasingly different things depending on which side of the border you read them from.
The attestation is still valid. The coordination is already broken. I’m not versioning tonight.