feat(connections): register Superhuman Mail as a launch-gated provider - #8239
Conversation
Design Review (Fable 5) — ✅ PASSDesign-level review of Design-Verdict: PASS Registry-derived allowlist entry plus a mechanical invariant test is exactly the shape the #5967 review asked for; gating hides the unverified UI surface. Suggestions
[DESIGN-REVIEWED] 1470d71 |
Opus 4.8 Review — ✅ no blocking findingsReviewed Review detailsNo findings. The lone candidate is self-admittedly ungrounded: its (a) is the hypothetical "if Superhuman's real authorize path is not exactly [OPUS-REVIEWED] 1470d71 Verdict parsed from the review's SHA-scoped output markers for commit False positive or not applicable? A repository writer can comment: |
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: |
First Principles Review (Fable 5) — ✅ PASSPremise-level review of First-Principles-Verdict: PASS The reconnect defect gets a registry-derived fix plus a mechanical test that turns this defect class from point patches into an enforced invariant. What this change shipsIntent: make an expired Superhuman Mail MCP token reconnectable through the OAuth consent banner — a FIX, delivered via the registry route its predecessor #5967 was blocked for skipping.
The zero option for item 2 (allowlist entry alone) is exactly what the recorded #5967 review rejected and what the code comment forbids — not relitigated. The operator [FIRST-PRINCIPLES-REVIEWED] 1470d71 |
Reconnecting a Superhuman Mail MCP server fails at the OAuth consent banner once its token expires: the banner gate exempts OAuth entropy only at an exact (host, path) in the builtin allowlist, and Superhuman's authorization server was not in it. The builtin set is defined as derived from the Connections registry, so rather than allowlisting a provider the product does not ship, this registers Superhuman Mail as a provider and adds its MCP authorization server alongside. The entry is launch-gated (launch_gate_passed=false, like GitHub): it is in the registry, the L0 probe verifies its public OAuth metadata (DCR + PKCE S256, issuer mcp.auth.mail.superhuman.com), and the allowlist entry unblocks reconnect for hand-configured servers today -- but the Connect card stays hidden until a Business-plan account records the revoke surface and walks the consent flow. The revoke note says so verbatim. A registry test now pins the derivation rule: every provider's issuer host must have a builtin allowlist entry, gated or not. Co-authored-by: Deepak Singh <mndoci@gmail.com>
1a83c9f to
1470d71
Compare
Open PR relationship auditThis is a consolidated, point-in-time code-level audit note. It compares complete merge-base diffs and current/merged code; it does not treat a shared topic as duplication or partial coverage as completion. Relationship findings
No PR, Issue, label, branch, or review state was changed by the relationship-note portion of this audit. |
Problem / Motivation
Reconnecting a Superhuman Mail MCP server fails at the OAuth consent banner once its token expires:
The banner gate exempts OAuth entropy (
state, PKCE) only at an exact(host, path)in the builtin_OAUTH_AUTHORIZATION_ENDPOINTS, and Superhuman's MCP authorization server was not in it. PR #5967 (@mndoci) proposed adding the allowlist entry alone; the First Principles lane blocked it because the builtin set is defined as derived from the Connections registry, and Superhuman was not a registry provider.What this does
Takes the registry route the review pointed at, so the allowlist entry becomes derived rather than an exception:
src/kiro_crew/connections/registry.json):mcp_urlhttps://mcp.mail.superhuman.com/mcp, issuerhttps://mcp.auth.mail.superhuman.com, DCR + PKCE S256 — all taken from the provider's live RFC 9728 / RFC 8414 metadata and confirmed by the L0 probe (l0_probereportsok: trueforsuperhuman).("mcp.auth.mail.superhuman.com", "/oauth2/authorize")), carrying over the corpus sample and the four gate tests from feat(security): allowlist Superhuman MCP OAuth authorization endpoint #5967 (co-authored).launch_gate_passed: false, same posture as GitHub): the provider is in the registry and reconnect works today for a hand-configured server, but the Connect card stays hidden. Therevoke_verified_notestates plainly that no Business-plan account was available to verify the revoke surface.Un-gating checklist (follow-up, needs a Superhuman Business/Enterprise account)
revoke_page_url(+revoke_manual_pathif it is a settings modal) and refreshrevoke_verified_on/revoke_verified_note.list_labelsis advertised bytools/list.launch_gate_passedtotrue, movesuperhumanout ofLAUNCH_GATEDin the registry test, and add a brand mark inwebsite/src/pages/connections/ProviderLogo.tsx+ avalue_prop_superhumancatalog string (both currently fall back to the lettered tile / generic blurb, so nothing is required while gated).Relationship to #5967
Supersedes the allowlist-only change in #5967 by landing the same entry as a registry-derived one. Once this merges, #5967 can be closed as superseded (its author is credited via
Co-authored-by), or rebased if the maintainer prefers to keep it as the vehicle.Testing
Targeted local runs on
test/test_connections_registry.py,test/test_mcp_oauth_banner.py,test/test_connections_tool_aliases.py,test/test_connections_l0_probe.py(581 passed) and a livepython -m kiro_crew.connections.l0_proberun (all 8 providersok). Full gates are left to CI per the maintainer's request.No UI change: the new provider is launch-gated and never rendered.
no linked issue: originates from PR #5967's review outcome (First Principles BLOCK asking for a registry-derived entry), not from a filed issue.