Skip to content

🤖 tests: close the #7326 test follow-ups (refine seeding, try-lock attempt count, temp lock folders, foreign ENOENT) - #7493

Merged
ThomasK33 merged 1 commit into
mainfrom
followups/lock-tests
Oct 25, 2026
Merged

ThomasK33 merged 1 commit into
mainfrom
followups/lock-tests

Conversation

@ThomasK33

Copy link
Copy Markdown
Member

Summary

Test-only PR for the open test items of #7326 (phase 4 review follow-ups). It fixes one temp-root leak, removes a host-load race from the try-lock test, cleans up the temp lock folders of crossProcessLock.test.ts, and makes the foreign-holder test layer give ENOENT for a missing parent as the Node lock does. No product code changes.

Refs #7326

Items

#7326 item Result
Finding 3: a failed seed append leaks the temp root of the refine scenario Done. oneRefineApply (sessionLocks.callOptions.scenarios.testHarness.ts) now opens its try right after createTestHistoryService(), so the seeding (folder, config edit, appends) runs inside it and cleanup() always runs. The scenario is a function that a test calls, not a test file, so a try is its beforeEach.
PR 17 advisor item 1: the T5 test races one try-lock attempt against a 1 s timer Done. The test counts the attempts (each one links a record onto lockPath) and expects exactly 1. A second attempt moves the frozen clock past the deadline, so a retrying build still ends.
PR 17 advisor item 2: tempLockPath() leaves its folders Done. tempLockPath() records each folder, and a file-level afterEach removes them.
PR 6 (#7367) follow-up: the memory layer does not create the missing parent of lockPath Already done on main, no code here: #7376 added acquireAfterFolder (memorySessionLocks.testHarness.ts), which makes the folder through HostFiles before the take, and the contract case "a file lock creates its missing parent" (#7372) runs on the memory layer.
PR 6 (#7367) follow-up: a live fake holder refuses instead of ENOENT when createParentDirectory is false Done. wrapWithForeignHolders hands the call to the inner lock when createParentDirectory is false and the parent is gone. The inner lock then fails with ENOENT, as the Node lock does before it reads any holder. #7485 is still open, so fileLock.ts is not touched.
Finding 4: Windows path separators No code. Reasoned close in #7326: no CI lane runs this file on Windows.

Validation

  • T5 fails on the try-lock mutant: with crossProcessLock.ts:585 changed from >= to >, the test fails with "Expected: 1, Received: 2". It passes on main code.
  • The new contract test "foreign: a missing parent wins over a live holder when createParentDirectory is false" fails without the wrapper change (it gets the timeout error), and its second half (parent back, live holder refuses) fails if the wrapper always delegates.
  • A run of crossProcessLock.test.ts leaves no cross-process-lock-* folder from tempLockPath(). One older folder kind, cross-process-lock-fifo-* from the threadpool-starvation test, still stays behind: it is not made by tempLockPath() and is outside this item.

Risks

Low. Test code only. The foreign-holder change only affects tests that pass createParentDirectory: false with a missing parent.


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high • Cost: $198.14

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 25, 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-10-25T15:59:14.501098Z f4ac907 PR opened
🔒 Security Review ✅ Completed 2026-10-25T15:59:43.916810Z f4ac907 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

Copy link
Copy Markdown
Contributor

🟢 e2e stories (Haiku): 14 passed

27 agent steps · 7 replayed from cache · 32 model calls · 224.3k tokens (76% cached)
Spend: $0.09 of the $1.00 cap (proxy ledger)

All 14 tests in 9 files
Test Agent Time
🟢 chatRestart.e2e.ts · 1 passed 2 steps · 4 calls 23.9s
🟢 a chat survives a restart of the server 2 steps · 4 calls 23.9s
🟢 compaction.e2e.ts · 1 passed 3 steps · 8 calls 48.2s
🟢 /compact replaces the old chat with a summary 3 steps · 8 calls 48.2s
🟢 pluginTrustRestart.e2e.ts · 1 passed 4 steps · 2 calls 9.8s
🟢 a trusted plugin hook stays trusted after the server restarts 4 steps · 2 calls 9.8s
🟢 settingsRoundTrip.e2e.ts · 1 passed 3 steps · 5 calls 30.9s
🟢 a chat survives trips through Settings 3 steps · 5 calls 30.9s
🟢 sidebarPerWorkspace.e2e.ts · 1 passed 4 steps · 1 call 4.9s
🟢 a new workspace starts with its right sidebar collapsed while another keeps it open 4 steps · 1 call 4.9s
🟢 smoke.e2e.ts · 1 passed 2 steps · 1 call 3.0s
🟢 the agent opens the playground workspace 2 steps · 1 call 3.0s
🟢 streamErrors.e2e.ts · 1 passed 1 step · 1 call 6.5s
🟢 stream errors show in the chat, and the chat recovers 1 step · 1 call 6.5s
🟢 todoNudge.e2e.ts · 1 passed 2 steps · 4 calls 23.6s
🟢 the agent finishes open TODO items after the turn-end nudge 2 steps · 4 calls 23.6s
🟢 touchAlignment.e2e.ts · 6 passed 6 steps · 6 calls 22.8s
🟢 the Settings close button is level with the title on a touch screen 390px wide 1 step · 1 call 4.6s
🟢 the Settings close button is level with the title on a touch screen 768px wide 1 step · 1 call 4.1s
🟢 Backup settings checkboxes are small and level with their labels on a touch phone 1 step · 1 call 4.5s
🟢 the heartbeat checkbox is small and level with its label on a touch phone 1 step · 1 call 3.4s
🟢 a reply's model and time stay on one line on a touch phone 1 step · 1 call 3.2s
🟢 the workspace actions menu stays on the title row on a touch phone 1 step · 1 call 3.1s

e2e 0.20.0 · 2m 57s · web · run artifacts

🟢 e2e Electron stories (Haiku): 3 passed

3 agent steps · 3 model calls · 8.0k tokens (32% cached)
Spend: $0.01 of the $1.00 cap (proxy ledger)

All 3 tests in 3 files
Test Agent Time
🟢 electron/deepLink.e2e.ts · 1 passed 1 step · 1 call 12.5s
🟢 a deep link of a second launch starts a chat in the running app 1 step · 1 call 12.5s
🟢 electron/menuBar.e2e.ts · 1 passed 1 step · 1 call 6.3s
🟢 the workspace menu bar is the desktop title bar 1 step · 1 call 6.3s
🟢 electron/smoke.e2e.ts · 1 passed 1 step · 1 call 5.3s
🟢 Xum Electron opens the playground workspace 1 step · 1 call 5.3s

e2e 0.20.0 · 26.1s · electron · run artifacts

🟢 e2e agent repros (Haiku): no tests selected

Spend: $0.00 of the $1.00 cap (proxy ledger)

e2e 0.20.0 · 5.3s · 2 targets (web, phone) · run artifacts

@ThomasK33
ThomasK33 added this pull request to the merge queue Oct 25, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 25, 2026
@ThomasK33
ThomasK33 added this pull request to the merge queue Oct 25, 2026
Merged via the queue into main with commit e803893 Oct 25, 2026
33 of 34 checks passed
@ThomasK33
ThomasK33 deleted the followups/lock-tests branch October 25, 2026 16:30
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