Skip to content

fix(data-integrity): fail closed on invalid public contrast colors #305

Description

@seonghobae

Current authoritative state

This public collaboration contrast-color contract is repaired on canonical single-writer Draft PR #167 / fix/collaboration-awareness-bounds-20260811. Protected shipped truth remains exact main@3b38ead2d00f44eb578d0689087b9293b3dabe1e; current exact Draft head is d8407c5fc65027233c880cae2d1f2d14d5261d91. Fresh exact comparison reports the branch diverged 54 ahead / 29 behind, merge base 50ac98cfa0ad9e8dd75f93ca437a5679fed4d804, across 19 awareness/docs/test paths. This is active-PR truth only.

Current contrastingTextColor() validates runtime input before channel slicing/parsing: only exact #[0-9a-fA-F]{6} strings are accepted. Non-string, shorthand, non-hex, alpha, color-name and other malformed values fail closed with stable payload-redacted RangeError('collaboration contrast color must be a six-digit hexadecimal color'). Accepted lowercase/uppercase six-digit tokens retain the existing WCAG relative-luminance computation and threshold. Remote cursor rendering remains separate: untrusted awareness colors are descriptor-read and restricted to the same grammar, otherwise the existing safe fallback is used.

The same canonical lane now additionally contains host-awareness capability/count failures, scoped-provider disposal failures, and direct listener registration/removal failures. Current head redacts host callback errors and preserves retry/cleanup state; those reliability repairs do not change this public color grammar or luminance calculation. Remote awareness remains untrusted presentation data and no transport, persistence, auth, tenancy, credentials, network, model/provider, migration, retention, deployment or durable-audit authority moved into Inkspan.

Exact-current-head evidence

For unchanged exact head d8407c5fc65027233c880cae2d1f2d14d5261d91:

  • CI 32221759117: completed / success, including exact 100% root coverage, package consumers, demo build, Office Python 3.11–3.14 and Playwright 1.62.0 cross-engine evidence;
  • Security Scan 32221759122: completed / success;
  • SAST Semgrep 32221759109: completed / success;
  • formal submitted reviews: 0;
  • unresolved review threads: 0;
  • GitHub reports the Draft mechanically mergeable.

Repository technical success is not qualifying independent approval. Predecessor, pending, queued, in-progress, skipped, cancelled, absent, stale, status-only or model-only evidence remains non-passing.

Integration boundary

The defect is active-PR repaired behavior only and is not protected-main shipped truth. Keep this issue open until #167 integrates under then-live governance. Keep #167 Draft/unmerged while #118 owns protected v0.6.0 publication/provenance/digest acceptance. Before lifecycle action refetch exact head/live base, ancestry, formal reviews/threads, live governance and every applicable workflow. Do not create a competing collaboration writer, self-approve, transfer predecessor evidence, weaken gates, move protected main, destructively reconcile the diverged branch, or fabricate release identity.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: accessibilityAccessibility and assistive-technology supportarea: authAuthentication, authorization, identity, or tenant isolationarea: ci-cdCI, GitHub Actions, checks, release, or supply chainarea: securitySecurity boundary, hardening, or vulnerability preventionpriority: mediumNormal-priority or P2 workstatus: triagedOpen issue has an organization taxonomy assignmenttype: bugDefect or incorrect behavior

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions