-
Notifications
You must be signed in to change notification settings - Fork 0
fix(accessibility): reject invalid runtime text direction values #202
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@3b38ead2d00f44eb578d0689087b9293b3dabe1etypestextDirectionasltr | rtl | auto, and canonical accessibility documentation promises those exact HTMLdirstates. The historical defect was thatbuildEditorAccessibilityAttributes()copied a truthy hostile runtime value directly into the editable surface'sdirattribute instead of enforcing the finite public contract.JavaScript consumers, deserialized configuration, or TypeScript callers crossing an
unknownboundary therefore required a fail-closed runtime boundary in addition to compile-time typing. This remains distinct from host responsibility to choose the correct valid direction; Inkspan owns enforcement of its own enumerated public runtime contract.Canonical owner and implemented contract
Draft PR #230 is now the sole active writer for
src/components/editorAccessibility.tsand the focused metadata/runtime tests. The older standalone direction lane #203 is superseded by that consolidated writer and must not be revived as a competing source branch.At exact #230 head
59d82f8b65cfad5230fa9e11afb97867293a43f5, direction state is snapshotted once, accepts onlyundefined,ltr,rtl, orauto, and rejects other runtime values with the stable payload-redacted local contract before attributes are emitted. The same writer also closes the validation-to-use getter/Proxy gap without touching the separately owned publicCwlEditor.editablecontract.Representative direction RED lineage is
173c1c8b6165ccffd4d46abdf005e6aa7fe64cf9. Exact-current #230 repository workflows are terminal success: CI32322070195, Security Scan32322070146, and SAST Semgrep32322070224. Predecessor evidence does not transfer.Acceptance
ltr,rtl,auto, and absence semantics while failing closed on hostile runtime direction values.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. Do not advance protected main, duplicate #230's source ownership, or transfer predecessor CI/review evidence.