fix: review follow-ups for the connector checks stack

Merged
EV
10h ago
+861-197

Description

Fixes for the review comments on the connector checks stack (#16201 to #16266). The fixes are in one PR at the top of the stack, so the PRs under it do not have to run CI again.

Row text and counts

  • GitHub: when every repository fails for different reasons, the row names each kind of failure (#16201).
  • Jira: counts of one use the singular. The four local _counted helpers (GitHub, HubSpot, SharePoint, Slack) are now one shared counted() in onyx/connectors/models.py (#16201).
  • Linear: the sign-in summary stays within 40 characters (#16201).
  • SharePoint: the library row shows "First N of M" only when the probe cap cut the list, not when a site returned 404 (#16202).
  • OneDrive: locked users (423) are reported apart from missing users. If every user is locked, the row is Incomplete (#16203).
  • Outlook: a group name that matches several groups reads as ambiguous, not as "No group matches" (#16204).

Outcomes

  • SharePoint: a certificate whose end date is past fails its row (#16202).
  • Outlook: the mail and calendar samples depend on the selected mailboxes and groups rows. One unreachable mailbox now fails one row, not three (#16204).
  • Generic row: the HTTP status and the Error Details follow the same exception chain (#16206).

Config formats

  • Confluence page IDs take ASCII digits only (#16205).
  • Notion page URLs must be on a Notion host, not a host that contains one (#16212).
  • SharePoint site URLs are checked for /sites/, /teams/ or /personal/ in the path only (#16212).

Draft runs and stored runs

  • A skipped, stopped or failed dependency makes a dependent's reused pass show "Not run". This honours both depends_on and depends_on_any (#16209).
  • A Re-run does not keep a stale skipped discovery check (#16209).
  • A stored run in progress shows its two-step rows from its progress, and open checks keep their row_id and step (#16210).

Tests

  • The wave test fails when the gateway check does not run beside the connector checks (#16259).

How Has This Been Tested?

  • Each fix has a focused unit test. Most of the new tests fail without their fix.
  • Unit tests: tests/unit/onyx/connectors and tests/unit/onyx/server, 7269 passed.
  • External dependency unit tests: tests/external_dependency_unit/connectors/capability_checks, 95 passed.
  • ruff, ty and pre-commit pass.

Additional Options

  • [Optional] Please cherry-pick this PR to the latest release version.
  • [Optional] Override Linear Check

🤖 Generated with Claude Code


Summary by cubic

Applies review follow-ups for the connector checks stack, focused on row text accuracy, check outcomes, config validation, and draft run dependency handling.

Row text and outcomes

  • GitHub names each failure kind when every repository fails for different reasons.
  • Jira uses singular count forms via a shared counted() helper in onyx/connectors/models.py.
  • Linear falls back to a short sign-in line when the email is too long.
  • OneDrive reports locked users (423) separately from missing ones; all locked stays Incomplete.
  • Outlook names a group matching several entries as ambiguous, and its samples run after the selected-scope checks; when nothing is selected those checks do not apply and the samples still run.
  • SharePoint shows the probe cap only when it cut the list, expired certificates fail their row, and _gateway() reads its cached Graph gateway once so a concurrent REST rebuild cannot return None.
  • The generic row's HTTP status and Error Details now follow the same exception chain.

Draft runs, config validation, and tests

  • A reused pass shows "Not run" when a dependency is skipped, stopped, or failed, honoring depends_on and depends_on_any once every member has a result.
  • Re-runs don't keep stale skipped discovery checks; stored runs in flight show rows from their progress.
  • Confluence page IDs take ASCII digits only, Notion URLs must be on a Notion host, and SharePoint site markers are checked in the URL path only.
  • The wave test fails when the gateway check doesn't run alongside the connector checks.

Summary by CodeRabbit

  • Capability Checks

    • In-progress checks now display active steps accurately.
    • Dependent checks are re-evaluated and marked “Not run” when prerequisites fail or are skipped.
    • Reused results are refreshed when dependencies change.
    • Checks that do not apply to the selected configuration are reported appropriately.
  • Bug Fixes

    • Improved HTTP error details and resource-status reporting.
    • Corrected validation for Confluence, Notion, and SharePoint URLs and identifiers.
    • Expired SharePoint certificates are now reported as credential errors.
    • SharePoint gateway handling remains reliable after cache resets.
  • User Experience

    • Results use clearer singular/plural wording and safer summaries for long account names.
    • SharePoint checks provide clearer sampling limits and advisories.