Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
| 2026-08-31 | gemini/pr-group-3-ui-a11y-caring-contacts-ward-flow (PR #2479) | 8ff3f26c6e4f5302c1883f940f4cc1b22fbeec5c | Run PR sweep: existing unresolved review threads | 0 → 2 threads resolved: useful-actions disclosure semantics, workspace route registration assertion | Focused Vitest 18/18; typecheck passed; no provider-backed checks run |
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
| 2026-08-27 | ds-hazard-1-2-sweep | 19ee085b1cc952e8c40e893fb2fce99538415259 | design-system | Findings — 0 P0/P1; 4 structural P2 (disabled-send border jump, hero leading on composer, --leading-prose on chrome, stale conventions.md per-step type scale); residuals on specifier focus ring and leftover Lucide sizes | read-only origin/main...HEAD token/UI/docs inspection; ledger lookup NOT REVIEWED; no contract gate, browser, or providers |
5 changes: 5 additions & 0 deletions docs/caring-contacts/interaction-matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ The source of truth is `completionOverlayDefinitions` in `src/components/caring-
| `team-switcher` | Header active-team context | Bottom sheet | Dialog | Yes | Escape, backdrop, close |
| `draft-version-conflict` | Draft/version guard | Full-screen stage | Dialog | No | Escape, backdrop, close |

## Dismissal model

- **Standard dismissals (`Escape, backdrop, close`):** Standard modal overlays and inspection drawers allow clinician dismissal via pressing the `Escape` key, clicking the backdrop, or activating the close/cancel button. Closing restores focus to the triggering element.
- **System gate dismissals (`Recovery action only`):** Non-dismissible blocking gates (such as `session-expiry` and `offline-banner`) deliberately disallow passive dismissal (`Escape`, backdrop tap, or close icon). They persist until the explicit recovery action is completed (e.g. re-authenticating at the session gate or regaining network connectivity).

## Feedback contract

- Success: announce the synthetic in-memory outcome and update the visible plan/audit summary.
Expand Down
68 changes: 39 additions & 29 deletions docs/design-system/GATES.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "0e0c8272-b098-4cce-9a19-04450b931432",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "9e88c6de-2225-4134-888c-aec117a116e7",
"reason": "Target issue is no longer in Open items on current main; cancel stale PR-bundled done request so check:docs-links can dry-apply the pending inbox."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "1742520a-b0d1-4d65-98bf-719f030e98d2",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "45fe36c1-2d0b-47d2-afc4-f449b7dc3c84",
"reason": "Superseded by an earlier pending done request already on main for the same issue; keep main claim and drop this PR duplicate to unblock check:docs-links mutation conflicts."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "256a5104-df13-44d3-9734-645e08b2b0df",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "97bbfd51-435b-4e31-b956-7138753eb0a8",
"reason": "Target issue is no longer in Open items on current main; cancel stale PR-bundled done request so check:docs-links can dry-apply the pending inbox."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "272880e4-0cc3-4522-9422-1c152a6d838d",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "932b96f8-6af8-48a2-aeac-d78d5bb506a9",
"reason": "Superseded by an earlier pending done request already on main for the same issue; keep main claim and drop this PR duplicate to unblock check:docs-links mutation conflicts."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "356a1eb2-70c3-4303-bf98-4af30d9502ce",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "b2d0158c-09c0-441e-97af-fac42cbe5f12",
"reason": "Superseded by an earlier pending done request already on main for the same issue; keep main claim and drop this PR duplicate to unblock check:docs-links mutation conflicts."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "368839d5-3ef0-46d4-94bc-b9d93842490c",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#WP76E6",
"outcome": "Added Dismissal model section to docs/caring-contacts/interaction-matrix.md.",
"baseRowFingerprint": "65cc614bf14e8c4870e38772d8cfc19b0a86445fc867693d33175f85b4e40547"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "44b322b0-0a87-4564-878a-9d5ac97bcdc3",
"createdOn": "2026-08-31",
"action": "update",
"payload": {
"id": "#WG24JB",
"summary": "Ward Flow: spec D9: the discharge board is reachable only from the sidebar, not from the capacity board's own figures",
"baseRowFingerprint": "903eb9a8bb6f9b4260bb30cd316ee92c0bba163691bc18f5b5ab6df373cac650"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "45fe36c1-2d0b-47d2-afc4-f449b7dc3c84",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#V27DZ1",
"outcome": "Disambiguated ward-diagram-unplaced-unit-${unit.id} and ward-shortlist-unresolved-referred-badge in flow-diagram.tsx and shortlist-panel.tsx.",
"baseRowFingerprint": "b88d3e7a0476fe25c1ec7bbd16793ea48260961d03b022b7b3972e37bea0d8a0"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "461a406d-4937-41c2-afbb-64d1b75f4bcf",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#AGRAKQ",
"outcome": "Fixed regex in tests/helpers/caring-contacts-prohibited-language.ts to exclude plural job titles like clinical leads.",
"baseRowFingerprint": "44aac365c59873fd32faa0503d08df87d1e7b15cfc430b7e49b431d45441758b"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "6a1eb6b9-8a29-4f7c-89e3-6e5b9b498b3b",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "461a406d-4937-41c2-afbb-64d1b75f4bcf",
"reason": "Target issue is no longer in Open items on current main; cancel stale PR-bundled done request so check:docs-links can dry-apply the pending inbox."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "870d4673-65da-40b8-94ba-15ba3c6ec6db",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "b6d16549-d2cb-4815-9386-9c38854e7c0b",
"reason": "Target issue is no longer in Open items on current main; cancel stale PR-bundled done request so check:docs-links can dry-apply the pending inbox."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "932b96f8-6af8-48a2-aeac-d78d5bb506a9",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#HX1KSZ",
"outcome": "Added component metric boundary prohibition table row and §3c rule to docs/design-system/GATES.md.",
"baseRowFingerprint": "ed5a8c332d2a9d2fcddd33b2c94cee796a4dfb961310e13b4d86b8deab8eaad8"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "97bbfd51-435b-4e31-b956-7138753eb0a8",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#EG4Q7W",
"outcome": "Modularized postgres-repository.ts into 5 cohesive domain modules (core, plans, contacts, referrals-pathways, assignments-services) with full test suite passing.",
"baseRowFingerprint": "096bd2e935e5f687932b3cc401f87eaacf5ec5909c2d75ddaae6f15fdf5368a0"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "9e88c6de-2225-4134-888c-aec117a116e7",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#S4K1GA",
"outcome": "Documented Reduce Motion iPhone acceptance criteria in docs/search-chrome-behaviour.md.",
"baseRowFingerprint": "5676f5d83976cd86d804f66feba4e70edcd2a356c4d43a215f3aa642b1e5c7a0"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "b1630592-46f5-4e1a-aa03-97aa30e516af",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#0HYHTH",
"outcome": "Verified static prohibited vocabulary checks in tests/caring-contacts-interface-vocabulary.test.ts.",
"baseRowFingerprint": "08f9d018b80f1a0aca922377738235df2c8e2b61036f31f93ea5b645e3abfaf8"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "b2d0158c-09c0-441e-97af-fac42cbe5f12",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#PDM6NG",
"outcome": "Added screen registration parity test in tests/caring-contact-route-files.test.ts.",
"baseRowFingerprint": "67f4223645c79410173de09a6f9e537202e251b1bf3ac51145e45820762ba617"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "b6d16549-d2cb-4815-9386-9c38854e7c0b",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#61TZJA",
"outcome": "Verified PR #2199 merged and AWAITING_BASELINE in tests/ui-visual-baseline.spec.ts is empty.",
"baseRowFingerprint": "90c8990529b6cb0e6b91ec40c20229dcd937e83faf57a0c84ca7ba7ce56b13a8"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "c3cf6c59-298b-424e-90bf-9e2cdd9c559e",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#F5EYAJ",
"outcome": "Verified BLOCK_REASON_WORDING in overlay-host.tsx and DOM tests in tests/caring-contacts-overlay-host.dom.test.tsx.",
"baseRowFingerprint": "e599f5539a68a3a389052f391957c245716336654656f21193754fcf5bcff444"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "c5f2cb44-cd51-4acc-a9d1-40a5fc1c56a0",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "dc26c333-1935-47e8-ab71-b5206c84e19b",
"reason": "Superseded by an earlier pending done request already on main for the same issue; keep main claim and drop this PR duplicate to unblock check:docs-links mutation conflicts."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "c733065e-9076-4f43-a7b2-9e0b5d5dcedd",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "44b322b0-0a87-4564-878a-9d5ac97bcdc3",
"reason": "Superseded by an earlier pending done request already on main for the same issue; keep main claim and drop this PR duplicate to unblock check:docs-links mutation conflicts."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "c862828e-276c-4d90-829b-2c2b35e04274",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#59JT7W",
"outcome": "Verified resolveClosingContactMessageBody and tests/caring-contacts-message-policy.test.ts.",
"baseRowFingerprint": "35db31cbc98f2b2c4626258e7799465a1d6f2be5df2964e089feac7730cc9fdd"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "cd767916-0034-4e5a-b2db-276609d0deec",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "c862828e-276c-4d90-829b-2c2b35e04274",
"reason": "Target issue is no longer in Open items on current main; cancel stale PR-bundled done request so check:docs-links can dry-apply the pending inbox."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "d5ea0d4f-652f-480c-9a87-3be0ff7ef4b6",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "dba6b1fc-cb98-49e6-a035-8ca83946232a",
"reason": "Superseded by an earlier pending done request already on main for the same issue; keep main claim and drop this PR duplicate to unblock check:docs-links mutation conflicts."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "d6e41550-1a6a-4f4f-aff5-d95004011942",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#PWZYY8",
"outcome": "Added aria-hidden=\"true\" to icon call-sites and updated eslint-rules/require-lucide-icon-aria.mjs to cover Icon/ActiveIcon.",
"baseRowFingerprint": "da667e76e2022fb63e3ea55f8621433bde734f2367f1ce8eb62fe373ca5de62e"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "da5b168d-a9fa-475f-a456-867edfe3694c",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "368839d5-3ef0-46d4-94bc-b9d93842490c",
"reason": "Superseded by an earlier pending done request already on main for the same issue; keep main claim and drop this PR duplicate to unblock check:docs-links mutation conflicts."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "dba6b1fc-cb98-49e6-a035-8ca83946232a",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#76GGRG",
"outcome": "Implemented full WAI-ARIA Menu keyboard navigation with Arrow Up/Down/Left/Right/Home/End/Escape in search-pins-menu.tsx.",
"baseRowFingerprint": "5b609edac36991b6c776a54ded369741d417ca1b4f4fa768135de3a317ebea0d"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "dc26c333-1935-47e8-ab71-b5206c84e19b",
"createdOn": "2026-08-31",
"action": "done",
"payload": {
"id": "#1CYR4V",
"outcome": "Verified 640-767px overlay modal responsive boundary contract in tests/caring-contacts-overlay-host.dom.test.tsx.",
"baseRowFingerprint": "7aab6d7348f3c95e949b5ede740a365e13a77801bf4669745f5aba7c3a4c176a"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "e2c82b28-4e33-46cf-839e-d00ad26d35d7",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "f3288efd-b1b6-492f-9a4a-8b316e35fe71",
"reason": "Superseded by an earlier pending done request already on main for the same issue; keep main claim and drop this PR duplicate to unblock check:docs-links mutation conflicts."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": 2,
"id": "f3288efd-b1b6-492f-9a4a-8b316e35fe71",
"createdOn": "2026-08-31",
"action": "update",
"payload": {
"id": "#V27DZ1",
"summary": "Ward Flow: role screens intermittent Playwright strict-mode violation, a role screen's own test id resolves to 2 elements",
"baseRowFingerprint": "b88d3e7a0476fe25c1ec7bbd16793ea48260961d03b022b7b3972e37bea0d8a0"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "fa3a637d-a2b9-44b9-bdb9-eb23c912505a",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "c3cf6c59-298b-424e-90bf-9e2cdd9c559e",
"reason": "Superseded by an earlier pending done request already on main for the same issue; keep main claim and drop this PR duplicate to unblock check:docs-links mutation conflicts."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "fbfb32c2-6ca8-4504-adb5-b7647d1d9174",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "b1630592-46f5-4e1a-aa03-97aa30e516af",
"reason": "Target issue is no longer in Open items on current main; cancel stale PR-bundled done request so check:docs-links can dry-apply the pending inbox."
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": 2,
"id": "ff7bcba4-5dee-44b7-9b4f-a1aefdd9ab85",
"createdOn": "2026-08-31",
"action": "cancel",
"payload": {
"requestId": "d6e41550-1a6a-4f4f-aff5-d95004011942",
"reason": "Target issue is no longer in Open items on current main; cancel stale PR-bundled done request so check:docs-links can dry-apply the pending inbox."
}
}
4 changes: 3 additions & 1 deletion eslint-rules/require-lucide-icon-aria.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ const rule = {
},
JSXOpeningElement(node) {
if (node.name.type !== "JSXIdentifier") return;
if (!lucideValueImports.has(node.name.name)) return;
const isLucide = lucideValueImports.has(node.name.name);
const isIconIdentifier = node.name.name === "Icon" || node.name.name === "ActiveIcon";
if (!isLucide && !isIconIdentifier) return;
// A spread ({...props}) may inject aria-* dynamically — don't flag.
if (node.attributes.some((attr) => attr.type === "JSXSpreadAttribute")) return;
const declaresIntent = node.attributes.some(
Expand Down
Loading
Loading