Field
Label, control, hint, error — and the ARIA wiring between them, which is the part that gets skipped.
Anatomy
The address as the council records it.
Lot/plan is required.
The wiring
A generated id links the label to the control, and aria-describedby names the hint AND the error together so a screen reader reads both.
<GdField v-slot="f" label="Lot / plan" :error="err"> <GdInput v-bind="f" v-model="lotplan" /> </GdField> // f is { id, describedBy, invalid } Doing that by hand at every call site is how a form ends up with a visible error that assistive technology never announces. The error also carries role="alert", so a validation failure is announced when it appears rather than only when focus happens to land on the field.
Required, hint and error
The required mark carries a text alternative, because a bare asterisk means nothing to a screen reader. "Optional" would be the better convention in general, but on a form where most fields are required it produces more noise than it removes.
A hint and an error are never shown at once: once something is wrong, the correction is the only thing worth reading.