-
Notifications
You must be signed in to change notification settings - Fork 0
fix(accessibility): reject invalid runtime ARIA validation states #206
Copy link
Copy link
Closed
Labels
area: accessibilityAccessibility and assistive-technology supportAccessibility and assistive-technology supportarea: authAuthentication, authorization, identity, or tenant isolationAuthentication, authorization, identity, or tenant isolationarea: ci-cdCI, GitHub Actions, checks, release, or supply chainCI, GitHub Actions, checks, release, or supply chainarea: securitySecurity boundary, hardening, or vulnerability preventionSecurity boundary, hardening, or vulnerability preventionpriority: mediumNormal-priority or P2 workNormal-priority or P2 workstatus: triagedOpen issue has an organization taxonomy assignmentOpen issue has an organization taxonomy assignmenttype: bugDefect or incorrect behaviorDefect or incorrect behavior
Description
Activity
Metadata
Metadata
Assignees
Labels
area: accessibilityAccessibility and assistive-technology supportAccessibility and assistive-technology supportarea: authAuthentication, authorization, identity, or tenant isolationAuthentication, authorization, identity, or tenant isolationarea: ci-cdCI, GitHub Actions, checks, release, or supply chainCI, GitHub Actions, checks, release, or supply chainarea: securitySecurity boundary, hardening, or vulnerability preventionSecurity boundary, hardening, or vulnerability preventionpriority: mediumNormal-priority or P2 workNormal-priority or P2 workstatus: triagedOpen issue has an organization taxonomy assignmentOpen issue has an organization taxonomy assignmenttype: bugDefect or incorrect behaviorDefect or incorrect behavior
Buyer-visible accessibility boundary
Protected
main@3b38ead2d00f44eb578d0689087b9293b3dabe1eexposesariaInvalid?: boolean | 'grammar' | 'spelling'andariaRequired?: booleanthrough the editor contract. The historical defect was that the shared accessibility builder stringified a defined hostile runtime value, allowing values outside those finite ARIA contracts to reach authored attributes instead of failing closed.This is materially significant for
aria-invalid: unrecognized tokens can be interpreted as an invalid state rather than being harmlessly ignored. Inkspan therefore owns enforcement of its finite public runtime contract while host accessibility policy remains host-owned.Canonical owner and implemented contract
Draft PR #230 is now the sole active writer for
src/components/editorAccessibility.tsand focused metadata/runtime tests. The earlier stacked #203/#207 direction is superseded; do not revive it or create a competing writer.At exact #230 head
59d82f8b65cfad5230fa9e11afb97867293a43f5,ariaInvalidandariaRequiredare snapshotted exactly once before validation.ariaInvalidaccepts onlyundefined,false,true,grammar, orspelling;ariaRequiredaccepts onlyundefined,false, ortrue. Invalid runtime values fail through the stable payload-redacted local contract before emission, and the validated snapshot—not a second getter read—is serialized.Representative ARIA RED lineage is
83d230735aa38c1013b6032dbde4178b1db9a219; the finite-state getter TOCTOU regression was added at test-onlyd950d610cd2a81ae0d414b247b27323bd3ca83feand immediately followed by the narrow current implementation. Exact-current #230 repository workflows are terminal success: CI32322070195, Security Scan32322070146, and SAST Semgrep32322070224. Predecessor evidence does not transfer.Acceptance
Integration boundary
Keep #230 Draft/unmerged while #118 freezes protected main for
v0.6.0operational acceptance and while qualifying independent approval plus every then-live merge/review/governance gate remain incomplete. Never transfer predecessor CI/review evidence or create a competing writer for the same source.