fix(gates): typecheck gates green; the sheet's Tab loop no longer walks out (train 11-05) #971

Closed
kayg wants to merge 0 commits from fix/gates-svelte-check-1105 into dev
Owner

Found by the daily train 2026-11-05 on dev head 789fdaa90 (all four items fail there; the first two fail on prod 12103f1c too).

  1. bun run check failed: actions.gen.ts was not regenerated after 725613477 added owner_id to notes.get (one line, exactly the generator's output).
  2. svelte-check reported 2 errors in e2e/review4-signout.spec.ts (a value set in a callback was narrowed to null); now read through a typed const.
  3. a11y-high.spec.ts Style failed in every project (chromium and webkit, 1440 and 390). Cause is a real bug in the shared Tab loop (packages/ui/src/lib/dialog-focus.ts, from #946): its TABBABLE list counts buttons with tabindex="-1" (the other options of the Text / Page group), so "first" was not a real Tab stop and Shift+Tab from the real first stop was not wrapped and left the sheet for the note's text.
  4. The spec also counted Tabs before the sheet had built its page (a second or more on a software-drawn WebKit), so it passed only when it ran too early. It now waits for the sheet's controls first (readiness, not speed).

Checked on this branch (116dc5cab): bun run check and svelte-check 0 errors; a11y-high.spec.ts x10 at 1440 and 390: Chromium 120/120, WebKit 119/120 (one run at webkit-390 where the Style dialog did not open after Enter, a different flake, tracked in the train issue); review4-signout.spec.ts Chromium 22/22, WebKit 20/20; packages/ui primitives unit and both-browser e2e pass.

Not merged by me. Gate numbers are in the train issue.

🤖 Generated with Claude Code

Found by the daily train 2026-11-05 on dev head 789fdaa90 (all four items fail there; the first two fail on prod 12103f1c too). 1. `bun run check` failed: `actions.gen.ts` was not regenerated after 725613477 added `owner_id` to `notes.get` (one line, exactly the generator's output). 2. `svelte-check` reported 2 errors in `e2e/review4-signout.spec.ts` (a value set in a callback was narrowed to `null`); now read through a typed const. 3. `a11y-high.spec.ts` Style failed in every project (chromium and webkit, 1440 and 390). Cause is a real bug in the shared Tab loop (`packages/ui/src/lib/dialog-focus.ts`, from #946): its TABBABLE list counts buttons with `tabindex="-1"` (the other options of the Text / Page group), so "first" was not a real Tab stop and Shift+Tab from the real first stop was not wrapped and left the sheet for the note's text. 4. The spec also counted Tabs before the sheet had built its page (a second or more on a software-drawn WebKit), so it passed only when it ran too early. It now waits for the sheet's controls first (readiness, not speed). Checked on this branch (116dc5cab): `bun run check` and svelte-check 0 errors; `a11y-high.spec.ts` x10 at 1440 and 390: Chromium 120/120, WebKit 119/120 (one run at webkit-390 where the Style dialog did not open after Enter, a different flake, tracked in the train issue); `review4-signout.spec.ts` Chromium 22/22, WebKit 20/20; `packages/ui` primitives unit and both-browser e2e pass. Not merged by me. Gate numbers are in the train issue. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
contracts/actions.json gained notes.get owner_id but the generated types were not refreshed, so 'bun run check' failed on dev and prod.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
TypeScript narrowed the callback-assigned value to null, so svelte-check reported two errors. Same behaviour.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The Style sheet builds its page a frame after it opens (a second or more on a software-drawn WebKit). Tabs pressed before then had nothing to land on, and the page arriving mid-loop swapped the dialog under focus: 7 of 10 runs failed on dev. Readiness wait, no timing assertion.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
fix(a11y): the sheet's Tab loop ignores tabindex=-1 buttons as its ends
Some checks failed
CI / server (pull_request) Has been cancelled
CI / rust (pull_request) Has been cancelled
CI / web (pull_request) Has been cancelled
Markdown extraction contract / markdown-native-contract (pull_request) Has been cancelled
Markdown extraction contract / markdown-editor-contract (pull_request) Has been cancelled
116dc5cabf
TABBABLE matches every enabled button, so the unselected options of a roving-tabindex group (Text / Page in the Style sheet) counted as the first stop. Shift+Tab from the real first stop was then not wrapped and left the sheet for the note's text (a11y-high Style failed at Shift+Tab #8-#15 once the sheet's page was built).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Author
Owner

Merged into dev by the orchestrator. Also in release/2026-11-05 (D + #971) for tonight's deploy.

Merged into dev by the orchestrator. Also in release/2026-11-05 (D + #971) for tonight's deploy.
kayg closed this pull request 2026-11-05 21:00:10 +00:00
Some checks failed
CI / server (pull_request) Has been cancelled
CI / rust (pull_request) Has been cancelled
CI / web (pull_request) Has been cancelled
Markdown extraction contract / markdown-native-contract (pull_request) Has been cancelled
Markdown extraction contract / markdown-editor-contract (pull_request) Has been cancelled

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal!971
No description provided.