Skip to content

fix(web): operator UI a11y fixes + peer-facts parity checkpoint (1.2, unreleased)#5

Merged
tachyon-beep merged 4 commits into
mainfrom
feat/lacuna-peer-facts-tour-cli-parity
Jun 28, 2026
Merged

fix(web): operator UI a11y fixes + peer-facts parity checkpoint (1.2, unreleased)#5
tachyon-beep merged 4 commits into
mainfrom
feat/lacuna-peer-facts-tour-cli-parity

Conversation

@tachyon-beep

Copy link
Copy Markdown
Contributor

Summary

Brings the outstanding feat/lacuna-peer-facts-tour-cli-parity branch onto main. All additive and backward-compatible; targets the unreleased 1.2 (no version bump, not yet published). Four commits across three threads:

  • 9f00ae0 — Operator UI UX + a11y overhaul. Adopts the site-kit design tokens; contrast, focus-ring, and target-size fixes across the web operator UI.
  • 4c12d7f — Docs. Web UX design review, arch-analysis refresh, handoffs.
  • 6c0f89a — Peer-facts CLI/MCP parity checkpoint. Product metrics, state checkpoint, and PDR-015 for the peer-facts CLI parity (the parity code already landed on main; recorded under CHANGELOG [Unreleased]).
  • a15adb1 — Web a11y review fixes (this session):
    • Visited primary links readable. The global a:visited rule (specificity 0,1,1) outspecified .btn--primary (0,1,0), flipping the "New requirement" link's text to --link on the brass fill (~1.7:1 — fails WCAG AA) once visited. Re-asserts --text-on-accent for anchor primaries at higher specificity. Plain <button> primaries are unaffected (no :visited state).
    • Toasts dismiss on every page. The auto-dismiss timer was nested inside review.html's .qi-actions focus guard, so the confirm-step queue flows (drifted-accept, reject, draft-approve) — whose forms sit outside .qi-actions — and the requirement dossier (which loads no page script) left the success toast on screen indefinitely. Moved the dismiss to base.html so it fires whenever #toast is filled; review.html keeps only its focus management.

Verification

  • make ci green locally: ruff + mypy (strict), 378 passed, 91.14% coverage (≥90% gate).

🤖 Generated with Claude Code

tachyon-beep and others added 4 commits June 28, 2026 13:42
Resolves the 9 Major findings (+ folded Minors) from the 2026-06-28 operator
web-UI design review of the server-rendered Starlette/HTMX surface:

- Adopt site-kit linen/ink/brass tokens (closes brand drift); style banners,
  queue cards, type badges, primary vs secondary buttons, .muted/.warn/.big-number.
- Full-page error chrome on navigation, bare fragment on HX-Request; the global
  pending-badge context processor is failure-safe so a launch-time ctx failure
  can no longer naked-500 the error page (regression caught in review, now tested).
- 44px action targets; eliminate 320px horizontal reflow; drift badge 3.39->5.11:1.
- Global pending-review badge on every page (Jinja context processor).
- Intent orphans as linked titles (zero-count sections hidden); Corpus
  New-requirement affordance; visible auto-dismissing success toast; confidence
  low/med/high chips; explicit focus-visible ring.
- Tests for the new behavior. make ci green (91.14% coverage), wardline clean.

Also includes pre-existing working-tree edits bundled per request: legis
instructions marker bump in AGENTS.md/CLAUDE.md (v1.1.1->v1.3.0) and .gitignore
ignoring .wardline/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- docs/handoffs/2026-06-28-web-ux-design-review.md: the operator web-UI design
  review (Playwright-driven, with the same-day resolution note recording the fixes).
- docs/handoffs/2026-06-28-lacuna-peer-facts-tour-demos-tasking.md: lacuna handoff.
- docs/arch-analysis-2026-06-28-0751/ replaces docs/arch-analysis-2026-06-21-1754/:
  a refreshed system-archaeologist run (concurrent output, not part of the web work;
  included per request to commit all changed files).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e checkpoint; PDR-015

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ry page

Two a11y review fixes on the operator UI:

- Visited primary anchors: the global `a:visited` rule (0,1,1) outspecified
  `.btn--primary` (0,1,0), flipping the "New requirement" link's text to --link
  on the brass fill (~1.7:1, fails WCAG AA) after navigation. Re-assert
  --text-on-accent for anchor primaries at higher specificity. Plain <button>
  primaries are unaffected (no :visited state).

- Stuck success toast: the auto-dismiss timer lived inside review.html's
  `.qi-actions` focus guard, so the confirm-step flows (drifted-accept, reject,
  draft-approve) — whose forms sit outside .qi-actions — and the requirement
  dossier (which loads no page script at all) left the toast on screen forever.
  Moved the dismiss to base.html so it fires on any page when #toast is filled;
  review.html keeps only its focus management.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@tachyon-beep tachyon-beep merged commit 1467856 into main Jun 28, 2026
1 check passed
@tachyon-beep tachyon-beep deleted the feat/lacuna-peer-facts-tour-cli-parity branch June 28, 2026 09:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant