Skip to content

refactor(source-control): add @t3tools/source-control-core - #17573

Merged
juliusmarminge merged 4 commits into
mainfrom
t3/source-control-packages
Oct 9, 2026
Merged

juliusmarminge merged 4 commits into
mainfrom
t3/source-control-packages

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Source control providers (GitHub, GitLab, Forgejo, Azure DevOps, Bitbucket) live inside apps/server and reach into its services directly, so adding one means editing files across the repo. This is the first layer of moving each provider into its own package, the way the agent providers moved into @t3tools/provider-*.

This layer adds @t3tools/source-control-core:

  • server/SourceControlHost is the narrow port a provider package may use (settings and the process runner), mirroring ProviderHost. ServerSourceControlHost implements it once. Git checkout operations join the port with the GitHub and Bitbucket layers, which are the ones that need them.
  • The SourceControlProvider and PullRequestProvider interfaces, discovery specs, the per-host SourceControlRateLimit, and the shared mergeMessage and pullRequestChecks helpers move unchanged. Their tests move with them.
  • Discovery now runs CLIs through the host port instead of VcsProcess, so the registry's R channel names SourceControlHost.

Behavior is unchanged: same messages, settings keys, and wire shapes. The service keys now match their module paths.

Next layers: one package per provider (Forgejo first, GitHub last), then client definitions, then removal of the leftover registries.

Verified with tsc (apps/server, source-control-core), knip, and 44 moved or touched test files (1224 tests).

Known gap, tracked in #17608: the moved discovery helpers, PullRequestService.withRateLimitBackoff, and GitHub's stack-action wiring still pass service instances as arguments or re-provide captured ones, which is against the Effect service convention. That predates this stack, and the move carried it over unchanged. The cleanup lands after the stack merges.

🤖 Generated with Claude Code — Claude Opus 5.5 in T3 Code

@juliusmarminge juliusmarminge changed the title t3/source control packages refactor(source-control): add @t3tools/source-control-core Oct 9, 2026
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Oct 9, 2026
@juliusmarminge juliusmarminge added the macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews label Oct 9, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR introduces a new source-control package and host-service boundary while rewiring provider discovery and production server layers across many files. Although the moved logic is mostly unchanged and no defaults or static-analysis overrides were found, the shared runtime architecture warrants human review.

You can add or adjust custom eligibility rules. Learn more.

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 4.9 KiB 5.0 KiB +23 B (+0.5%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB +23 B (+1.9%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 20.8 KiB 20.9 KiB +41 B (+0.2%) 29.3 KiB ✅
Codex Live turn messages 1 2 +1 (+100.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.2 KiB 1.2 KiB 0 B (0.0%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.2 KiB 21.2 KiB 0 B (0.0%) 29.3 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 0e7abea · PR result: 2400cfa · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 63e07b27-1bf5-4de1-9084-47e7969fa1d0

📥 Commits

Reviewing files that changed from the base of the PR and between 46be611 and 2400cfa.


⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml

📒 Files selected for processing (64)
  • apps/server/package.json
  • apps/server/scripts/evaluate-thread-titles.ts
  • apps/server/scripts/measure-pr-preview.ts
  • apps/server/src/git/GitManager.test.ts
  • apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts
  • apps/server/src/orchestration-v2/PullRequestSyncReactor.ts
  • apps/server/src/orchestration-v2/PullRequestWatchReactor.ts
  • apps/server/src/orchestration-v2/runtimeLayer.test.ts
  • apps/server/src/pullRequest/AzureDevOpsPullRequestCli.ts
  • apps/server/src/pullRequest/AzureDevOpsPullRequestProvider.ts
  • apps/server/src/pullRequest/BitbucketPullRequestApi.ts
  • apps/server/src/pullRequest/BitbucketPullRequestProvider.ts
  • apps/server/src/pullRequest/ForgejoPullRequestProvider.ts
  • apps/server/src/pullRequest/GitHubPullRequestApi.test.ts
  • apps/server/src/pullRequest/GitHubPullRequestApi.ts
  • apps/server/src/pullRequest/GitHubPullRequestProvider.ts
  • apps/server/src/pullRequest/GitLabPullRequestCli.ts
  • apps/server/src/pullRequest/GitLabPullRequestProvider.ts
  • apps/server/src/pullRequest/PullRequestProviderRateLimit.test.ts
  • apps/server/src/pullRequest/PullRequestProviderRegistry.ts
  • apps/server/src/pullRequest/PullRequestService.test.ts
  • apps/server/src/pullRequest/PullRequestService.ts
  • apps/server/src/pullRequest/bitbucketPullRequestJson.ts
  • apps/server/src/pullRequest/forgejoPullRequestJson.ts
  • apps/server/src/pullRequest/gitHubConditionalChecks.ts
  • apps/server/src/pullRequest/gitHubPullRequestJson.ts
  • apps/server/src/pullRequest/pullRequestViewedFiles.ts
  • apps/server/src/server.ts
  • apps/server/src/sourceControl/AzureDevOpsCli.ts
  • apps/server/src/sourceControl/AzureDevOpsSourceControlProvider.ts
  • apps/server/src/sourceControl/BitbucketApi.ts
  • apps/server/src/sourceControl/BitbucketSourceControlProvider.ts
  • apps/server/src/sourceControl/ForgejoCli.ts
  • apps/server/src/sourceControl/ForgejoSourceControlProvider.ts
  • apps/server/src/sourceControl/GitHubApi.test.ts
  • apps/server/src/sourceControl/GitHubApi.ts
  • apps/server/src/sourceControl/GitHubSourceControlProvider.ts
  • apps/server/src/sourceControl/GitLabCli.ts
  • apps/server/src/sourceControl/GitLabSourceControlProvider.ts
  • apps/server/src/sourceControl/ServerSourceControlHost.ts
  • apps/server/src/sourceControl/SourceControlDiscovery.test.ts
  • apps/server/src/sourceControl/SourceControlDiscovery.ts
  • apps/server/src/sourceControl/SourceControlProviderRegistry.test.ts
  • apps/server/src/sourceControl/SourceControlProviderRegistry.ts
  • apps/server/src/sourceControl/SourceControlRepositoryService.test.ts
  • apps/server/src/sourceControl/githubQuota.test.ts
  • apps/server/src/sourceControl/githubQuota.ts
  • apps/server/src/ws.ts
  • docs/internals/pull-request-file-revisions.md
  • package.json
  • packages/source-control-core/package.json
  • packages/source-control-core/src/server/PullRequestProvider.ts
  • packages/source-control-core/src/server/SourceControlHost.ts
  • packages/source-control-core/src/server/SourceControlProvider.test.ts
  • packages/source-control-core/src/server/SourceControlProvider.ts
  • packages/source-control-core/src/server/SourceControlRateLimit.test.ts
  • packages/source-control-core/src/server/SourceControlRateLimit.ts
  • packages/source-control-core/src/server/discovery.ts
  • packages/source-control-core/src/server/mergeMessage.test.ts
  • packages/source-control-core/src/server/mergeMessage.ts
  • packages/source-control-core/src/server/pullRequestChecks.test.ts
  • packages/source-control-core/src/server/pullRequestChecks.ts
  • packages/source-control-core/tsconfig.json
  • scripts/release-smoke.ts

💤 Files with no reviewable changes (7)
  • packages/source-control-core/src/server/pullRequestChecks.test.ts
  • packages/source-control-core/src/server/SourceControlProvider.test.ts
  • packages/source-control-core/src/server/pullRequestChecks.ts
  • packages/source-control-core/src/server/mergeMessage.ts
  • packages/source-control-core/src/server/SourceControlRateLimit.test.ts
  • packages/source-control-core/src/server/mergeMessage.test.ts
  • packages/source-control-core/src/server/PullRequestProvider.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 2 remain after this review.



📝 Walkthrough

Walkthrough

The pull request adds the @t3tools/source-control-core package and a shared source-control host contract. The server provides the host service and updates source-control discovery, provider, and pull-request code to import shared modules. The root Knip command adds packages/provider-grok to its workspace checks.

Changes

Source-control core extraction

Layer / File(s) Summary
Shared package contracts and exports
packages/source-control-core/package.json, packages/source-control-core/src/server/*, packages/source-control-core/tsconfig.json, docs/internals/pull-request-file-revisions.md, scripts/release-smoke.ts
Adds package exports and the SourceControlHost contract. Updates discovery process types and shared service identifiers. The release smoke fixture includes the package manifest, and the documentation link points to the shared provider contract.
Server host and registry wiring
apps/server/src/sourceControl/ServerSourceControlHost.ts, apps/server/src/sourceControl/SourceControlProviderRegistry.ts, apps/server/src/server.ts, apps/server/src/ws.ts, apps/server/src/sourceControl/SourceControlDiscovery.test.ts, apps/server/src/sourceControl/SourceControlProviderRegistry.test.ts, apps/server/scripts/evaluate-thread-titles.ts
Maps server settings and VCS process services to the shared host contract. Adds the host layer to provider registry setup and tests.
Source-control consumers use shared modules
apps/server/package.json, apps/server/src/sourceControl/*, apps/server/src/git/GitManager.test.ts, apps/server/scripts/measure-pr-preview.ts
Updates source-control provider, discovery, and rate-limit imports to use the shared package.
Pull-request consumers use shared modules
apps/server/src/pullRequest/*, apps/server/src/orchestration-v2/*
Updates pull-request provider, rate-limit, merge-message, and check imports to use shared package modules.

Workspace check update

Layer / File(s) Summary
Knip workspace list
package.json
Adds packages/provider-grok to the workspaces checked by knip:check.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Refactor

Sequence Diagram(s)

sequenceDiagram
  participant ServerSettingsService
  participant VcsProcess
  participant ServerSourceControlHost
  participant SourceControlProviderRegistry
  ServerSettingsService->>ServerSourceControlHost: provide settings getter
  VcsProcess->>ServerSourceControlHost: provide process runner
  ServerSourceControlHost->>SourceControlProviderRegistry: provide SourceControlHost layer
Loading

Suggested reviewers: maria-rcks


Merge Risk: ⚪ Minimal · up to 2400c

No actionable issue is established for this change; it is mergeable after normal checks.

Pre-merge checks | Passed 3 | Failed 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check Warning The description explains the problem, implementation, behavior impact, verification, and known gap. It does not provide the required triaged issue or maintainer approval for the refactor scope. Add a link to the triaged issue or approval discussion, including the maintainer approval comment and confirmation of the direction and scope. Use explicit Problem, Change, Scope and approval, and Verification sections if needed.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check Passed The title clearly identifies the main change: adding the @t3tools/source-control-core package as a source-control refactor.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.


  • Fix all pre-merge checks with AI
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR

🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR


  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

juliusmarminge and others added 4 commits October 9, 2026 14:38
Source control providers live in apps/server and reach into its services
directly, so a provider cannot be packaged on its own. This adds the core
package the provider packages will depend on:

- SourceControlHost: the narrow port to the server (settings, process
  runner), implemented once by ServerSourceControlHost.
- The SourceControlProvider and PullRequestProvider interfaces, discovery
  specs, the per-host rate limit, and the shared merge-message and checks
  helpers, moved unchanged.

Discovery now runs CLIs through the host port instead of VcsProcess.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…equestProvider

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juliusmarminge
juliusmarminge force-pushed the t3/source-control-packages branch from 46be611 to 2400cfa Compare October 9, 2026 21:41
@juliusmarminge
juliusmarminge merged commit 28f11ed into main Oct 9, 2026
29 checks passed
@juliusmarminge
juliusmarminge deleted the t3/source-control-packages branch October 9, 2026 21:50
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 10, 2026
## What's Changed
* chore(deps): upgrade Effect to 4.0.2 by @juliusmarminge in pingdotgg/t3code#17571
* fix(devices): recover stalled video without losing simulator input by @juliusmarminge in pingdotgg/t3code#17566
* fix(web): keep checkout stable while pr actions load by @maria-rcks in pingdotgg/t3code#16625
* fix(mobile): show waiting thread status by @maria-rcks in pingdotgg/t3code#16693
* feat(web): add parent thread breadcrumb navigation by @maria-rcks in pingdotgg/t3code#16666
* fix(server): restart inactivity after snoozed threads wake by @maria-rcks in pingdotgg/t3code#16674
* feat(desktop): passkeys in the in-app browser on macOS by @juliusmarminge in pingdotgg/t3code#16952
* fix(client): load earlier turns works for MCP threads over T3 Connect by @juliusmarminge in pingdotgg/t3code#17599
* refactor(client): sign relay request URLs built from the HttpApi contract by @juliusmarminge in pingdotgg/t3code#17602
* refactor(source-control): add @t3tools/source-control-core by @juliusmarminge in pingdotgg/t3code#17573
* refactor(source-control): Forgejo lives in @t3tools/source-control-forgejo by @juliusmarminge in pingdotgg/t3code#17581
* refactor(source-control): Azure DevOps lives in @t3tools/source-control-azure-devops by @juliusmarminge in pingdotgg/t3code#17592
* refactor(source-control): GitLab lives in @t3tools/source-control-gitlab by @juliusmarminge in pingdotgg/t3code#17594
* refactor(source-control): Bitbucket lives in @t3tools/source-control-bitbucket by @juliusmarminge in pingdotgg/t3code#17597
* refactor(source-control): GitHub lives in @t3tools/source-control-github by @juliusmarminge in pingdotgg/t3code#17607
* refactor(usage): transcript readers come from their drivers by @juliusmarminge in pingdotgg/t3code#17576
* refactor(usage): OpenCode usage comes from provider-opencode by @juliusmarminge in pingdotgg/t3code#17577
* refactor(usage): Cursor account usage comes from provider-cursor by @juliusmarminge in pingdotgg/t3code#17578
* refactor(usage): Antigravity usage is a reader on its driver by @juliusmarminge in pingdotgg/t3code#17579
* refactor(usage): usage readers use Effect FileSystem and SqlClient by @juliusmarminge in pingdotgg/t3code#17615
* fix(web): composer context strip pads both edges evenly by @limineol in pingdotgg/t3code#17562
* test(usage): v4 cache upgrade test waits for the migrated cache write by @Mnigos in pingdotgg/t3code#17553
* feat(mobile): support Duo in the shared iOS app by @juliusmarminge in pingdotgg/t3code#12648
* refactor(source-control): GitManager reads provider resolvers, not host kinds by @juliusmarminge in pingdotgg/t3code#17617
* refactor(source-control): PullRequestService reads GitHub resolvers, not its kind by @juliusmarminge in pingdotgg/t3code#17619
* refactor(source-control): Forgejo identity and Azure DevOps addressing move into their packages by @juliusmarminge in pingdotgg/t3code#17624
* refactor: home directory comes from a HostProcessHomeDirectory reference by @juliusmarminge in pingdotgg/t3code#17628
* refactor(shared): host process references live in a HostProcess module by @juliusmarminge in pingdotgg/t3code#17641
* feat(web): filter PR comments by bots and resolved threads by @juliusmarminge in pingdotgg/t3code#17645
* fix(clients): remove redundant prefix from PR watch status by @extoci in pingdotgg/t3code#17635
* fix(web): pending requests wait until you stop typing by @maria-rcks in pingdotgg/t3code#17637
* fix(models): remove new badges from Claude Opus and Sonnet 5.5 by @extoci in pingdotgg/t3code#17646
* fix(ui): keep focus and selection borders visible across the app by @maria-rcks in pingdotgg/t3code#16675
* fix(mobile): prevent row presses during native back swipes by @juliusmarminge in pingdotgg/t3code#17648
* fix(server): Codex shadow homes replace stray sqlite maintenance locks by @juliusmarminge in pingdotgg/t3code#17663
* feat(desktop): T3 Code can be your default web browser on macOS by @juliusmarminge in pingdotgg/t3code#17587
* test(server): the ACP process-tree test no longer collides with the runner's own pid by @yordis in pingdotgg/t3code#17647
* fix(web): keep branch restore action inline in narrow composers by @Saikrishna1876 in pingdotgg/t3code#14811
* fix(web): composer banner actions stay inline whenever they fit by @maria-rcks in pingdotgg/t3code#17640


**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261009.2886...v0.0.46-nightly.20261010.2908

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261010.2908
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 10, 2026
## What's Changed
* chore(deps): upgrade Effect to 4.0.2 by @juliusmarminge in pingdotgg/t3code#17571
* fix(devices): recover stalled video without losing simulator input by @juliusmarminge in pingdotgg/t3code#17566
* fix(web): keep checkout stable while pr actions load by @maria-rcks in pingdotgg/t3code#16625
* fix(mobile): show waiting thread status by @maria-rcks in pingdotgg/t3code#16693
* feat(web): add parent thread breadcrumb navigation by @maria-rcks in pingdotgg/t3code#16666
* fix(server): restart inactivity after snoozed threads wake by @maria-rcks in pingdotgg/t3code#16674
* feat(desktop): passkeys in the in-app browser on macOS by @juliusmarminge in pingdotgg/t3code#16952
* fix(client): load earlier turns works for MCP threads over T3 Connect by @juliusmarminge in pingdotgg/t3code#17599
* refactor(client): sign relay request URLs built from the HttpApi contract by @juliusmarminge in pingdotgg/t3code#17602
* refactor(source-control): add @t3tools/source-control-core by @juliusmarminge in pingdotgg/t3code#17573
* refactor(source-control): Forgejo lives in @t3tools/source-control-forgejo by @juliusmarminge in pingdotgg/t3code#17581
* refactor(source-control): Azure DevOps lives in @t3tools/source-control-azure-devops by @juliusmarminge in pingdotgg/t3code#17592
* refactor(source-control): GitLab lives in @t3tools/source-control-gitlab by @juliusmarminge in pingdotgg/t3code#17594
* refactor(source-control): Bitbucket lives in @t3tools/source-control-bitbucket by @juliusmarminge in pingdotgg/t3code#17597
* refactor(source-control): GitHub lives in @t3tools/source-control-github by @juliusmarminge in pingdotgg/t3code#17607
* refactor(usage): transcript readers come from their drivers by @juliusmarminge in pingdotgg/t3code#17576
* refactor(usage): OpenCode usage comes from provider-opencode by @juliusmarminge in pingdotgg/t3code#17577
* refactor(usage): Cursor account usage comes from provider-cursor by @juliusmarminge in pingdotgg/t3code#17578
* refactor(usage): Antigravity usage is a reader on its driver by @juliusmarminge in pingdotgg/t3code#17579
* refactor(usage): usage readers use Effect FileSystem and SqlClient by @juliusmarminge in pingdotgg/t3code#17615
* fix(web): composer context strip pads both edges evenly by @limineol in pingdotgg/t3code#17562
* test(usage): v4 cache upgrade test waits for the migrated cache write by @Mnigos in pingdotgg/t3code#17553
* feat(mobile): support Duo in the shared iOS app by @juliusmarminge in pingdotgg/t3code#12648
* refactor(source-control): GitManager reads provider resolvers, not host kinds by @juliusmarminge in pingdotgg/t3code#17617
* refactor(source-control): PullRequestService reads GitHub resolvers, not its kind by @juliusmarminge in pingdotgg/t3code#17619
* refactor(source-control): Forgejo identity and Azure DevOps addressing move into their packages by @juliusmarminge in pingdotgg/t3code#17624
* refactor: home directory comes from a HostProcessHomeDirectory reference by @juliusmarminge in pingdotgg/t3code#17628
* refactor(shared): host process references live in a HostProcess module by @juliusmarminge in pingdotgg/t3code#17641
* feat(web): filter PR comments by bots and resolved threads by @juliusmarminge in pingdotgg/t3code#17645
* fix(clients): remove redundant prefix from PR watch status by @extoci in pingdotgg/t3code#17635
* fix(web): pending requests wait until you stop typing by @maria-rcks in pingdotgg/t3code#17637
* fix(models): remove new badges from Claude Opus and Sonnet 5.5 by @extoci in pingdotgg/t3code#17646
* fix(ui): keep focus and selection borders visible across the app by @maria-rcks in pingdotgg/t3code#16675
* fix(mobile): prevent row presses during native back swipes by @juliusmarminge in pingdotgg/t3code#17648
* fix(server): Codex shadow homes replace stray sqlite maintenance locks by @juliusmarminge in pingdotgg/t3code#17663
* feat(desktop): T3 Code can be your default web browser on macOS by @juliusmarminge in pingdotgg/t3code#17587
* test(server): the ACP process-tree test no longer collides with the runner's own pid by @yordis in pingdotgg/t3code#17647
* fix(web): keep branch restore action inline in narrow composers by @Saikrishna1876 in pingdotgg/t3code#14811
* fix(web): composer banner actions stay inline whenever they fit by @maria-rcks in pingdotgg/t3code#17640


**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261009.2886...v0.0.46-nightly.20261010.2908

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261010.2908
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant