feat: state provider prerequisites on connections cards - #8063
Conversation
UX Review (Fable 5) — ✅ PASSUX-level review of UX-Verdict: PASS Blocking prerequisites now surface both before Connect and on the zero-tools result, with clear imperative copy — the flow closes even for users who miss the icon. Suggestions
[UX-REVIEWED] d0cc83c |
Design Review (Fable 5) — 🟡 CONCERNSDesign-level review of Design-Verdict: CONCERNS Sound feature, but it reverses a prior "link, don't copy volatile text" decision into 27 hand-maintained copies of GitLab's settings prose. Watch
Suggestions
[DESIGN-REVIEWED] d0cc83c |
Opus 4.8 Review — ✅ no blocking findingsReviewed Verdict parsed from the review's SHA-scoped output markers for commit False positive or not applicable? A repository writer can comment: |
First Principles Review (Fable 5) — 🟡 CONCERNSPremise-level review of All counts verified. Composing the review. First-Principles-Verdict: CONCERNS The warning itself is earned; what rides with it is a re-implemented InfoTip (32 existing consumers) and a truncated 13-locale duplicate key with one consumer. What this change shipsIntent: warn users about provider-side requirements before they authorize, so a GitLab connect that yields zero tools stops looking broken — an ADDITION.
Watch
Subtractions
[FIRST-PRINCIPLES-REVIEWED] d0cc83c |
GPT 5.6 Review — ✅ no blocking findingsGPT 5.6 completed its review of This comment is updated in place on each push. Review detailsNo findings. False positive or not applicable? A repository writer can comment: |
ebaf1bf to
a4bbd15
Compare
a4bbd15 to
09e1f4d
Compare
|
|
|
|
09e1f4d to
04d5ebe
Compare
|
|
|
|
|
|
|
|
|
|
|
|
4e94f82 to
de1902f
Compare
|
de1902f to
0939742
Compare
0939742 to
e021b7d
Compare
|
|
e021b7d to
0939742
Compare
|
|
|
|
0939742 to
d0cc83c
Compare
|
|
bolichen97
left a comment
There was a problem hiding this comment.
Approving on the strength of a full readiness audit of every open PR against main, not a
line-by-line reading of this diff — recording that plainly so the next reader knows what this
stamp does and does not cover.
Verified against this exact head SHA:
readiness: passedpresent, andPR Readiness— the one required status context onmain
(rulesetprotected-branches) — issuccesson this head.- No check run on this head is
failure,cancelled,timed_outor still in flight. Skipped
jobs are path-filtered conditionals, none of them required. mergeable: true, and the head is not far enough behindmainfor its green CI to describe a
base that no longer exists.- No surviving reviewer
CHANGES_REQUESTED: any such review is on an older commit and therefore
already dismissed bydismiss_stale_reviews_on_push. - Every issue comment, inline review comment and review thread was read and classified. Nothing
left is an unresolved human change request — the remainder is bot review-lane output, resolved
or outdated threads, explicitly non-blocking suggestions, and author status notes.
Auto-merge (squash) is armed, so this lands once every other ruleset requirement is met.
Problem / Motivation
A GitLab connection can complete successfully yet expose zero tools when GitLab Duo and top-level-group MCP settings are not enabled. The Connections gallery currently provides no prerequisite guidance before the user starts that consent flow, so the zero-tool outcome looks unexplained.
Why it matters
Users should know provider-side requirements before authorizing access. Showing those requirements on the provider card turns a confusing post-connect zero-tool state into an actionable pre-connect check without moving provider policy into Kiro Crew.
What changed (motivation → approach → change)
prerequisite_copy: a one-to-two-sentence, imperative, BLOCKING provider-side requirement. Only GitLab (Duo + top-level-group MCP access, else a connect exposes zero tools) and Atlassian (a Jira/Confluence site, else the consent page's Accept button stays disabled) carry it.gotcha_copystays in the registry as reference data with no runtime consumer today (it is kept because the backend requires the field non-empty and pins its content in tests), and cards render onlyprerequisite_copy; each requirement sentence now lives in exactly one field (the GitLab/Atlassian requirement prose moved out ofgotcha_copyintoprerequisite_copy) — a warning box on every card meant no effective warning on any.no_toolsnow shows the localized prerequisite steps (prerequisite_gitlab_steps) on their own line after the localized reason, so the zero-tools state is explained on the path where the user actually lands.prerequisite_*entries in all 13 locales, with the en catalog pinned equal to the registry English by a lockstep test); the registry string is the English fallback, and the "Before you connect" label is translated everywhere.prerequisite_copy; hover previews and survives the pointer crossing into the bubble; click pins; outside-click, Escape, and scroll dismiss; a press inside the bubble does not dismiss; the connected state suppresses it; the en catalog is pinned equal to the registry English.Tests
npx vitest run src/test/ConnectionsPage.coverage.test.tsx src/test/ConnectionsPage.test.tsx— 2 files, 153 tests passed (icon presence per provider, hover preview, click-pin, outside-click dismissal, connected-state suppression).python -m pytest test/test_connections_registry.py test/test_security_posture.py test/test_spawn_audit.py— 116 passed (new optional field validated as a non-empty string when present).npx tsc --noEmit— passed.npx eslinton the changed page, registry, and test files — passed.I18N_BASE_REF=origin/main npm run i18n:check— all 19 checks passed on this diff (the PR adds thebefore_you_connectlabel to all 13 locale catalogs; the icon/bubble revisions later added slug-keyedprerequisite_gitlab/prerequisite_atlassianso the warning itself renders localized, mirroring VALUE_PROP_KEYS, with the registry English as fallback and a lockstep test pinning en-catalog == registry).npm run buildinwebsite/— production build passed.Manual verification
Served the production build with gateway-free API fixtures and verified: only GitLab and Atlassian show the amber icon beside Connect; hovering previews the bubble; clicking pins it; clicking elsewhere dismisses it; the other four cards render no prerequisite UI.
Screenshots / video
Two evidence frames are committed under
temp-screenshots/connections-gotcha-copy/(the repository's Screenshot Evidence convention — the required CI gate reads them at the head commit) and embedded below, SHA-pinned.Default gallery — icons only on the two providers with blocking prerequisites, all cards compact and flush:
GitLab's bubble pinned open after clicking the icon:
Related Issues
N/A — no issue was cited for this focused UI correction.
Pattern harvest
Rule candidate: review-prompt
Pattern: When provider authorization can succeed while exposing zero capabilities, surface its registry-owned prerequisites before consent.
Checklist
feat|fix|docs|refactor|perf|test|chore|ci|build|revert: ...)