Part records and QueryResult get a validating static factory (private constructor) so an invalid part cannot be built outside its handler. Widest blast radius of the guardrails: the part handlers across 14 part files and every test that constructs a part. Run spice-impact-scout first, then ask-first. Operator-chosen guardrail (2026-09-25).