# FIPS-140-3 Status — json **REQ-ID:** REQ-FIPS-EXEMPT-001 — non-security crypto/hash/RNG sites are allow-listed (exempt) from the workspace FIPS-140-3 routing requirement per `docs/superpowers/specs/2026-06-20-fips-pqc-design.md` §5. **Mode:** This library performs only **non-security** hashing: a JSON-Schema `$ref` resolution cache key. It is **exempt** from the workspace FIPS-140-3 routing requirement (see `fips` package spec `docs/superpowers/specs/2026-06-20-fips-pqc-design.md` §5). No site produces, protects, or verifies a secret, key, credential, authentication tag, or signature; therefore none is routed through the `crypto_backend` seam and none links the OpenSSL FIPS provider. When a consumer builds with `-Dfips=true`, this library is unaffected: it adds no `-Dfips` flag and changes no behavior. ## Exempt call sites | File:Line | Primitive | Use | Why non-security (exempt) | |-----------|-----------|-----|---------------------------| | `src/schema.zig:681` | `std.hash.Wyhash` | JSON-Schema `$ref` resolution cache key (`ref` + `base_uri`) | Hashmap lookup only; not a secret | Line numbers are pre-annotation approximations. ## zlint allow-list The site above carries an inline `// fips-exempt: non-security — ` annotation so the `zlint` FIPS rule treats it as allow-listed rather than a violation. Adding a new `std.crypto` / `std.hash` / `std.Random` use to this library REQUIRES adding both the inline annotation and a row in the table above.