Skip to content

test(server): correct Windows path and settings assertions - #30983

Merged
Yash-Singh1 merged 1 commit into
pingdotgg:mainfrom
ElliotDrel:t3/windows-test-assertions
Nov 5, 2026
Merged

Yash-Singh1 merged 1 commit into
pingdotgg:mainfrom
ElliotDrel:t3/windows-test-assertions

Conversation

@ElliotDrel

@ElliotDrel ElliotDrel commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #30950.

Windows server tests searched JSON-serialized payloads for unescaped paths, assumed POSIX repository-root settings lookup, and used a literal POSIX Codex path suffix. This test-only fix matches JSON encoding, checks platform-specific settings selection with direct root precedence coverage, and builds the suffix with NodePath.join. Production quoting and runtime behavior are unchanged.

Scope and approval

This is a focused correction of existing Windows test expectations under the small, obvious-bug contribution exception. It changes three test files, adds no skips or production behavior, and leaves maintainer acceptance pending.

Verification on Windows:

  • Three affected files: 327 passed, 13 existing skips, 1 timeout in the unchanged office/EPUB archive-extraction neighbor. Isolated attachment-file rerun: 29 passed and the same archive test timed out.
  • All 17 reported assertion failures passed; final settings case rerun passed.
  • Targeted lint, formatting, server typecheck, and server bundle build passed.

Current-head hosted CI: all eight required checks pass at 6ec72888b69c5b8a9916517b59e74d8d187bc807; CodeRabbit reports no actionable findings.

Implemented by gpt-6.1-sol (medium reasoning) through the Codex harness.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-04T16:41:15.162106Z 6ec7288 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions github-actions Bot added the vouch:unvouched PR author is not yet trusted in the VOUCHED list. label Nov 4, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 6ec7288

Macroscope's review found this PR approvable — This change adjusts Windows path and settings assertions in server tests. Its scope is confined to ignored test files, with no production behavior, product-default, or diagnostic-suppression changes.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

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

@github-actions github-actions Bot added the size:M 30-99 changed lines (additions + deletions). label Nov 4, 2026
@coderabbitai

coderabbitai Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

Server test expectations now account for JSON-escaped attachment paths, platform-specific Claude settings lookup, and platform-specific path separators. The changes update tests only.

Changes: Windows test expectations

Layer / File(s) Summary
JSON-escaped attachment paths
apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts, apps/server/src/provider/userInputAttachments.test.ts
Attachment-path assertions now expect JSON-escaped paths, including paths with quoted filenames and the __proto__ question key.
Platform-specific settings and paths
apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts, apps/server/src/provider/Drivers/CodexDriver.test.ts
Claude settings assertions now account for Windows working-directory lookup and POSIX repository-root lookup. The Codex shadow-home path expectation now uses NodePath.join.

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

Change: Other

Suggested reviewers: maria-rcks

Merge Risk: Minimal · up to 6ec72

The PR only corrects platform-specific test expectations and introduces no established current-head production or test risk.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title "test(server): correct Windows path and settings assertions" matches the change. The PR updates Windows server tests so they compare JSON-escaped paths, checks platform-specific settings sel…
Linked Issues check Passed Issue #30950 has one directly linked target and no active parent context. Its coding requirements are three test-only corrections. (1) JSON-escaped paths: ClaudeAdapterV2.test.ts now compares JSON.str…
Out of Scope Changes check Passed The whole-PR diff from merge base 9e85538 to head 6ec7288 touches only three test files: ClaudeAdapterV2.test.ts, CodexDriver.test.ts, and userInputAttachments.test.ts. All edits are assertion or expe…
Description check Passed The description is mostly complete. It explains the Windows test problem, the corrective changes, scope exception, verification results, CI status, and agent attribution. The content is provided witho…
Full details: Title check

Explanation

The title "test(server): correct Windows path and settings assertions" matches the change. The PR updates Windows server tests so they compare JSON-escaped paths, checks platform-specific settings selection, and builds the Codex path suffix with NodePath.join. It is a test-only change with no production code changes. The title follows conventional commit form and is specific enough for a teammate to understand the main change.

Full details: Linked Issues check

Explanation

Issue #30950 has one directly linked target and no active parent context. Its coding requirements are three test-only corrections. (1) JSON-escaped paths: ClaudeAdapterV2.test.ts now compares JSON.stringify(path).slice(1, -1) inside JSON.stringify(payload) at lines 2038, 2087, 2106, 2168, and 2381. This is the correct depth for a path embedded in a JSON string. userInputAttachments.test.ts now expects JSON.stringify(path) and JSON.stringify(path + ".txt") at lines 296, 357, 1149, and 1160. This matches the production JSON quoting. Content assertions are kept. (2) Claude settings lookup: the tool-search test now uses HostProcess.Platform. On win32 the worktree case resolves from cwd and yields "true" or undefined as expected. On POSIX the previous expectations for worktree and packages/app are kept, and a repo-root case is added. Local settings still beat user settings. (3) Codex suffix: CodexDriver.test.ts builds the expected shadow path with NodePath.join("providers", "codex", instanceId, "shadow"). No skip or weakened assertion is introduced. Limits: the diff confirms the edits but not the imports of HostProcess and NodePath. The Windows pass counts and the typecheck result are author-reported, not independently rerun.

Full details: Out of Scope Changes check

Explanation

The whole-PR diff from merge base 9e85538 to head 6ec7288 touches only three test files: ClaudeAdapterV2.test.ts, CodexDriver.test.ts, and userInputAttachments.test.ts. All edits are assertion or expectation changes that map to the three objectives in #30950. No production source file changed. The ACP detached .cmd hang (#29088, PR #30544) is not touched. No unrelated refactoring, new skips, or removed assertions appear in the reviewed hunks. The change to the userInputAttachments proto and quoted-filename expectations sits on lines that already assert the same attachment path, so it stays within the JSON-escaping objective.

Full details: Description check

Explanation

The description is mostly complete. It explains the Windows test problem, the corrective changes, scope exception, verification results, CI status, and agent attribution. The content is provided without the template's explicit Problem and Change headings, but those details are clear from the opening paragraphs.

Finishing Touches
Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 9e85538 and 6ec7288.

Files selected for processing: 3
  • apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts
  • apps/server/src/provider/Drivers/CodexDriver.test.ts
  • apps/server/src/provider/userInputAttachments.test.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.

@Yash-Singh1
Yash-Singh1 merged commit 268e581 into pingdotgg:main Nov 5, 2026
31 checks passed
@ElliotDrel
ElliotDrel deleted the t3/windows-test-assertions branch November 5, 2026 22:18
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Nov 6, 2026
**v0.1.8-nightly.20261106.4247** · 67 changes from 19 contributors

- **Environment dictation.** Choose an environment for dictation in web and desktop, including desktop browser annotations.
- **Fresh sessions.** Use /clear to start a fresh session without leaving your thread.
- **Scheduled task sessions.** Run scheduled tasks in one thread, either continuing the conversation or starting fresh each time.
- **Secret requests.** Answer secret requests using a secret provider instead of copying and pasting credentials.
- **Snooze questions.** Snooze a thread with a pending question and answer it later.
- **Claude Ultracode.** Use Ultracode at any effort level, including with Claude Sonnet 5.5 and Haiku 5.5.
- **Faster pull requests.** Pull requests open faster using data already available in the app.

### Plus 31 more bug fixes and performance improvements.

<details>
<summary>Full changelog</summary>

## What's Changed
* fix(threads): side chats inherit parent permissions by default by @extoci in pingdotgg/t3code#31114
* fix(server): threads follow their worktree's branch changes by @Yash-Singh1 in pingdotgg/t3code#31599
* fix(pi): usage reports include sessions stored in a --session-dir launch argument by @saphid in pingdotgg/t3code#30690
* perf(mobile): skip unchanged terminal toolbar fade updates by @saphid in pingdotgg/t3code#25312
* perf(mobile): assemble HTML replacements in one pass by @saphid in pingdotgg/t3code#25278
* perf(mobile): skip canceled SVG parsing by @saphid in pingdotgg/t3code#25314
* test(server): strengthen v1 cutover proof with event-stream waits and content snapshots by @saphid in pingdotgg/t3code#11869
* fix(contracts): a stored secret reference is always sensitive by @yordis in pingdotgg/t3code#31403
* fix(server): a settings save no longer reads an unreadable secret again by @yordis in pingdotgg/t3code#31226
* fix(threads): allow snoozing pending input requests by @saphid in pingdotgg/t3code#20058
* fix(server): repair cutover test crypto import breaking main CI by @Yash-Singh1 in pingdotgg/t3code#31630
* feat(server): sends can start a fresh provider session by @juliusmarminge in pingdotgg/t3code#30323
* feat: /clear starts a fresh session in the same thread by @juliusmarminge in pingdotgg/t3code#30325
* feat: scheduled tasks can run in one thread with a fresh session each run by @juliusmarminge in pingdotgg/t3code#30326
* fix(web): dragging a sidebar thread no longer scrolls the list out from under the pointer by @juliusmarminge in pingdotgg/t3code#30346
* fix(assets): preserve the PR repository for GitHub media by @juliusmarminge in pingdotgg/t3code#21631
* fix(server): load PR uploads from SSO organizations by @juliusmarminge in pingdotgg/t3code#21632
* fix(mobile): the Duo inspector stops at its widest instead of vanishing by @juliusmarminge in pingdotgg/t3code#31665
* test(server): launcher PATH lookup test no longer drops the Windows drive letter by @tris203 in pingdotgg/t3code#22534
* test(server): replay tests delete their temp directories by @only21mil in pingdotgg/t3code#23445
* fix(mobile): transcribe Android audio during recording by @PixPMusic in pingdotgg/t3code#31300
* test(web): linked-environment subagents keep opening in their own thread by @RealDoc06 in pingdotgg/t3code#26492
* test(server): pin post-commit outbox settle boundary by @Narayan201120 in pingdotgg/t3code#27560
* test: remove unreachable github cli decoding test by @t3-code-bot[bot] in pingdotgg/t3code#28115
* test(server): retain delegated child events when detaching a parent by @benjamin-di in pingdotgg/t3code#29622
* test(lint): pin which ResizeObserver constructions no-raw-resize-observer reports by @only21mil in pingdotgg/t3code#28781
* test(mobile): drop two deleted tests from the React test list by @only21mil in pingdotgg/t3code#28800
* test(web): worked-for expand test waits for the timeline to finish loading by @saphid in pingdotgg/t3code#29661
* test(web): avoid PDF worker startup timeouts in attachment tests by @voltcrash in pingdotgg/t3code#29933
* test(web): source control writing settings test waits for the reset button by @juliusmarminge in pingdotgg/t3code#30372
* test(web): keep the work heading test inside the viewport by @voltcrash in pingdotgg/t3code#30613
* test: use an empty config file instead of the null device for git fixtures on Windows by @Pyseph in pingdotgg/t3code#30772
* test: remove stale tests for unused thread and onboarding helpers by @t3-code-bot[bot] in pingdotgg/t3code#30817
* test(server): correct Windows path and settings assertions by @ElliotDrel in pingdotgg/t3code#30983
* feat(claude): Ultracode works with any effort, like Claude Desktop by @Bil0000 in pingdotgg/t3code#27034
* perf(pr): pull requests paint from data already held, on web, desktop and mobile by @Bil0000 in pingdotgg/t3code#27798
* fix(mobile): approval card buttons line up by @shivamhwp in pingdotgg/t3code#31415
* fix(gitlab): author names link to GitLab profiles by @TonybynMp4 in pingdotgg/t3code#30418
* fix(gitlab): merge messages drop agent credits by @TonybynMp4 in pingdotgg/t3code#30441
* fix(gitlab): file and image comments appear as review threads by @TonybynMp4 in pingdotgg/t3code#30425
* fix(web): screen readers no longer read out a secret typed into the request card by @juliusmarminge in pingdotgg/t3code#31653
* perf(pr): actions update every client from the host's reply instead of re-reads by @Bil0000 in pingdotgg/t3code#25761
* feat(mobile): start side chats with /side by @juliusmarminge in pingdotgg/t3code#31709
* feat(claude): expose Ultracode on Claude Sonnet 5.5 and Haiku 5.5 by @DrSeedon in pingdotgg/t3code#30781
* feat(settings): Simlock, Antigravity and OpenCode credentials can come from a secret provider by @juliusmarminge in pingdotgg/t3code#31652
* refactor(mobile): screens declare what they are; layout and AppBar own every platform bar decision by @juliusmarminge in pingdotgg/t3code#31310
* fix(server): a saved source control token that can't be read no longer falls back to another account by @juliusmarminge in pingdotgg/t3code#31646
* feat(secrets): answer a secret request with a secret provider reference by @juliusmarminge in pingdotgg/t3code#31670
* fix(settings): removing a secret provider clears the fields that used it by @juliusmarminge in pingdotgg/t3code#31651
* docs(user): explain secret providers and secret requests by @juliusmarminge in pingdotgg/t3code#31654
* feat(server): transcribe audio on a chosen environment by @juliusmarminge in pingdotgg/t3code#30625
* feat(web): opt into environment dictation on this device by @juliusmarminge in pingdotgg/t3code#30623
* feat(desktop): dictate into browser annotations with the same consent by @juliusmarminge in pingdotgg/t3code#30624
* feat(mobile): opt in to dictation on a paired environment by @juliusmarminge in pingdotgg/t3code#31059
* fix(web): keep the folder path caret in place while editing by @juliusmarminge in pingdotgg/t3code#31642
* perf(mobile): call the highlights lexer through Nitro, up to 10x faster calls on Android by @camchis in pingdotgg/t3code#31188
* fix(claude): turns use the downloaded model catalog by @juliusmarminge in pingdotgg/t3code#31717
* fix(gitlab): bot authors are flagged as bots by @TonybynMp4 in pingdotgg/t3code#30383
* fix(gitlab): merge requests can edit their labels by @TonybynMp4 in pingdotgg/t3code#30483
* perf(mobile): faster thread sync, connects, and reconnects on bad wifi by @Bil0000 in pingdotgg/t3code#28487
* fix(mobile): iPad composer drops when the keyboard floats or minimizes by @juliusmarminge in pingdotgg/t3code#31251
* perf(mobile): stop iOS syntax highlighting from looking up a thread-local on every lexer call by @camchis in pingdotgg/t3code#31187
* fix(gitlab): edited comments wake PR watchers by @TonybynMp4 in pingdotgg/t3code#30403

## New Contributors
* @benjamin-di made their first contribution in pingdotgg/t3code#29622
* @ElliotDrel made their first contribution in pingdotgg/t3code#30983
* @DrSeedon made their first contribution in pingdotgg/t3code#30781

**Full Changelog**: pingdotgg/t3code@v0.1.8-nightly.20261105.4234...v0.1.8-nightly.20261106.4247

</details>


Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.8-nightly.20261106.4247
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:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Windows server tests assume unescaped paths and POSIX settings lookup

2 participants