Proposed (STA-797, validation part). It applies
0370 to the US
identity formats. The 5-cent cash rounding belongs to the plan-catalogue work; carriers and
delivery connectors are vendor integrations and are not decided here.
Context
The US launch needs the employer number, the last four digits of a social security number, ZIP and ZIP+4 codes, state codes and US phone numbers to validate.@stackra/validation checks any identifier against an IdentifierFormat from
a pack, but stored only the compacted value, so 12-3456789 and 94105-1234 lost their separators.
Decision
- Mechanism only in code.
IdentifierFormat.canonicalis a$1-to-$9template over the pattern’s groups that writes the stored form; a group that did not match drops with the text just before it, so one ZIP format stores94105and94105-1234. Check algorithms still run on the compacted value. - The
uspack carries the formats (draft until counsel signs off):identity.ein:^(?!00|07|08|09|17|18|19|28|29|49|69|70|78|79|89|96|97)(\d{2})(\d{7})$, canonical$1-$2(IRS prefixes never issued are refused);identity.ssn_last_four:^(?!0000)\d{4}$(the full number is never collected);identity.address_format.postalCode:^(\d{5})(\d{4})?$, canonical$1-$2;identity.address_format.region: the fifty states, DC and the five inhabited territories as one alternation;identity.phone:^\+1([2-9]\d{2})([2-9]\d{6})$over thee164()output (NANP area and exchange codes).
- Nothing US-specific in code paths. The tests carry these values as fixtures the way the pack does.
Consequences
- A US form validates through the same
identifier()andaddress()schemas as every Market. - A format change (a new territory, a new EIN prefix) is a pack edit.
Enforcement
planned —packages/foundation/validation/src/core/functions/__tests__/check-identifier.function.test.ts fixes the
behaviour with the US values.
Supersedes and sources
Supersedes: none. Sources:notes/handover/stackra-package-needs.md (added by review round 3);
notes/handover/us/default-applied.md (US-21, US-22, US-39, US-96, US-124); R3-SO-16; STA-797.