Skip to content

feat(observability): honor OTEL_*_EXPORTER=none per signal - #13736

Merged
juliusmarminge merged 1 commit into
pingdotgg:mainfrom
yordis:yordis/feat-otel-exporter-selection
Sep 26, 2026
Merged

juliusmarminge merged 1 commit into
pingdotgg:mainfrom
yordis:yordis/feat-otel-exporter-selection

Conversation

@yordis

@yordis yordis commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor
  • The OpenTelemetry spec defines OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER, and OTEL_LOGS_EXPORTER as the way to turn off one signal, and T3 Code ignored them, so the only way to stop, say, log export was OTEL_SDK_DISABLED, which also stops traces and metrics.
  • A machine-wide OTEL_LOGS_EXPORTER=none (common when a collector only accepts some signals) silently had no effect on T3 Code, unlike every other SDK on that machine.
  • The spec requires an unrecognized exporter name to warn and be ignored rather than change behavior silently.

Summary by CodeRabbit

  • New Features

    • Added support for OTEL exporter settings to selectively enable or disable trace, metric, and log export. The none setting disables only its corresponding signal, while otlp uses the default behavior.
    • Exporter settings are forwarded when running through WSL.
  • Documentation

    • Clarified how exporter settings interact with endpoints and how unsupported values are handled.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 26, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 26, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 7a8b16e

Macroscope's review found this PR approvable — The PR adds a small, operator-controlled per-signal OTEL exporter setting while preserving existing behavior when the settings are absent. Its impact is limited to remote telemetry routing, includes focused coverage for precedence and disabling behavior, and does not alter schemas, deployment, or product defaults.

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

@coderabbitai

coderabbitai Bot commented Sep 26, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: c800f8eb-b94a-4a50-ba58-4ad34c0debc7

📥 Commits

Reviewing files that changed from the base of the PR and between 6530de0 and 7a8b16e.

📒 Files selected for processing (4)
  • apps/desktop/src/backend/DesktopBackendConfiguration.ts
  • docs/operations/observability.md
  • packages/shared/src/otelEnvironment.test.ts
  • packages/shared/src/otelEnvironment.ts

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


📝 Walkthrough

Walkthrough

The OTEL environment loader now supports per-signal exporter settings. A none setting disables its signal, while otlp and endpoint resolution retain the documented behavior. The desktop backend forwards the exporter variables to WSL.

Changes

Per-signal OTEL exporter selection

Layer / File(s) Summary
Parse exporter settings and resolve signals
packages/shared/src/otelEnvironment.ts, packages/shared/src/otelEnvironment.test.ts
The loader parses case-insensitive, comma-separated exporter values for traces, metrics, and logs. none disables the signal before endpoint resolution; otlp takes precedence when both recognized values are present. Tests cover parsing, warnings, and endpoint resolution.
Forward and document exporter settings
apps/desktop/src/backend/DesktopBackendConfiguration.ts, docs/operations/observability.md
The desktop backend forwards all three exporter variables to WSL. The observability documentation describes per-signal disabling and exporter defaults.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to 7a8b1

The per-signal exporter behavior appears mergeable after normal checks.

Security Architecture Review

Security architecture risk: 🔵 Low · up to 7a8b1

The change lets operators disable individual telemetry exports without adding a new exporter or destination. It uses an existing configuration boundary, though environment ownership in every deployment has not been verified.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — An actor able to set a process’s telemetry environment can now suppress one OTLP signal, including in the WSL child when the desktop forwards that setting. This does not by itself confer control of a new destination.

Security Findings and Attack Paths

  • inferred — No PR-introduced privilege escalation or new export sink was established: the same environment boundary already carried endpoint controls and a global disable setting. Who can set that environment in production remains unverified.

Trust Boundaries and Controls

  • observed — Exporter names are restricted to otlp and none, while WSL bootstrap authority remains with the desktop launcher. An explicit T3 export URL can still send a signal despite none; that precedence is documented rather than a newly introduced bypass.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description clearly explains the problem and motivation, but it omits the required What Changed and Why headings and does not include the checklist. It also does not explicitly summarize the imple… Add the template sections. Describe the implementation under What Changed, explain the motivation under Why, state that UI Changes are not applicable, and complete the Checklist.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: per-signal handling of OTEL_*_EXPORTER=none settings.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
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.
Full details: Description check

Explanation

The description clearly explains the problem and motivation, but it omits the required What Changed and Why headings and does not include the checklist. It also does not explicitly summarize the implementation changes.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

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

@juliusmarminge
juliusmarminge merged commit 74ee515 into pingdotgg:main Sep 26, 2026
23 checks passed
@yordis
yordis deleted the yordis/feat-otel-exporter-selection branch September 26, 2026 22:08
aorwall added a commit to aorwall/t3code that referenced this pull request Sep 27, 2026
Merges `pingdotgg/t3code` `main` into the fork: `eeea71a88` →
`ab099178a` (35 commits). Branched from `main`; no open merge PR to
stack on.

## Merge
- **Conflicts:** only `pnpm-lock.yaml`. I took upstream's copy and
re-ran `install.mjs`, which put the fork's own entries back
(`moatless-api`, `mermaid`).
- **Silent merges:** git merged nine other files both sides had changed
without stopping (`ChatView.tsx`, `Sidebar.tsx`, `MessagesTimeline.tsx`,
`ui/sidebar.tsx`, `__root.tsx`, `settings.tsx`, `entities.ts`,
`apps/web/package.json`, `GitVcsDriverCore.test.ts`). The duplicate-line
and dropped-side checks found nothing, and every delta guard held,
including `FEATURES.serverUpdateBanner` after pingdotgg#13083 rewrote the offline
banner code.
- **File counts:** 126 files landed, exactly the 126 upstream changed.
The fork delta is 756 files, unchanged.
- **New upstream files in fork-owned areas:** three matched the sweep.
`auth/replayMarkers.ts` and its test are upstream's own server auth;
`ConnectionFormField.test.tsx` is a mobile test. Neither touches a
fork-owned surface.
- **`UnsupportedMethodError` union:** no methods to add or drop.

## Verification
`verify.mjs` (full run) passed all 10 checks: duplicate-adds, tripwires,
resolution-check, unsupported-methods, lockfile, fmt, lint, typecheck,
build and test.

## Usable as-is
- Queued messages now send while their thread is not open
(`QueuedMessageSender`, `sendQueuedMessage.ts`, pingdotgg#13764).
- Keyboard navigation for Usage, plus `useNavigateBack` (pingdotgg#10158).
- Usage identifies which side has the version mismatch (pingdotgg#8208) and
tolerates newer provider variants (pingdotgg#10076).
- Accessibility fixes: control announcements, sidebar traversal, focus
rings (pingdotgg#13491, pingdotgg#13344).
- Other web fixes: reasoning-arrow alignment, tooltip resize, Mod+B on
non-Latin keyboard layouts, terminal links dropping a trailing colon.
- Faster project and thread sorting, and saving the thread-list cache no
longer freezes the UI (pingdotgg#13759, pingdotgg#13767).
- Mobile link and composer fixes.

## Unsupported in Moatless / needs implementation
- Nothing new. The upstream changes in this range to editor discovery
(pingdotgg#13669), Cursor Keychain prompts (pingdotgg#13870) and device tools (pingdotgg#13908) sit
behind surfaces the fork already gates (`openInEditor`,
`providerConfiguration`, `deviceHub`).

## Backend behavior to consider reproducing in Moatless
Added to `docs/fork/gaps.md` under *Runtime fixes upstream made to its
own server*:
- **pingdotgg#13812:** the background git status fetch passes `--no-auto-gc`.
Without it, a failing auto gc leaves a full-size `tmp_pack_*` behind on
every fetch and can fill the disk.
- **pingdotgg#13765:** the settlement and PR sweeps read only threads that can
still settle.
- **pingdotgg#13774:** the relay and session reaper no longer wake up on idle
sessions.

Also relevant but not recorded as gaps: pingdotgg#13736 (`OTEL_*_EXPORTER=none`
honoured per signal) and pingdotgg#13695 (expired replay-protection files pruned
from the secrets directory).

## Caveat
Running `vp install` again after committing changes two `type-fest`
entries in the lockfile (5.7.0 → 5.10.0). I kept the committed
re-derived lockfile, which passes the `lockfile` check.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---
Moatless task:
https://moatless.soaplabstest.com/tasks/06f86e30-4ca2-4771-bf22-feb0699349ff
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 27, 2026
## What's Changed
* fix(clients): hide duplicate Cursor Keychain prompts by @Yash-Singh1 in pingdotgg/t3code#13870
* feat(observability): honor OTEL_*_EXPORTER=none per signal by @yordis in pingdotgg/t3code#13736
* fix(web): align reasoning arrows with tool calls by @Adamulek123 in pingdotgg/t3code#13850
* fix(server): let agents use simctl and adb alongside device tools by @juliusmarminge in pingdotgg/t3code#13908
* fix(web): environment status tooltip resizes when the status changes by @BearHuddleston in pingdotgg/t3code#13845

## New Contributors
* @BearHuddleston made their first contribution in pingdotgg/t3code#13845

**Full Changelog**: pingdotgg/t3code@v0.0.43-nightly.20260926.2318...v0.0.43-nightly.20260927.2331

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.43-nightly.20260927.2331
ZytriuNks added a commit to ZytriuNks/t3code that referenced this pull request Sep 28, 2026
* test(relay): remove constant-restating database mode test (pingdotgg#13932)

* fix(server): let agents use simctl and adb alongside device tools (pingdotgg#13908)

* feat(observability): honor OTEL_*_EXPORTER=none per signal (pingdotgg#13736)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>

* fix(clients): hide duplicate Cursor Keychain prompts (pingdotgg#13870)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(build): validate Linux node-pty prebuilds in Windows artifacts (pingdotgg#13867)

* test(usage): assert contract mismatch details (pingdotgg#13861)

* fix(usage): identify client version mismatches (pingdotgg#8208)

* fix(usage): omit Cursor warning when no login is saved (pingdotgg#13820)

* fix(usage): tolerate newer provider variants (pingdotgg#10076)

* fix(server): background git status fetches no longer fill the disk with failed repacks (pingdotgg#13812)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf(server): cut idle wakeups from the Connect relay and session reaper (pingdotgg#13774)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf(clients): saving the thread list cache no longer freezes the UI (pingdotgg#13767)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf(server): background sweeps only read threads that can still settle (pingdotgg#13765)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(observability): the renderer trace proxy stops tracing itself (pingdotgg#13761)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf(clients): sort projects and settled threads without re-parsing dates per comparison (pingdotgg#13759)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf(server): opening Diagnostics no longer loads the whole trace ring into memory (pingdotgg#13763)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf(observability): stop writing empty spans on spawns, projected events, and idle polls (pingdotgg#13756)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(server): let Antigravity inspect unsupported files by path (pingdotgg#13339)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Show a focus ring on sidebar thread and draft rows (pingdotgg#13344)

* fix(server): bump node-pty to 1.2.0-beta.15 for linux-arm64 prebuild (pingdotgg#13748)

* fix(server): prune expired replay-protection files from the secrets directory (pingdotgg#13695)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(server): installed editors no longer vanish when discovery is slow (pingdotgg#13669)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(editors): stop treating the agy CLI as the Antigravity IDE (pingdotgg#7079)

* fix(opencode): accept v2 serve ready line when spawning server (pingdotgg#13651)

* fix(usage): hide the Cursor keychain prompt when Cursor isn't set up (pingdotgg#13714)

* perf(server): stop re-running git for every project each minute (pingdotgg#13689)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(observability): record event loop stalls in the server trace (pingdotgg#13697)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf(server): per-thread settlement and PR checks no longer rebuild the whole thread list (pingdotgg#13691)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(client): slow servers finish loading the thread list instead of loading it twice (pingdotgg#13683)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf(server): build the thread list snapshot without decoding it twice (pingdotgg#13693)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(observability): write a server heap snapshot on SIGUSR2 (pingdotgg#13694)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf(server): pull request sync reads only threads with linked pull requests (pingdotgg#13704)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(cli): summarize the server trace file from the command line (pingdotgg#13698)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(server): the SQLite WAL file shrinks back after large writes (pingdotgg#13684)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(cli): t3 triage points agents at log files that exist (pingdotgg#13685)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(observability): name the command on subprocess spans (pingdotgg#13701)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf(server): stop remapping every thread on each thread event (pingdotgg#13720)

Co-authored-by: Claude <noreply@anthropic.com>

* refactor(observability): name each service after its application (pingdotgg#13699)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>

* fix(usage): price Cursor cache savings by base model (pingdotgg#13731)

* perf(server): avoid rereading unchanged files in review previews (pingdotgg#13395)

* fix(server): load Cursor keyring with createRequire (pingdotgg#13678)

* fix(terminal): settling a thread closes its idle shells (pingdotgg#13673)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(observability): honor the standard OTLP endpoint, headers, and protocol variables (pingdotgg#13492)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>

* fix(sqlite): retry failed statement preparations (pingdotgg#10584)

Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* feat(usage): read cursor, opencode, and antigravity history (pingdotgg#10409)

Co-authored-by: Yash Singh <saiansh2525@gmail.com>

* fix(usage): price Claude fast-mode requests at the fast rate (pingdotgg#13599)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(dev): one t3.json setup action that works on every OS (pingdotgg#13589)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(release): ship a Linux .deb that updates itself (pingdotgg#13575)

The Linux release build now also makes a .deb in the same electron-builder
run as the AppImage, and the release publishes it. electron-builder lists it
in latest-linux.yml and writes resources/package-type into it, so the app
updates a .deb install through electron-updater, which installs the new .deb
with dpkg. The desktop updater now allows that path.

The .deb uses xz in threaded mode (XZ_DEFAULTS=-T0): 113 MB in place of
141 MB with gzip. The Linux arm64 release job moves to a 16-vCPU Blacksmith
arm64 runner. The download page, README, install guide, and release docs
list the .deb.

Based on community work in pingdotgg#4071, pingdotgg#5139, pingdotgg#4900, and pingdotgg#4887.

Co-authored-by: chukfinley <chuk@chuk.dev>
Co-authored-by: Primož Ajdišek <bigpod@bigpod.si>
Co-authored-by: benthecarman <benthecarman@live.com>
Co-authored-by: NaveDanan <nave0712@gmail.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(clients): a preview app no longer knocks the desktop's own server offline (pingdotgg#13577)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(mcp): preview errors tell agents what to do instead (pingdotgg#13559)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(mcp): preview snapshots fit in the agent's tool output again (pingdotgg#13558)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(server): newer Codex models get T3 Code's instructions again (pingdotgg#13547)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(clients): sync status no longer flickers when opening running threads (pingdotgg#13551)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* ci(relay): add a forced manual relay deploy (pingdotgg#13550)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(server): report the Grok account email so usage limits merge across environments (pingdotgg#12588)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: macroscopeapp[bot] <170038800+macroscopeapp[bot]@users.noreply.github.com>

* fix(server): Grok accounts with no usage yet no longer vanish from Limits (pingdotgg#12799)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>

* fix(relay): export tunnel cleanup counters to Axiom (pingdotgg#13528)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(grok): offer one-click updates through `grok update` (pingdotgg#13523)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(connect): remove tunnels after hosts go offline (pingdotgg#9386)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>

* feat(codex): require Codex 0.156 and regenerate its protocol (pingdotgg#13481)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(codex): the protocol generator runs again on Effect rc.115 (pingdotgg#13480)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(antigravity): keep Windows runtime unpacking under MAX_PATH (pingdotgg#13389)

Co-authored-by: javiergusart <42075376+javiergusart@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(acp): keep one answer when a running tool reports progress (pingdotgg#13386)

Co-authored-by: adeebahmad01 <52380344+adeebahmad01@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(marketing): use the official OpenCode and Antigravity logos (pingdotgg#13365)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(observability): a malformed OTEL_RESOURCE_ATTRIBUTES no longer stops startup (pingdotgg#13469)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>

* feat(server): show and redeem Claude banked resets (pingdotgg#13118)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* chore(ci): use GPT 6 Sol Max for check agents (pingdotgg#13473)

* fix(server): keep Codex's reset answer when the re-probe fails (pingdotgg#13363)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(server): preserve racy edits in review diff previews (pingdotgg#12613)

Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* feat(observability): honor the OpenTelemetry kill switch (pingdotgg#13355)

Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>

* fix(shared): preserve final quoted empty CSV records (pingdotgg#11425)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* fix(server): stop replaying old agent alerts on restart (pingdotgg#13340)

* fix(providers): restore compatibility ranges for every harness (pingdotgg#13328)

* fix(ci): shard release tests like pull request CI (pingdotgg#13321)

* fix(sync): resolve wave1 test/build fallout from upstream rebase

After rebase of 78 upstream commits (78 picks, 70 drops) onto c37294d,
the following merge-conflict artefacts remained because the rebase
strategy kept fork-exclusive V2/Pi source while picking upstream
implementations of shared files:

- packages/shared/src/usageMerge.test.ts: removed orphan nested it()
  declaration from commit 9, removed dangling expect+}) from rebase
  residue, and renamed staleEnvironments -> contractMismatches to
  match the upstream field that commit 9/11/13 introduced (the fork
  exclusively uses the contractMismatches field name).
- apps/server/src/usage/usagePricing.ts: collapsed the doubly-nested
  conflict markers left by commits 61 and 75 in cacheSavingsUsd into
  the upstream clause that resolves to rateModel ?? record.model.
- apps/server/src/provider/Drivers/CursorDriver.ts: replaced with the
  upstream main implementation so the file matches the upstream
  auth/modelDiscovery shape; the fork V2 Cursor path was already
  covered by PiAdapterV2.test.ts (61/61 green) and is not touched.
- apps/server/src/provider/Layers/CursorProvider.test.ts: restored
  the fork-main version (252 lines) because the upstream version
  exercises a CursorProvider path that this fork does not implement
  (fork ships only the V2 Pi adapter and the legacy Cursor provider
  layer tests); 7/7 green.

Wave1 critical-point verification (vp test):
  packages/shared/src/usageMerge.test.ts                       30/30
  apps/server/src/orchestration-v2/Adapters/PiAdapterV2.test.ts 61/61
  apps/server/src/usage/UsageService.test.ts                  14/14
  apps/server/src/provider/Layers/CursorProvider.test.ts        7/7
  apps/server/src/provider/cursorCredentialStore.test.ts        1/1
  packages/shared/src/usageFormat.test.ts                      9/9
  packages/client-runtime/src/state/usage.test.ts              9/9
  apps/server/src/serverLogger.test.ts                         6/6
                                                              137/137

---------

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Tristan Knight <admin@snappeh.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Ryan Ilano <ryanilano@users.noreply.github.com>
Co-authored-by: Ephraim <ephraim39hr14m@gmail.com>
Co-authored-by: Bob Fowler <bob@rjf.ca>
Co-authored-by: Ishaan Kothari <ishaanko.mail@gmail.com>
Co-authored-by: Shirish Pothi <183252392+shirishpothi@users.noreply.github.com>
Co-authored-by: Guillermo Casanova <75276669+Gigioxx@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: chukfinley <chuk@chuk.dev>
Co-authored-by: Primož Ajdišek <bigpod@bigpod.si>
Co-authored-by: benthecarman <benthecarman@live.com>
Co-authored-by: NaveDanan <nave0712@gmail.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: macroscopeapp[bot] <170038800+macroscopeapp[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: javiergusart <42075376+javiergusart@users.noreply.github.com>
Co-authored-by: adeebahmad01 <52380344+adeebahmad01@users.noreply.github.com>
Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 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.

2 participants