fix(server): discover project skills for Claude - #9210
Merged
Conversation
The Claude driver scanned project skills from the server's own startup directory, so a project's .claude/skills never reached the composer. Expose snapshotForCwd on the Claude instance, reusing the existing filesystem scanner with the thread's working directory, so the workspace snapshot plumbing from pingdotgg#8778 applies to Claude too. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Contributor
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — The change is a narrow integration fix that reuses the existing Claude skill scanner to populate workspace-specific snapshots, with no changes to defaults, schemas, deployment, or execution workflows. Its runtime effect is limited to best-effort filesystem discovery for the requested project directory. You can add or adjust custom eligibility rules. Learn more. |
juliusmarminge
added a commit
that referenced
this pull request
Sep 2, 2026
Renumbers the v2 migrations 044-052 to 045-053 behind main's 044_ClearAutomaticProjectModelDefaults, and adopts main's sticky new-thread selection (#9164), local-only worktree bases in the v2 launch path (#8751), the PR summary read for settlement (#9176), Claude per-cwd skills (#9210), the provider editor redesign with the branch's dedicated environment fields re-grafted (#8508), and the client half of continue-threads-across-restart (#9167). The server-side continuation markers stay unported: they live in the v1 session directory, and v2 recovery terminalizes running runs on restart, so the capability is withheld until the v2 runtime carries them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
github-actions Bot
added a commit
to omarcresp/t3code-flake
that referenced
this pull request
Sep 2, 2026
## What's Changed * fix(server): discover project skills for Claude by @anirudhsama in pingdotgg/t3code#9210 * feat(web): redesign provider editor and models list by @StiensWout in pingdotgg/t3code#8508 * fix(web): prevent connection rows from wrapping during removal by @MatthewFeroz in pingdotgg/t3code#8706 * fix(pull-requests): align checkout control with author by @maria-rcks in pingdotgg/t3code#9196 * fix(release): pin patched expo-sharing version by @willsheldon in pingdotgg/t3code#9250 * chore(mobile): update Expo Sharing to 57.0.17 by @StiensWout in pingdotgg/t3code#9248 **Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260902.1257...v0.0.39-nightly.20260902.1260 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260902.1260
2 tasks
sheehanmunim
added a commit
to munimtechnologies/mtcode
that referenced
this pull request
Sep 2, 2026
…continuation, provider editor redesign, context meter opt-in, linked-PR summaries) Brings the fork up to origin/main e0da6c6..b57726c. Highlights: continue active threads across server self-updates (pingdotgg#9167), provider editor and models list redesign (pingdotgg#8508), opt-in context window meter (pingdotgg#9190), linked-PR summary RPC with last-good caching (pingdotgg#9176), relay credential refresh before expiry (pingdotgg#9178), composer draft preserved through worktree setup (pingdotgg#9197), project skill discovery for Claude (pingdotgg#9210), copy-path on diff headers (pingdotgg#2403), mobile long-press file references (pingdotgg#9258). Conflict resolutions (14 files), keep-both unless noted: - RpcAuthorization / contracts rpc / ws.ts: fork's PR rank, cherry-pick and upstream-release RPCs sit beside upstream's new pullRequestsSummary. - ws.ts route layer: fork's computer task/view brokers plus upstream's serverSelfUpdate wrapped in withRunningThreadContinuation. - PullRequestService: fork's upstream-project reads and scoped diff epochs kept; upstream's summary read, refCacheKey and viewer-flight invalidation added. invalidate() now scopes diff-only invalidation AND clears viewer flights on a whole-workspace refresh. Test file keeps both new suites. - client-runtime pullRequests: fork's PR stack atoms kept, TTL constant takes upstream's new name. - ChatMarkdown: upstream's one-character gutter rule replaces the fork's equivalent digitWidth fix. - ChatComposer: fork's voice-session button kept; context meter now honours settings.contextWindowMeterEnabled. - ConnectionsSettings: fork's EnvironmentLabelControl kept with upstream's min-w-0 truncate. - mobile ThreadFeed: upstream's markdownLinkHandlers plus the fork's onCancelQueuedMessage. - ClaudeDriver imports: fork's superset. build-desktop-artifact: distro and arch both threaded through. Integration: upstream's restart continuation and the fork's resume-on-restart both ran at boot on the same orphans. The continuation-marker helpers move to provider/serverUpdateContinuation.ts and SessionStartupReconciler now defers any binding carrying the marker to upstream's pass (logged as deferred), so a thread is never continued twice. Test added. Dependencies reinstalled for the expo-sharing pin; the stale pnpm copy of @t3tools/mobile-markdown-text was what broke the mobile typecheck. Typecheck clean: contracts, shared, client-runtime, server, web, mobile (desktop exits 1 on a pre-existing warning-level diagnostic). Startup and self-update suites 36 passing; web sidebar/composer/settings suites 419 passing; fork guard script OK. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
donjor
added a commit
to RSI-Software/t3code-hyprws
that referenced
this pull request
Sep 2, 2026
… commit ## What Changed Record `fix(provider): resolve repo skills per workspace (#188)` as a partial retirement in `docs/internals/fork-delta.md`. The superseded scope goes in Retired. The remainder stays in Kept. ## Why The unblock walk onto `v0.0.39-nightly.20260902.1261` reduced that commit from 546 insertions across 17 files to 35 insertions across 2 server files. ```diff - providers.workspaceSkills RPC, contract schemas, client atom family, chat-view preference, Codex pair + cwd-keyed Claude capabilities probe cache at capacity 16 + slashCommands merged alongside skills in upstream's snapshotForCwd ``` Upstream `bc918e7` (`pingdotgg#9210`) supplies per-workspace provider snapshots: `snapshotForCwd` on every driver, `refreshWorkspaceSnapshot` in the registry, `workspaceSnapshots` on `ServerProvider`, and the client resolvers. That is what supersedes the dropped scope. Upstream's `snapshotForCwd` merges `skills` alone. Its capabilities probe cache stays capacity 1, keyed on binary plus resolved HOME. The remainder covers exactly that gap. A subject in both Retired and Kept is how the ledger spells a partial, so the commit stays in the stack. **Checks** - `vp run fork:delta --check`: ok, 220 fork commits tagged. - `vp run fork:upstream-refs docs/internals/fork-delta.md`: unchanged at 8 pre-existing live references. The new Retired row code-spans its subject and adds none. The 8 predate this branch. `#492` stays open. Its first `Done when` is a user-visible claim, that a project's `.claude/commands` appear in the Claude menu for a worktree thread. No client pass has been run, so this cannot close it. Refs #492 Refs #481 Fork-Domain: fork-meta Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor
added a commit
to RSI-Software/t3code-hyprws
that referenced
this pull request
Sep 4, 2026
… commit ## What Changed Record `fix(provider): resolve repo skills per workspace (#188)` as a partial retirement in `docs/internals/fork-delta.md`. The superseded scope goes in Retired. The remainder stays in Kept. ## Why The unblock walk onto `v0.0.39-nightly.20260902.1261` reduced that commit from 546 insertions across 17 files to 35 insertions across 2 server files. ```diff - providers.workspaceSkills RPC, contract schemas, client atom family, chat-view preference, Codex pair + cwd-keyed Claude capabilities probe cache at capacity 16 + slashCommands merged alongside skills in upstream's snapshotForCwd ``` Upstream `bc918e7` (`pingdotgg#9210`) supplies per-workspace provider snapshots: `snapshotForCwd` on every driver, `refreshWorkspaceSnapshot` in the registry, `workspaceSnapshots` on `ServerProvider`, and the client resolvers. That is what supersedes the dropped scope. Upstream's `snapshotForCwd` merges `skills` alone. Its capabilities probe cache stays capacity 1, keyed on binary plus resolved HOME. The remainder covers exactly that gap. A subject in both Retired and Kept is how the ledger spells a partial, so the commit stays in the stack. **Checks** - `vp run fork:delta --check`: ok, 220 fork commits tagged. - `vp run fork:upstream-refs docs/internals/fork-delta.md`: unchanged at 8 pre-existing live references. The new Retired row code-spans its subject and adds none. The 8 predate this branch. `#492` stays open. Its first `Done when` is a user-visible claim, that a project's `.claude/commands` appear in the Claude menu for a worktree thread. No client pass has been run, so this cannot close it. Refs #492 Refs #481 Fork-Domain: fork-meta Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor
added a commit
to RSI-Software/t3code-hyprws
that referenced
this pull request
Sep 4, 2026
… commit ## What Changed Record `fix(provider): resolve repo skills per workspace (#188)` as a partial retirement in `docs/internals/fork-delta.md`. The superseded scope goes in Retired. The remainder stays in Kept. ## Why The unblock walk onto `v0.0.39-nightly.20260902.1261` reduced that commit from 546 insertions across 17 files to 35 insertions across 2 server files. ```diff - providers.workspaceSkills RPC, contract schemas, client atom family, chat-view preference, Codex pair + cwd-keyed Claude capabilities probe cache at capacity 16 + slashCommands merged alongside skills in upstream's snapshotForCwd ``` Upstream `bc918e7` (`pingdotgg#9210`) supplies per-workspace provider snapshots: `snapshotForCwd` on every driver, `refreshWorkspaceSnapshot` in the registry, `workspaceSnapshots` on `ServerProvider`, and the client resolvers. That is what supersedes the dropped scope. Upstream's `snapshotForCwd` merges `skills` alone. Its capabilities probe cache stays capacity 1, keyed on binary plus resolved HOME. The remainder covers exactly that gap. A subject in both Retired and Kept is how the ledger spells a partial, so the commit stays in the stack. **Checks** - `vp run fork:delta --check`: ok, 220 fork commits tagged. - `vp run fork:upstream-refs docs/internals/fork-delta.md`: unchanged at 8 pre-existing live references. The new Retired row code-spans its subject and adds none. The 8 predate this branch. `#492` stays open. Its first `Done when` is a user-visible claim, that a project's `.claude/commands` appear in the Claude menu for a worktree thread. No client pass has been run, so this cannot close it. Refs #492 Refs #481 Fork-Domain: fork-meta Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor
added a commit
to RSI-Software/t3code-hyprws
that referenced
this pull request
Sep 4, 2026
… commit ## What Changed Record `fix(provider): resolve repo skills per workspace (#188)` as a partial retirement in `docs/internals/fork-delta.md`. The superseded scope goes in Retired. The remainder stays in Kept. ## Why The unblock walk onto `v0.0.39-nightly.20260902.1261` reduced that commit from 546 insertions across 17 files to 35 insertions across 2 server files. ```diff - providers.workspaceSkills RPC, contract schemas, client atom family, chat-view preference, Codex pair + cwd-keyed Claude capabilities probe cache at capacity 16 + slashCommands merged alongside skills in upstream's snapshotForCwd ``` Upstream `bc918e7` (`pingdotgg#9210`) supplies per-workspace provider snapshots: `snapshotForCwd` on every driver, `refreshWorkspaceSnapshot` in the registry, `workspaceSnapshots` on `ServerProvider`, and the client resolvers. That is what supersedes the dropped scope. Upstream's `snapshotForCwd` merges `skills` alone. Its capabilities probe cache stays capacity 1, keyed on binary plus resolved HOME. The remainder covers exactly that gap. A subject in both Retired and Kept is how the ledger spells a partial, so the commit stays in the stack. **Checks** - `vp run fork:delta --check`: ok, 220 fork commits tagged. - `vp run fork:upstream-refs docs/internals/fork-delta.md`: unchanged at 8 pre-existing live references. The new Retired row code-spans its subject and adds none. The 8 predate this branch. `#492` stays open. Its first `Done when` is a user-visible claim, that a project's `.claude/commands` appear in the Claude menu for a worktree thread. No client pass has been run, so this cannot close it. Refs #492 Refs #481 Fork-Domain: fork-meta Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
dascapytal1559
added a commit
to dascapytal1559/t3code
that referenced
this pull request
Sep 4, 2026
Conflict resolutions: - apps/server/src/http.ts: adopt upstream's static route (Cache-Control immutable/no-cache split plus ETag revalidation); delete the fork's staticResponseCacheControl and http.fork.test.ts. - packages/client-runtime/src/markdownLinks.ts: keep the fork's `~/` inline-code skip on top of upstream's isWindowsAbsolutePath refactor. - Skill discovery (ProviderDriver.ts, CodexDriver.ts, CodexProvider.ts, server.ts, server.test.ts, ws.ts, contracts rpc.ts/server.ts, client-runtime state/server.ts, ChatComposer.tsx, mobile use-composer-command-menu.ts): adopt upstream's snapshotForCwd workspace snapshots; delete ProviderSkillDiscovery, ProviderSkillProbeError, the server.listProviderSkills RPC, useProviderContextSkills and the mobile passthrough hook. - ProviderAdapter.ts, ServerEnvironment.ts, CodexAdapter.ts, test capability mocks: keep fork `conversationFork` beside upstream's new promptlessTurnContinuation / supportsConversationRollback; add `conversationFork: "unsupported"` to upstream's new AntigravityAdapter and the reconcile test mock. - MessagesTimeline.tsx: move ForkFromTurnButton into upstream's new AssistantMessageMeta (also renders on the assistant-meta row). - ChatComposer.tsx / ComposerPrimaryActions.tsx / ChatView.tsx: re-add the queue handlers beside upstream's submitCitationAndSend; combine `!queuedFollowUp` with upstream's sendInteractionModeEnabled guards. queuedFollowUpStore adapts to upstream's createDeferredStorage. - apps/mobile use-thread-composer-state.ts: take upstream's onSendMessage body (model availability guard, interaction-mode normalisation) and re-add the holdUntilIdle option and onRemoveQueuedMessage. - FileBrowserPanel.tsx: adopt upstream's pierre-tree-theme extraction and append the fork's symlink decoration rule at the unsafeCSS site. - Mobile HomeScreen / ThreadNavigationSidebar / thread-list-items / ThreadComposer / ThreadFilesRouteScreen: keep both sides (fork thread menu + upstream machine icons, queue list + model-unavailable notice). - apps/server/package.json: keep @parcel/watcher; upstream dropped @pierre/diffs. pnpm-lock regenerated. - docs/user/keybindings.md, composer.md, internals/glossary.md: keep the queue docs, drop the skills-discovery text. Post-merge audit: - FileBreadcrumbs.tsx (new upstream): gate useWorkspaceMutationRefresh off in watcher mode so agent turns do not force a full index rescan; its test now mocks the fork's entriesEvents/refreshEntries and useState. - ClaudeAdapter.ts auto-merge checked: fork auth-error restart sits after upstream's new terminal_reason failure classification, no overlap. Reassessed: - dropped Workspace-aware skills (upstream pingdotgg#9180/pingdotgg#8778/pingdotgg#9210/pingdotgg#9585 scope skills and slash commands per project for six providers, with coalescing and keep-last-good). - dropped Deterministic web-client cache headers (upstream pingdotgg#9669 sends the same headers plus ETags). - kept Tilde paths (upstream still expands `~/` against the local home). - kept the explorer cluster: symlinks, hidden root, lazy listing, watcher (upstream changed nothing in apps/server/src/workspace; 25k cap and no watcher remain). - kept Claude auth recovery (handleResultMessage unchanged upstream). - kept Checkpoint revert prompt return (threadReducer bug still live upstream, revert handler takes no prompt). - kept Queue follow-ups (upstream stash pingdotgg#9644 is restore-only; send while running still steers). - kept Fork a thread (no forkedFrom/threadFork anywhere upstream). - kept Desktop payload and SSH package spec (untouched). Known upstream failure carried over: AntigravityAdapter.test.ts "serves client file reads and writes only inside the session roots" fails on macOS with upstream's own file (temp dir realpath). Pre-sync fork: backup/upstream-test-drive-pre-sync-20260905 (63b7242). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
juliusmarminge
added a commit
that referenced
this pull request
Sep 4, 2026
Renumbers the v2 migrations 044-052 to 045-053 behind main's 044_ClearAutomaticProjectModelDefaults, and adopts main's sticky new-thread selection (#9164), local-only worktree bases in the v2 launch path (#8751), the PR summary read for settlement (#9176), Claude per-cwd skills (#9210), the provider editor redesign with the branch's dedicated environment fields re-grafted (#8508), and the client half of continue-threads-across-restart (#9167). The server-side continuation markers stay unported: they live in the v1 session directory, and v2 recovery terminalizes running runs on restart, so the capability is withheld until the v2 runtime carries them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
donjor
added a commit
to RSI-Software/t3code-hyprws
that referenced
this pull request
Sep 4, 2026
… commit ## What Changed Record `fix(provider): resolve repo skills per workspace (#188)` as a partial retirement in `docs/internals/fork-delta.md`. The superseded scope goes in Retired. The remainder stays in Kept. ## Why The unblock walk onto `v0.0.39-nightly.20260902.1261` reduced that commit from 546 insertions across 17 files to 35 insertions across 2 server files. ```diff - providers.workspaceSkills RPC, contract schemas, client atom family, chat-view preference, Codex pair + cwd-keyed Claude capabilities probe cache at capacity 16 + slashCommands merged alongside skills in upstream's snapshotForCwd ``` Upstream `bc918e7` (`pingdotgg#9210`) supplies per-workspace provider snapshots: `snapshotForCwd` on every driver, `refreshWorkspaceSnapshot` in the registry, `workspaceSnapshots` on `ServerProvider`, and the client resolvers. That is what supersedes the dropped scope. Upstream's `snapshotForCwd` merges `skills` alone. Its capabilities probe cache stays capacity 1, keyed on binary plus resolved HOME. The remainder covers exactly that gap. A subject in both Retired and Kept is how the ledger spells a partial, so the commit stays in the stack. **Checks** - `vp run fork:delta --check`: ok, 220 fork commits tagged. - `vp run fork:upstream-refs docs/internals/fork-delta.md`: unchanged at 8 pre-existing live references. The new Retired row code-spans its subject and adds none. The 8 predate this branch. `#492` stays open. Its first `Done when` is a user-visible claim, that a project's `.claude/commands` appear in the Claude menu for a worktree thread. No client pass has been run, so this cannot close it. Refs #492 Refs #481 Fork-Domain: fork-meta Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
juliusmarminge
added a commit
that referenced
this pull request
Sep 5, 2026
Renumbers the v2 migrations 044-052 to 045-053 behind main's 044_ClearAutomaticProjectModelDefaults, and adopts main's sticky new-thread selection (#9164), local-only worktree bases in the v2 launch path (#8751), the PR summary read for settlement (#9176), Claude per-cwd skills (#9210), the provider editor redesign with the branch's dedicated environment fields re-grafted (#8508), and the client half of continue-threads-across-restart (#9167). The server-side continuation markers stay unported: they live in the v1 session directory, and v2 recovery terminalizes running runs on restart, so the capability is withheld until the v2 runtime carries them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juliusmarminge
added a commit
that referenced
this pull request
Sep 5, 2026
Renumbers the v2 migrations 044-052 to 045-053 behind main's 044_ClearAutomaticProjectModelDefaults, and adopts main's sticky new-thread selection (#9164), local-only worktree bases in the v2 launch path (#8751), the PR summary read for settlement (#9176), Claude per-cwd skills (#9210), the provider editor redesign with the branch's dedicated environment fields re-grafted (#8508), and the client half of continue-threads-across-restart (#9167). The server-side continuation markers stay unported: they live in the v1 session directory, and v2 recovery terminalizes running runs on restart, so the capability is withheld until the v2 runtime carries them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juliusmarminge
added a commit
that referenced
this pull request
Sep 5, 2026
Renumbers the v2 migrations 044-052 to 045-053 behind main's 044_ClearAutomaticProjectModelDefaults, and adopts main's sticky new-thread selection (#9164), local-only worktree bases in the v2 launch path (#8751), the PR summary read for settlement (#9176), Claude per-cwd skills (#9210), the provider editor redesign with the branch's dedicated environment fields re-grafted (#8508), and the client half of continue-threads-across-restart (#9167). The server-side continuation markers stay unported: they live in the v1 session directory, and v2 recovery terminalizes running runs on restart, so the capability is withheld until the v2 runtime carries them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #6449
What changed
The Claude driver now exposes
snapshotForCwd, so the workspace snapshot plumbing that #8778 added for Codex and OpenCode applies to Claude as well. The hook reuses the existing filesystem scanner (discoverClaudeSkills) with the thread's working directory and overlays the result on the machine snapshot. Thirteen lines inClaudeDriver.ts, nothing else.Why
Claude project skills were scanned from the server's own startup directory (
ServerConfig.cwd), so a project's.claude/skillsnever reached the$picker or the/menu. #8778 by @UtkarshUsername built the per-cwd snapshot mechanism (registry, reactor trigger, client resolvers) but only wired Codex and OpenCode into it. This is the minimal follow-up for Claude; no subprocess is needed because the scanner already knows Claude Code's discovery rules, so there is no timeout or error mapping either.Slash commands stay machine-level, matching the Codex and OpenCode implementations. Related but not fixed here: #8757 (scope label collision when the packaged server cwd is
$HOME).Overlaps with #9090 and #9180, which take on more (chip styling, docs, Cursor, Grok, mobile, registry cache changes). This one is offered as the smallest change that closes the Claude gap on its own.
Surfaces
Verification
ClaudeSkills.test.tsandProviderRegistry.test.tspass (61 tests)..claude/skills/hello-projectskill in a project outside the server cwd appears in the$picker after the session starts.Checklist
Built with GPT-5.6 Sol in the Codex harness, orchestrated by Claude Fable 5.1 in Claude Code.
🤖 Generated with Claude Code
Note
Low Risk
Small driver-only change reusing existing skill discovery and snapshot overlay pattern; no auth or data-handling changes.
Overview
Claude now participates in the per-workspace snapshot path so project-local
.claude/skillsshow up in the client instead of only skills scanned from the server’s startup directory.The driver exposes
snapshotForCwd, matching Codex and OpenCode: when the provider is enabled it runsgetSnapshotanddiscoverClaudeSkillsfor the thread’s cwd, then merges the discovered skills onto the machine snapshot (with filesystem/path services provided). When disabled it keeps using the plain machine snapshot.Reviewed by Cursor Bugbot for commit 8a868fc. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Fix
ClaudeDriver.createto discover project skills per working directoryThe provider factory now returns an instance with a
snapshotForCwdfunction. Enabled instances load the base machine snapshot, run Claude skill discovery scoped to the supplied working directory, and merge discovered skills into the snapshot before returning it. Disabled instances expose the same function but return the existing snapshot without running discovery.Macroscope summarized 8a868fc.