Hand-written. ../harvested/assertions.md is what the documents say; this file is what the
implementation found, and it wins. Each entry names the harvested entry it answers by that
entry's stable key.
- The production assertion primitive is the domain model's own shared validation helper, not a general-purpose
Assert.that. Resolvesassertions/df75bd2e. The styleguide's rule presumes a project-wide assertion facade over Sorbet's runtimesigchecks; this port has no Sorbet (see../notes/type-system.md), and it has something narrower that the rule's purpose is better served by.docs/sdk-design-ruby/04-domain-model-construction.mdfixes one shared helper that raises one error type with the one message form"<name> is required", becauseSEAM-29requires required-field validation to be uniform across every model andHTTP-4requires the failure to name the field — a genericAssert.that(cond, "message")would let each model phrase that message differently, which is the driftSEAM-29exists to prevent. A second, unrelated primitive would give two ways to raise the same class of failure and no rule about which. What the SDK does instead: field validation lives in eachDatatype'sinitializeoverride and routes through that one helper; cross-field validation lives in theBuilder'sbuild; and the wire boundary re-validates header names and outbound values (HTTP-17,HTTP-18,XCUT-18) inside every transport adapter, which is where the styleguide's "check arguments at entry" density rule is actually paid in this codebase. The helper lands in phase 1 with the domain model it belongs to; phase 0 ships no production assertions at all, because it ships no production code beyond each gem's namespace andVERSION, so there is nothing for this rule to bite on until phase 1. Nothing intest/is affected: Minitest's ownassert_*family is the test-side assertion vocabulary and the styleguide's chapter 11 rules govern it unchanged. The styleguide-amendment alternative (scoping rule 5'sAssert.thatclause to projects without a domain-model validation contract of their own) was considered and not taken; this is recorded as an SDK deviation instead. review ·docs/work/mvp/phase0/2026-09-05-phase0-scaffold-and-quality-gates-design.md· high · sha:manual-phase0-assert