Skip to content

client: a schedule row names a connector as carried after its connection failed #2354

Closed

Description

@HugoXK

Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.

Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: c69d3ec8466f4f81b232498768dd3a48
Branch: dev/1-reach-ready-only
Base: 1be6eae
At: 2026-11-04T04:26:08Z

Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment.
Written-by: FlyBot Lead

What happens

#2323 gave each schedule row the sentence Runs with <connectors>: the reach an unattended run carries. On live main 1be6eae5976a755e66bdab8efc80bc57daca50a3 it counts a connector whose connection failed, and one that is still connecting, as carried.

core/src/client/schedules.js:126-134 builds that list from connectedConnectors(roster) filtered by isOn(bot, connector.id); core/src/client/connector-bots.js:18-21 keeps a connector when connector.state !== 'off', so error and connecting pass. The host has exactly four states — off, connecting, ready, error — and reconcile() in core/src/host/connectors.js:703-757 unmounts the connection (await unmount(c), :752) before it sets state: 'error' (:754); the insecure branch (:717-720) never mounts. So an error connector's tools are gone: the row claims a reach that does not exist, while the same roster on the Connectors page says Could not connect: {reason} (core/src/client/connectors.js:42-50).

Reproduction (real module at 1be6eae5)

reachText imported straight from core/src/client/schedules.js (only react stubbed), task { botId: 'b1' }, Bot with no per-Bot record (every switch on):

connector states row today expected
ready, ready Runs with GitHub, Composio same
ready, error (401) Runs with GitHub, Composio Runs with GitHub
error, error Runs with GitHub, Composio Runs with no connectors
ready, off Runs with GitHub same

Expected

The row names only a connector that can give the run tools at the moment it fires: state === 'ready'. An error or connecting connector drops out exactly like off; when none is left the row keeps saying Runs with no connectors.

Scope

  • core/src/client/schedules.js — one predicate inside reachText. Leave connectedConnectors as it is: the Connectors page and a Bot's settings still draw a switch for an error/connecting connector, which is how the owner reconnects or opts out.
  • core/test/schedules-client.test.js — the fixture must move with the fix: :849-850 and :875 use state: 'connected', a value the host never writes (only off/connecting/ready/error), which is why the current tests stay green either way. Move them to ready and add red-first cases for an error and a connecting connector.
  • core/client.js and patches/ds-bot/0008-client-bundle.patch are regenerated by npm run build + node scripts/ds-bot-patches.mjs generate; that churn is mechanical, not the change.
  • changelog.d/<issue>-reach-ready-only.fixed.md — user-visible wording fix.

Not in scope: one shared connector-state vocabulary (weighed separately as an enhancement), and the two smaller notes the audit carried — a paused or finished row still reads Runs with …, and the five tests read the flattened <Text> rather than the assembled line.

Duplicate check

Live main 1be6eae5 grep: reachText appears only in core/src/client/schedules.js and its test; state !== 'off' only in core/src/client/connector-bots.js:18. GitHub search: reachText 2 hits (#2323 closed issue, #2344 closed PR — this feature itself); "Runs with" 237 hits, newest are #2323/#2344 plus unrelated PRs, no open issue on this face; connector state error title search 0 hits.

Activity

  1. added 2 commits that reference this issue on Nov 4, 2026
    d49d9fd
    6f90fa3
  2. HugoXK commented on Nov 4, 2026

    @HugoXK
    ContributorAuthor

    Release

    Written-by: FlyBot Lead
    Released: c69d3ec8466f4f81b232498768dd3a48
    Reason: merged as 8c58f3a (#2357); issue closed by the squash
    At: 2026-11-04T05:40:54Z

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions