Skip to content

feat(usage): measure every turn for the ADE router, and make model choice work for every provider - #1300

Merged
arul28 merged 3 commits into
mainfrom
ade/ade-router-f30a1b5e
Sep 23, 2026
Merged

arul28 merged 3 commits into
mainfrom
ade/ade-router-f30a1b5e

Conversation

@arul28

@arul28 arul28 commented Sep 23, 2026

Copy link
Copy Markdown
Owner

Problem

ADE cannot yet decide which model should run a turn, because it does not record what each turn cost, which model answered, or how fast each subscription window burns. Also, several providers ignored or lost the model and effort that the user picked in the UI.

Cause

  • Usage data was kept only as per-provider totals. There was no per-turn record of the requested model, the served model, tokens, cost, and quota.
  • The model and effort routing had these defects:
    • Grok: the model went through -m, which fails for some ids, and a resumed session restored the old model.
    • Qwen: ADE sent ids that the session did not offer.
    • Kimi: ADE never sent the effort.
    • Cursor: ADE sent false for options that the user never touched. A Cloud follow-up refused to send when the catalog failed to load.
    • Pi: ADE wrote the user's global Pi defaults.
    • Droid: a cleared effort was lost.
    • Copilot: a plan that allows only Auto replaced the model with no notice.

Change and boundary

Measurement: the groundwork for the ADE router (Linear ADE-159)

  • A machine-local per-turn usage ledger (<adeHome>/usage/turns-YYYY-MM.jsonl). Each row holds the requested model, the served model, tokens, apiEquivalentUsd (list price), the provider's billed cost where known, the plan units, and the compaction count. A quota ledger records window readings.
  • A quota burn rate: the dollars for each 1% of a subscription window, which is a lower bound.
  • A Cursor dashboard reconcile (ADE_CURSOR_DASHBOARD_USAGE) and Factory credit reading.
  • ade usage turns and the action usage.getTurnUsageSummary.
  • A daily usage research report. The client sends one compact report for each finished local day to the account directory Worker, which stores it at POST /usage-research/daily in D1 table usage_research_daily (migration 0012).
    • The report holds exact provider and model ids, tokens, costs, plan tier, quota readings, and the local hour. It holds no emails, account ids, paths, prompts, or session ids.
    • Consent: the report is sent only while product analytics is on. The client checks consent again before each POST. ADE_USAGE_RESEARCH=0 turns it off. The Settings text now tells the user about the daily summary.
    • installId comes from a local salt, so it cannot be linked to PostHog. accountRef is a salted hash.
    • The Worker limits: 20 reports a day for each address (IPv6 per /64), a fleet cap of 20,000 a day, a storage ceiling of 4,096 MB (a compare-and-swap write keeps the total exact), and 180-day retention. There is one row for each install and day (an upsert), so a re-send makes no duplicate.

Model and effort routing from the UI

  • Grok: the model and effort go through session/set_config_option, and CLI versions before 1.0.40 keep --reasoning-effort. Qwen sends only the ids it offers, and default on a clear. Kimi sends the effort. A failed effort set is fatal only for Qwen.
  • Copilot: when an Auto-only plan answers with another model, the user sees a notice.
  • Cursor: model params and config values are sent, and an option that the user never touched stays unset. A Cloud follow-up sends best-effort settings and shows one notice. A model switch no longer waits on a cold catalog. The selection logic moves to the new chat/cursorModelSelection.ts.
  • OpenCode: its own variant keys, and a Fast chip that uses the effective effort.
  • Pi: read-only settings storage, so ADE never writes ~/.pi globals, and one list of thinking levels.
  • Droid: a bounded model-list read (8 s), and a cleared effort stays until the reset succeeds.
  • Claude and Codex: request counts, context tokens, and account reads.
  • One served-model rule (servedModelMismatch.ts) for all providers. The ledger, the report, and the "answered with X" warning all use it.
  • iOS decodes the new optional done fields, and replay keeps contextTokens.

Deliberately not changed

  • There is no routing decision yet. This PR only measures. The router comes after enough user data exists (ADE-159).
  • There are no new PostHog events. The research report is a separate sink (see docs/logging.md).
  • The Cursor billed-usage pipeline stays as it was on main.

Deploy note: merging deploys the account directory Worker and applies D1 migration 0012_usage_research.sql.

Verification

  • /quality: a capped run with one fix round and one short check, as the owner asked. There were 55 findings: 0 Blocker, 1 High, 19 Medium, 35 Low. The run applied 50 and rejected 5 after I checked them against the code. The gate is empty.
  • Desktop typecheck: 18 errors, the same as the baseline on main. They come from local installs: @factory/droid-sdk/node, three, and others. CLI typecheck: 6 errors, the same as the baseline.
  • apps/account-directory: npm run typecheck is clean, and npm test passes 215 of 215 after the rebase.
  • Desktop vitest after the rebase, on chat, usage, adeActions, ai, shared, renderer chat, and settings: 425 files and 8,614 tests pass.
  • Desktop vitest before the rebase, on all changed areas: 9,698 tests pass. One suite cannot load because three is missing from the local install.
  • CLI vitest (cli.test.ts, tuiClient): 1,950 tests pass. 2 fail locally because of a stale @factory/droid-sdk install. The same 2 fail at the base commit.
  • ESLint: 0 errors on the 167 changed desktop files. validate-docs passes (275 files). xcrun swiftc -parse passes on the 5 changed Swift files.

Authored with Claude Opus 5.5 via Claude Code.

🤖 Generated with Claude Code

ADE   Open in ADE  ·  ade/ade-router-f30a1b5e branch  ·  PR #1300


Devin Review


Note

High Risk
New unauthenticated writes land in the same D1 database as sign-in, and broad provider routing changes can alter which model runs or what users see on failure paths.

Overview
Adds per-turn usage measurement on the machine (JSONL ledger, quota burn rates, ade usage turns / usage.getTurnUsageSummary) and a daily usage-research upload from desktop/CLI to the account-directory Worker at POST /usage-research/daily, gated by product-analytics consent and ADE_USAGE_RESEARCH=0.

The Worker side stores reports in D1 (0012_usage_research.sql) with strict envelopes, per-IP and fleet write caps, a storage ceiling with compare-and-swap totals, retention sweeps, and shared sinkUtils extracted from diagnostics. Deploy config/docs/release inventory pick up the new USAGE_RESEARCH_* vars.

Model and effort routing is tightened across providers (Grok/Qwen/Kimi via ACP config, Cursor selection split and Cloud follow-up behavior, Pi read-only globals and thinking tiers from runtime, Droid/Copilot/OpenCode edge cases, unified served-model mismatch handling). CLI TUI token stats now prefer exact context occupancy like desktop.

There is still no automatic router—this PR is measurement plus making the picked model/effort stick.

Reviewed by Cursor Bugbot for commit 0bfc874. Configure here.

…oice work for every provider

Add a machine-local per-turn usage ledger (requested and served model,
tokens, list-price and billed cost, quota burn per window) and a consent-gated
daily usage research report that the account directory Worker stores once per
install and day in D1, with per-address, fleet, storage, and retention limits.

Fix model and effort selection from the UI for Grok, Copilot, Qwen, Kimi,
Cursor, OpenCode, Pi, Droid, Claude, and Codex, and show a notice when a
provider answers with a different model.

Refs ADE-159.

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

vercel Bot commented Sep 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
ade Ignored Ignored Preview Sep 23, 2026 8:29pm UTC

@coderabbitai

coderabbitai Bot commented Sep 23, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 197 files, which is 97 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Repository: arul28/ADE/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 0e8b4b4e-e79e-447e-afe5-9182f54ffb72

📥 Commits

Reviewing files that changed from the base of the PR and between caafad9 and df627c4.

⛔ Files ignored due to path filters (8)
  • docs/ARCHITECTURE.md is excluded by !docs/**
  • docs/features/chat/README.md is excluded by !docs/**
  • docs/features/chat/acp-providers-spec.md is excluded by !docs/**
  • docs/features/chat/acp-verification-brief.md is excluded by !docs/**
  • docs/features/chat/agent-routing.md is excluded by !docs/**
  • docs/features/onboarding-and-settings/README.md is excluded by !docs/**
  • docs/features/onboarding-and-settings/usage-tracking.md is excluded by !docs/**
  • docs/logging.md is excluded by !docs/**
📒 Files selected for processing (197)
  • .agents/skills/release/SKILL.md
  • .gitleaksignore
  • apps/account-directory/README.md
  • apps/account-directory/migrations/0012_usage_research.sql
  • apps/account-directory/scripts/verify-deployment-config.mjs
  • apps/account-directory/src/diagnostics.ts
  • apps/account-directory/src/index.ts
  • apps/account-directory/src/logging.ts
  • apps/account-directory/src/sinkUtils.ts
  • apps/account-directory/src/usageResearch.ts
  • apps/account-directory/test/fakeD1.ts
  • apps/account-directory/test/usageResearch.test.ts
  • apps/account-directory/test/usageResearchContract.test.ts
  • apps/account-directory/test/verifyDeploymentConfig.test.ts
  • apps/account-directory/wrangler.jsonc
  • apps/ade-cli/README.md
  • apps/ade-cli/src/bootstrap.ts
  • apps/ade-cli/src/cli.test.ts
  • apps/ade-cli/src/cli.ts
  • apps/ade-cli/src/tuiClient/__tests__/adeApi.test.ts
  • apps/ade-cli/src/tuiClient/adeApi.ts
  • apps/desktop/src/main/services/__tests__/piSdk.integration.test.ts
  • apps/desktop/src/main/services/adeActions/actionInputContracts.ts
  • apps/desktop/src/main/services/adeActions/actionPolicy.test.ts
  • apps/desktop/src/main/services/adeActions/actionPolicy.ts
  • apps/desktop/src/main/services/ai/aiIntegrationService.test.ts
  • apps/desktop/src/main/services/ai/aiIntegrationService.ts
  • apps/desktop/src/main/services/ai/modelsDevCatalog.ts
  • apps/desktop/src/main/services/ai/piInstallation.test.ts
  • apps/desktop/src/main/services/ai/piInstallation.ts
  • apps/desktop/src/main/services/ai/qwenUserSettings.test.ts
  • apps/desktop/src/main/services/ai/qwenUserSettings.ts
  • apps/desktop/src/main/services/chat/acpHost/acpConnection.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/acpAccounts.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/copilot.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/copilotUsageLedger.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/grok.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/grokTelemetry.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/index.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/kimi.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/qwen.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/qwenSkillDefaults.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/qwenUsageLedger.ts
  • apps/desktop/src/main/services/chat/acpHost/acpDialects/shared.ts
  • apps/desktop/src/main/services/chat/acpHost/acpEventTranslator.ts
  • apps/desktop/src/main/services/chat/acpHost/acpHost.fixtures.test.ts
  • apps/desktop/src/main/services/chat/acpHost/acpHost.test.ts
  • apps/desktop/src/main/services/chat/acpHost/acpHostTypes.ts
  • apps/desktop/src/main/services/chat/acpHost/acpProtocolTypes.ts
  • apps/desktop/src/main/services/chat/acpHost/acpRuntimeCoordinator.test.ts
  • apps/desktop/src/main/services/chat/acpHost/acpRuntimeCoordinator.ts
  • apps/desktop/src/main/services/chat/acpHost/acpSession.ts
  • apps/desktop/src/main/services/chat/acpHost/acpTelemetry.test.ts
  • apps/desktop/src/main/services/chat/acpHost/acpTelemetryReaders.ts
  • apps/desktop/src/main/services/chat/acpHost/acpTurnTelemetry.ts
  • apps/desktop/src/main/services/chat/acpHost/fixtures/copilot.usage-events.json
  • apps/desktop/src/main/services/chat/acpHost/fixtures/copilot.usage-turn.jsonl
  • apps/desktop/src/main/services/chat/acpHost/fixtures/grok.live-turn.jsonl
  • apps/desktop/src/main/services/chat/acpHost/fixtures/grok.subagent-updates.jsonl
  • apps/desktop/src/main/services/chat/acpHost/index.ts
  • apps/desktop/src/main/services/chat/acpHost/mockAcpAgent.ts
  • apps/desktop/src/main/services/chat/agentChatService.test.ts
  • apps/desktop/src/main/services/chat/agentChatService.ts
  • apps/desktop/src/main/services/chat/claudeTurnUsage.test.ts
  • apps/desktop/src/main/services/chat/claudeTurnUsage.ts
  • apps/desktop/src/main/services/chat/codexSubagentUsage.test.ts
  • apps/desktop/src/main/services/chat/codexSubagentUsage.ts
  • apps/desktop/src/main/services/chat/contextCompactionEmitter.test.ts
  • apps/desktop/src/main/services/chat/contextCompactionEmitter.ts
  • apps/desktop/src/main/services/chat/cursorModelSelection.test.ts
  • apps/desktop/src/main/services/chat/cursorModelSelection.ts
  • apps/desktop/src/main/services/chat/cursorModelsDiscovery.test.ts
  • apps/desktop/src/main/services/chat/cursorModelsDiscovery.ts
  • apps/desktop/src/main/services/chat/cursorSdkEventMapper.test.ts
  • apps/desktop/src/main/services/chat/cursorSdkEventMapper.ts
  • apps/desktop/src/main/services/chat/cursorSdkHooks.test.ts
  • apps/desktop/src/main/services/chat/cursorSdkHooks.ts
  • apps/desktop/src/main/services/chat/cursorSdkPool.test.ts
  • apps/desktop/src/main/services/chat/cursorSdkPool.ts
  • apps/desktop/src/main/services/chat/cursorSdkPreCompactContract.test.ts
  • apps/desktop/src/main/services/chat/cursorSdkProtocol.ts
  • apps/desktop/src/main/services/chat/cursorSdkTelemetry.test.ts
  • apps/desktop/src/main/services/chat/cursorSdkTelemetry.ts
  • apps/desktop/src/main/services/chat/cursorSdkWorker.ts
  • apps/desktop/src/main/services/chat/droidSdkEventMapper.test.ts
  • apps/desktop/src/main/services/chat/droidSdkEventMapper.ts
  • apps/desktop/src/main/services/chat/droidSdkPool.test.ts
  • apps/desktop/src/main/services/chat/droidSdkPool.ts
  • apps/desktop/src/main/services/chat/droidSdkProtocol.test.ts
  • apps/desktop/src/main/services/chat/droidSdkProtocol.ts
  • apps/desktop/src/main/services/chat/droidSdkTurnStream.test.ts
  • apps/desktop/src/main/services/chat/droidSdkTurnStream.ts
  • apps/desktop/src/main/services/chat/droidSdkWorker.ts
  • apps/desktop/src/main/services/chat/liveContextUsageEvent.ts
  • apps/desktop/src/main/services/chat/openCodeTurnUsage.test.ts
  • apps/desktop/src/main/services/chat/openCodeTurnUsage.ts
  • apps/desktop/src/main/services/chat/piSdkAuth.test.ts
  • apps/desktop/src/main/services/chat/piSdkAuth.ts
  • apps/desktop/src/main/services/chat/piSdkEnvironment.test.ts
  • apps/desktop/src/main/services/chat/piSdkEnvironment.ts
  • apps/desktop/src/main/services/chat/piSdkEventMapper.test.ts
  • apps/desktop/src/main/services/chat/piSdkEventMapper.ts
  • apps/desktop/src/main/services/chat/piSdkPool.test.ts
  • apps/desktop/src/main/services/chat/piSdkPool.ts
  • apps/desktop/src/main/services/chat/piSdkProtocol.test.ts
  • apps/desktop/src/main/services/chat/piSdkProtocol.ts
  • apps/desktop/src/main/services/chat/piSdkSelection.test.ts
  • apps/desktop/src/main/services/chat/piSdkSelection.ts
  • apps/desktop/src/main/services/chat/piSdkWorker.ts
  • apps/desktop/src/main/services/chat/piWorkerExits.test.ts
  • apps/desktop/src/main/services/chat/piWorkerExits.ts
  • apps/desktop/src/main/services/chat/providerUsageAccount.test.ts
  • apps/desktop/src/main/services/chat/providerUsageAccount.ts
  • apps/desktop/src/main/services/chat/servedModelMismatch.test.ts
  • apps/desktop/src/main/services/chat/servedModelMismatch.ts
  • apps/desktop/src/main/services/opencode/openCodeInventory.test.ts
  • apps/desktop/src/main/services/opencode/openCodeInventory.ts
  • apps/desktop/src/main/services/opencode/openCodeServerManager.ts
  • apps/desktop/src/main/services/projects/readOnlySqlite.test.ts
  • apps/desktop/src/main/services/projects/readOnlySqlite.ts
  • apps/desktop/src/main/services/shared/kimiCodeLogin.test.ts
  • apps/desktop/src/main/services/shared/kimiCodeLogin.ts
  • apps/desktop/src/main/services/shared/providerConfigHomes.test.ts
  • apps/desktop/src/main/services/shared/providerConfigHomes.ts
  • apps/desktop/src/main/services/shared/utils.ts
  • apps/desktop/src/main/services/usage/accountBalance.ts
  • apps/desktop/src/main/services/usage/cursorDashboardUsage.test.ts
  • apps/desktop/src/main/services/usage/cursorDashboardUsage.ts
  • apps/desktop/src/main/services/usage/cursorUsageMapping.test.ts
  • apps/desktop/src/main/services/usage/cursorUsageMapping.ts
  • apps/desktop/src/main/services/usage/extraProviderQuota.test.ts
  • apps/desktop/src/main/services/usage/extraProviderQuota.ts
  • apps/desktop/src/main/services/usage/ledgers/acpProviderLedgers.ts
  • apps/desktop/src/main/services/usage/ledgers/ledgerScanCore.ts
  • apps/desktop/src/main/services/usage/ledgers/localUsageLedgers.historyScanners.test.ts
  • apps/desktop/src/main/services/usage/ledgers/localUsageLedgers.ts
  • apps/desktop/src/main/services/usage/providerLedgerFormats.ts
  • apps/desktop/src/main/services/usage/providerQuotaParsers.test.ts
  • apps/desktop/src/main/services/usage/providerQuotaParsers.ts
  • apps/desktop/src/main/services/usage/quotaBurnRate.test.ts
  • apps/desktop/src/main/services/usage/quotaBurnRate.ts
  • apps/desktop/src/main/services/usage/sharedUsageTracking.ts
  • apps/desktop/src/main/services/usage/tokenSplit.ts
  • apps/desktop/src/main/services/usage/turnUsageLedger.test.ts
  • apps/desktop/src/main/services/usage/turnUsageLedger.ts
  • apps/desktop/src/main/services/usage/turnUsageReconcilers.test.ts
  • apps/desktop/src/main/services/usage/turnUsageReconcilers.ts
  • apps/desktop/src/main/services/usage/usageAccountId.ts
  • apps/desktop/src/main/services/usage/usageLedgerScanners.ts
  • apps/desktop/src/main/services/usage/usageLedgerWorker.ts
  • apps/desktop/src/main/services/usage/usageLedgerWorkerClient.test.ts
  • apps/desktop/src/main/services/usage/usageLedgerWorkerClient.ts
  • apps/desktop/src/main/services/usage/usagePricing.test.ts
  • apps/desktop/src/main/services/usage/usagePricing.ts
  • apps/desktop/src/main/services/usage/usageResearchReport.test.ts
  • apps/desktop/src/main/services/usage/usageResearchReport.ts
  • apps/desktop/src/main/services/usage/usageResearchUploader.test.ts
  • apps/desktop/src/main/services/usage/usageResearchUploader.ts
  • apps/desktop/src/main/services/usage/usageTrackingService.test.ts
  • apps/desktop/src/main/services/usage/usageTrackingService.ts
  • apps/desktop/src/main/services/usage/windowAutoStart.ts
  • apps/desktop/src/renderer/components/chat/AgentChatComposer.test.tsx
  • apps/desktop/src/renderer/components/chat/AgentChatComposer.tsx
  • apps/desktop/src/renderer/components/chat/AgentChatPane.test.tsx
  • apps/desktop/src/renderer/components/chat/AgentChatPane.tsx
  • apps/desktop/src/renderer/components/chat/usage/contextUsageModel.test.ts
  • apps/desktop/src/renderer/components/chat/usage/contextUsageModel.ts
  • apps/desktop/src/renderer/components/settings/ProductAnalyticsSection.test.tsx
  • apps/desktop/src/renderer/components/settings/ProductAnalyticsSection.tsx
  • apps/desktop/src/renderer/components/settings/ProvidersSection.test.tsx
  • apps/desktop/src/renderer/components/settings/providers/acpProviders.tsx
  • apps/desktop/src/renderer/components/shared/ModelPicker/ModelListRow.tsx
  • apps/desktop/src/renderer/components/shared/ModelPicker/ModelPicker.test.tsx
  • apps/desktop/src/renderer/components/shared/ModelPicker/ModelPicker.tsx
  • apps/desktop/src/renderer/components/shared/ModelPicker/ModelPickerContent.tsx
  • apps/desktop/src/renderer/components/shared/ModelPicker/modelCatalog.test.ts
  • apps/desktop/src/renderer/components/shared/ModelPicker/modelCatalog.ts
  • apps/desktop/src/renderer/components/terminals/ToolLogos.tsx
  • apps/desktop/src/renderer/components/terminals/cliLaunch.test.ts
  • apps/desktop/src/renderer/components/usage/HeaderUsageControl.tsx
  • apps/desktop/src/renderer/components/usage/UsageLimitsBand.tsx
  • apps/desktop/src/shared/cliLaunch.ts
  • apps/desktop/src/shared/contextCompaction.ts
  • apps/desktop/src/shared/modelRegistry.test.ts
  • apps/desktop/src/shared/modelRegistry.ts
  • apps/desktop/src/shared/piThinkingLevels.ts
  • apps/desktop/src/shared/remoteLoopbackUrl.ts
  • apps/desktop/src/shared/types/chat.ts
  • apps/desktop/src/shared/types/index.ts
  • apps/desktop/src/shared/types/turnUsage.ts
  • apps/desktop/src/shared/types/usage.ts
  • apps/desktop/src/shared/usageResearch.ts
  • apps/ios/ADE/Models/RemoteModels.swift
  • apps/ios/ADE/Views/Work/WorkEventMapping.swift
  • apps/ios/ADE/Views/Work/WorkModels.swift
  • apps/ios/ADE/Views/Work/WorkTimelineHelpers.swift
  • apps/ios/ADE/Views/Work/WorkTranscriptParser.swift

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@cursor

cursor Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_a34210fe-baa9-499f-8d3f-5e381b695f21)

arul28 and others added 2 commits September 23, 2026 16:07
… -0 for a UTC offset

gitleaks read `modelToken: "claude-opus-4.6"` in the ACP coordinator test as a
generic API key; the test helper now takes `model`. Under TZ=UTC the offset
tests built `-0` from `-getTimezoneOffset()`, while the report sends `0`.

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@arul28
arul28 merged commit 0de862d into main Sep 23, 2026
39 of 40 checks passed
@arul28
arul28 deleted the ade/ade-router-f30a1b5e branch September 23, 2026 20:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant