Problem
Forms across authentication, organization management, automation, App Builder, deployments, Gastown, Wasteland, BYOK, and admin rely on placeholders, unassociated labels, or visual-only validation messages.
Remediation action
Give every audited field a persistent accessible identity and programmatically associated validation state.
Representative scope
apps/web/src/components/auth/sign-in/EmailInputForm.tsx:34
apps/web/src/components/profile/EditProfileDialog.tsx:126
apps/web/src/components/organizations/members/InviteMemberDialog.tsx:217
apps/web/src/components/organizations/byok/BYOKKeysManager.tsx:661
apps/web/src/components/webhook-triggers/TriggerForm.tsx:581
apps/web/src/components/app-builder/PromptInput.tsx:338
apps/web/src/components/deployments/PasswordFormFields.tsx:106
apps/web/src/components/gastown/CreateTownDialog.tsx:58
apps/web/src/app/(app)/wasteland/new/NewWastelandWizardClient.tsx:665
apps/web/src/app/admin/alerting-ttfb/TtfbAlertingContent.tsx:195
apps/web/src/app/admin/gateway/RoutingContent.tsx:91
Acceptance criteria
- Every field has a visible
Label where practical, with matching htmlFor and id; placeholder text is supplementary only.
- Invalid controls expose
aria-invalid and reference stable help/error IDs through aria-describedby.
- Mutation-level errors use appropriate live-region semantics and provide recovery guidance.
- Password visibility and similar field controls remain keyboard reachable and state-labeled.
- Validation occurs on blur or submit unless immediate validation is intentionally required.
- Tests cover label association and announced validation for representative forms.
Problem
Forms across authentication, organization management, automation, App Builder, deployments, Gastown, Wasteland, BYOK, and admin rely on placeholders, unassociated labels, or visual-only validation messages.
Remediation action
Give every audited field a persistent accessible identity and programmatically associated validation state.
Representative scope
apps/web/src/components/auth/sign-in/EmailInputForm.tsx:34apps/web/src/components/profile/EditProfileDialog.tsx:126apps/web/src/components/organizations/members/InviteMemberDialog.tsx:217apps/web/src/components/organizations/byok/BYOKKeysManager.tsx:661apps/web/src/components/webhook-triggers/TriggerForm.tsx:581apps/web/src/components/app-builder/PromptInput.tsx:338apps/web/src/components/deployments/PasswordFormFields.tsx:106apps/web/src/components/gastown/CreateTownDialog.tsx:58apps/web/src/app/(app)/wasteland/new/NewWastelandWizardClient.tsx:665apps/web/src/app/admin/alerting-ttfb/TtfbAlertingContent.tsx:195apps/web/src/app/admin/gateway/RoutingContent.tsx:91Acceptance criteria
Labelwhere practical, with matchinghtmlForandid; placeholder text is supplementary only.aria-invalidand reference stable help/error IDs througharia-describedby.