You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Protected main@3b38ead2d00f44eb578d0689087b9293b3dabe1e documents languageTag as BCP 47 metadata, while the historical runtime path trimmed and emitted any in-bound string directly as the editable surface's HTML lang attribute. An untyped/deserialized malformed host value could therefore silently produce invalid language metadata for authored content and assistive technology.
Inkspan owns only validation of its public local attribute contract. Host language choice/localization and registry-content policy remain host-owned; this adds no inference, transport, persistence, credentials, tenancy, model/provider, network, runtime registry, or durable-audit authority.
Standards correction and canonical owner
RFC 5646 Language-Tag includes normal langtag, private-use, and grandfathered syntax. ECMA-402 Intl.getCanonicalLocales() is a narrower locale-processing boundary and rejected valid RFC 5646 forms exercised by this lane, including private-use-only x-private, grandfathered i-klingon, and extlang zh-cmn-Hans-CN. Platform locale canonicalization is therefore not a valid substitute for Inkspan's declared syntax contract.
Draft PR #230 is the sole active writer for src/components/editorAccessibility.ts and focused metadata/runtime tests. At exact head 59d82f8b65cfad5230fa9e11afb97867293a43f5, the branch uses local deterministic RFC 5646 well-formed-syntax validation for the portions that can be decided without an IANA registry snapshot, including private-use-only, grandfathered, permanent extlang position, script/region/variant/extension/private-use sequences, duplicate variants, and duplicate extension singletons. Accepted tags preserve the caller's trimmed spelling; Inkspan does not infer, alias-normalize, case-normalize, or claim registry-content validity.
TDD / exact-current evidence
The initial malformed-tag RED established that a non-blank malformed runtime languageTag was emitted instead of rejected.
Test-only 64e46d780cd25bbcc9b821470b641f48820b7e63 proved the first Intl.getCanonicalLocales() remedy was too narrow; hosted CI 31534174592 failed the RFC 5646 preservation regressions for x-private, i-klingon, and zh-cmn-Hans-CN.
Invalid extlang-position RED lineage is 0551ae31809dc37e146f1bba60bf5d13daf04b60.
Keep #230 Draft/unmerged while #118 freezes protected main for v0.6.0 operational 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.
Buyer-visible accessibility/data-integrity boundary
Protected
main@3b38ead2d00f44eb578d0689087b9293b3dabe1edocumentslanguageTagas BCP 47 metadata, while the historical runtime path trimmed and emitted any in-bound string directly as the editable surface's HTMLlangattribute. An untyped/deserialized malformed host value could therefore silently produce invalid language metadata for authored content and assistive technology.Inkspan owns only validation of its public local attribute contract. Host language choice/localization and registry-content policy remain host-owned; this adds no inference, transport, persistence, credentials, tenancy, model/provider, network, runtime registry, or durable-audit authority.
Standards correction and canonical owner
RFC 5646
Language-Tagincludes normallangtag, private-use, and grandfathered syntax. ECMA-402Intl.getCanonicalLocales()is a narrower locale-processing boundary and rejected valid RFC 5646 forms exercised by this lane, including private-use-onlyx-private, grandfatheredi-klingon, and extlangzh-cmn-Hans-CN. Platform locale canonicalization is therefore not a valid substitute for Inkspan's declared syntax contract.Draft PR #230 is the sole active writer for
src/components/editorAccessibility.tsand focused metadata/runtime tests. At exact head59d82f8b65cfad5230fa9e11afb97867293a43f5, the branch uses local deterministic RFC 5646 well-formed-syntax validation for the portions that can be decided without an IANA registry snapshot, including private-use-only, grandfathered, permanent extlang position, script/region/variant/extension/private-use sequences, duplicate variants, and duplicate extension singletons. Accepted tags preserve the caller's trimmed spelling; Inkspan does not infer, alias-normalize, case-normalize, or claim registry-content validity.TDD / exact-current evidence
languageTagwas emitted instead of rejected.64e46d780cd25bbcc9b821470b641f48820b7e63proved the firstIntl.getCanonicalLocales()remedy was too narrow; hosted CI31534174592failed the RFC 5646 preservation regressions forx-private,i-klingon, andzh-cmn-Hans-CN.0551ae31809dc37e146f1bba60bf5d13daf04b60.32322070195, 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.