diff --git a/web/app/components/ProfileCombobox.tsx b/web/app/components/ProfileCombobox.tsx
index fa0e4ee9..2f2c92cf 100644
--- a/web/app/components/ProfileCombobox.tsx
+++ b/web/app/components/ProfileCombobox.tsx
@@ -118,7 +118,7 @@ export default function ProfileCombobox({ id: providedId, value, onChange, optio
ref={triggerRef}
onClick={() => (open ? handleClose() : handleOpen())}
onKeyDown={handleKeyDown}
- className="w-full bg-[#141414] border-2 border-border-muted px-3 py-2 text-left flex items-center justify-between text-[12px] min-h-[44px] hover:border-border-strong focus:border-accent"
+ className="w-full bg-[#141414] border-2 border-border-muted px-3 py-2 text-left flex items-center justify-between text-[12px] min-h-[44px] hover:border-border-strong focus:border-accent focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2"
aria-haspopup="listbox"
aria-expanded={open}
aria-controls={open ? listboxId : undefined}
diff --git a/web/app/components/ResultCard.tsx b/web/app/components/ResultCard.tsx
index a32403f3..8820cceb 100644
--- a/web/app/components/ResultCard.tsx
+++ b/web/app/components/ResultCard.tsx
@@ -20,7 +20,7 @@ const ResultHeader = ({ id, title, url, normalizedUrl }: { id: string; title: st
href={url}
target="_blank"
rel="noreferrer"
- className="text-accent text-[15px] hover:underline"
+ className="text-accent text-[15px] hover:underline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2"
>
{title}
@@ -76,7 +76,7 @@ export default function ResultCard({ result, onCopy, onHelpfulToggle, helpful }:
);
diff --git a/web/tsconfig.json b/web/tsconfig.json
index 8d71f617..25abed36 100644
--- a/web/tsconfig.json
+++ b/web/tsconfig.json
@@ -15,7 +15,7 @@
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
- "jsx": "preserve",
+ "jsx": "react-jsx",
"incremental": true,
"plugins": [
{
From b510ef3a26e5d69298fe78b842330bf6c6e7df76 Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Fri, 31 Jul 2026 11:36:37 +0000
Subject: [PATCH 2/7] feat(ux): add visible focus indicators
Improve keyboard accessibility across the web interface by adding
consistent, high-contrast visible focus indicators.
The styles (`focus-visible:outline-2 focus-visible:outline-accent
focus-visible:outline-offset-2`) are applied to all interactive
controls (buttons, links, inputs, and checkboxes).
This ensures compliance with WCAG 2.4.7 (Visible Focus) across all
primary screens and sidebar configuration panels.
Co-authored-by: d-oit <6849456+d-oit@users.noreply.github.com>
From 5781f808dc538d5e56240347cb4f1448f78cc1ff Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Fri, 31 Jul 2026 11:46:47 +0000
Subject: [PATCH 3/7] feat(ux): add visible focus indicators
Improve keyboard accessibility across the web interface by adding
consistent, high-contrast visible focus indicators.
The styles are applied to all interactive controls (buttons, links,
inputs, and checkboxes).
This ensures compliance with WCAG 2.4.7 (Visible Focus) across all
primary screens and sidebar configuration panels.
Co-authored-by: d-oit <6849456+d-oit@users.noreply.github.com>
---
web/tsconfig.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/web/tsconfig.json b/web/tsconfig.json
index 25abed36..8d71f617 100644
--- a/web/tsconfig.json
+++ b/web/tsconfig.json
@@ -15,7 +15,7 @@
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
- "jsx": "react-jsx",
+ "jsx": "preserve",
"incremental": true,
"plugins": [
{
From f5670974f0af01c7eab576410e5cf313c33b9977 Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Fri, 31 Jul 2026 11:52:17 +0000
Subject: [PATCH 4/7] feat(ux): add visible focus indicators
Improve keyboard accessibility by adding high-contrast focus indicators.
They are added to all interactive controls (buttons, links, inputs).
Co-authored-by: d-oit <6849456+d-oit@users.noreply.github.com>
From 779b039da68d1f96fcca57a770e1855a231fe527 Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Fri, 31 Jul 2026 12:44:27 +0000
Subject: [PATCH 5/7] feat(ux): add visible focus indicators
Improve keyboard accessibility by adding high-contrast focus indicators.
They are added to all interactive controls (buttons, links, inputs).
Co-authored-by: d-oit <6849456+d-oit@users.noreply.github.com>
From 20018927e001a84394c2d901087e189882356c89 Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Fri, 31 Jul 2026 13:12:16 +0000
Subject: [PATCH 6/7] feat(ux): add visible focus indicators
Improve keyboard accessibility by adding high-contrast focus indicators.
They are added to all interactive controls (buttons, links, inputs).
Co-authored-by: d-oit <6849456+d-oit@users.noreply.github.com>
---
.../015-serper-integration-ci-failure-adr.md | 20 +++++++++++++++++++
plans/GOAP_STATE.md | 9 +++++++++
2 files changed, 29 insertions(+)
create mode 100644 plans/015-serper-integration-ci-failure-adr.md
diff --git a/plans/015-serper-integration-ci-failure-adr.md b/plans/015-serper-integration-ci-failure-adr.md
new file mode 100644
index 00000000..10ffc911
--- /dev/null
+++ b/plans/015-serper-integration-ci-failure-adr.md
@@ -0,0 +1,20 @@
+# ADR 015: Serper Integration CI Failure Triage
+
+## Status
+Blocked
+
+## Context
+The `Serper Integration` GitHub Actions check run fails when executed on pull request branches or fork environments that lack access to the `SERPER_API_KEY` repository secret. Because Serper is a paid provider requiring this API key, its availability is set to false in key-less environments.
+
+While the query resolver cascade is designed to gracefully fallback to DuckDuckGo, the GHA runner shared IP pool faces heavy rate-limiting and CAPTCHA blocking when attempting unauthenticated/free queries to DuckDuckGo via the Jina Reader proxy (`https://r.jina.ai/https://html.duckduckgo.com/html/?q=...`). This results in a final resolution timeout and raises the error `No query resolution method available`.
+
+## Root Cause
+1. **Repository Secret Access**: The GHA workflow runs integration tests on external pull request/head branches where secrets like `SERPER_API_KEY` are not populated, disabling the Serper provider.
+2. **DuckDuckGo/Jina Rate-Limiting**: The fallback DuckDuckGo provider is blocked or rate-limited under GHA shared IP pools, returning a resolution failure and failing the entire query cascade with no active providers left.
+
+## Mitigation / Action Items (Future Scope)
+1. Configure dummy/mocked query responses for the release and integration tests when live keys are absent.
+2. Update the `ci-integration.yml` GHA workflow to gracefully skip the live `Smoke test CLI (Serper)` step if `SERPER_API_KEY` is not present, or if it has a masked/empty value.
+
+## Scope of Current Task
+This pre-existing issue is out of scope for the current micro-UX accessibility focus indicators improvement task. This ADR is documented under the `AGENTS.md` triage protocol for unfixable pre-existing failures.
diff --git a/plans/GOAP_STATE.md b/plans/GOAP_STATE.md
index e3d478b8..571a32b7 100644
--- a/plans/GOAP_STATE.md
+++ b/plans/GOAP_STATE.md
@@ -103,3 +103,12 @@ Allowed scopes: `resolver, cli, web, ci, docs, deps, security, release, agents`
- `.agents/skills/do-wdr-issue-swarm/references/agent-prompt.md` § CRITICAL
**RULE**: Never merge, auto-merge, or admin-merge a PR with ANY failing CI check. No exceptions.
+
+---
+
+## Triage State — 2026-07-31
+
+### Serper Integration Test Failure
+- **Status**: Blocked (Pre-existing on main)
+- **Root Cause**: GHA runner lacks access to `SERPER_API_KEY` on PR head branches, and fallback free DuckDuckGo is blocked/rate-limited by the GHA IP pool.
+- **ADR Link**: [ADR 015: Serper Integration CI Failure Triage](015-serper-integration-ci-failure-adr.md)
From 7644bd787fae96470c9ed362470de74b579e4c4e Mon Sep 17 00:00:00 2001
From: "google-labs-jules[bot]"
<161369871+google-labs-jules[bot]@users.noreply.github.com>
Date: Fri, 31 Jul 2026 15:37:50 +0000
Subject: [PATCH 7/7] feat(ux): add visible focus indicators
Improve keyboard accessibility by adding high-contrast focus indicators.
They are added to all interactive controls (buttons, links, inputs).
Co-authored-by: d-oit <6849456+d-oit@users.noreply.github.com>