consent a customer can actually read
The registration form is where a platform's promises become a customer's problem, so it is the wrong place for a single combined checkbox. The change that landed separated the agreements from the marketing permission, linked each required item to the text that describes it, and made the refusal reason appear beside the control that caused it rather than only in a summary at the top of a long page.
Two decisions make it more than paperwork. Required fields are marked both visually and for assistive technology, so the marker is not decorative — the form announces which fields are mandatory before the person types, which is the difference between a required field and a trap. And the error is stored as state and derived into copy at render time, so a language toggle mid-form re-renders the message rather than freezing whichever language the refusal happened in.
That second part is a small pattern with wide reach: any message captured as a finished string at the moment of failure stops being translatable and stops being adjustable. Deriving it at render keeps one source of truth for what went wrong.
The funnel around this form was also walked end to end as a stranger would, and that walk raised the rest of the findings — a submit control disabled with no explanation, an entrance that answered as absent, a page that loaded without its script. None were visible from inside the component that owned them.
Cost: more form state, more copy in two languages, and a second surface to keep in step with the first.
What it proves: the team treats the entrance to the product as a place where honesty and accessibility are the same requirement.
drawn from: commit cluster — consent gate, render-derived errors, funnel walk
Every note carries a codename and one idea. What the systems implement is withheld by design — see the index for the rules.