[Tracking] #7648 follow-up: Windows updater availability findings and four review corrections

Closed
#7,872 6 comments 1 reaction 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
Over a week
Newbie friendliness
12/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
powershell, typescript
Domain
cli, devtools

Research direction

Start from the Windows updater files named in the thread: the lock release() path in the Codex CLI updater and cli-update-windows-observation.ts for directory identity, plus codex-cli-update.md for the structure manifest. Verify the closed-before-verifyHeld ordering statically and add the listed regression tests. Done when each of the six review threads has a linked fix or a documented disposition; native Windows runtime checks are out of scope.

Written by the indexing model from the issue text.

Description

bug platform
Client or integration

Codex CLI — Windows updater

Area

Platform (Windows / macOS / Linux)

Summary

Track the six unresolved review findings after #7648 merged as c655484d9cccf316f3da41047d508bf10d92070a (reviewed head 6618aadd6dd445001c433c86828cce8e90bee62c). Keep the integrated updater stack and superseded sibling PRs closed; do not reapply their old refusal paths. This is a bounded follow-up to the post-merge disposition request, not a replacement for the broader #2811 feature.

Reproduction

This follow-up is read-only source/review verification, not a new Windows runtime reproduction. The relevant job-store, selection-gate, recovery and ACL product-file blobs still match the merge on current dev (checked 2026-10-28). The six review threads remain unresolved. Merge/security acceptance and passing CI do not by themselves dispose of these functional/availability findings.

Availability findings
  • Major — lock release after verification failure: r4396883857. release() sets closed before verifyHeld(); an exception skips releaseLock() while finally closes pins, and later release returns early. Statically confirm and correct the conditional persistent-lock path without weakening ownership/identity checks. Add regressions for ACL-only verification failure, identity mismatch, pin cleanup, repeated release and a subsequent apply to the same prefix. Native Windows lock persistence has not been independently reproduced here.
  • Major — synchronous recovery ACL work on parent admission: r4396932202. With an existing recovery directory, beginCodexCliSelectionParentWrite() reaches synchronous recovery-store ACL checks and PowerShell spawnSync on the parent thread. The ancestry batch and directory are checked, with additional checks for record leaves; each call is bounded by up to 5 seconds. That is a per-call maximum, not a measured stall duration. Move this work off the parent event loop while preserving gate/pin ownership, fail-closed behavior and caller admission semantics; verify event-loop progress plus denial, cancellation/cleanup and concurrent parent/worker cases on Windows.
Remaining review corrections
  • Directory identity precision: r4396883860. cli-update-windows-observation.ts still builds directory identity from number-valued lstatSync dev/ino. Preserve exact identity representation and test values beyond safe-integer precision; no native identity collision was executed here.
  • Retention fixture root contract: r4396883869. The worker requires a direct drive-root child while the session creates an OS-temp child. Align validation with the intended private fixture contract and test a normal nested Windows temp path, preserving execution authorization and refusal of unsafe roots.
  • Structure source map: r4396932208. The current codex-cli-update.md manifest entry still omits src/codex/cli-windows-plan-provenance.ts, src/codex/windows-installation-files.ts, src/codex/windows-npm-execution.ts and src/lib/windows-owner-acl.ts, although the document describes them. Complete the entry, regenerate the index and run the structure checks.
  • Chinese POSIX managed condition: r4396883854. Restore the reported-version-matches-manifest condition in the zh-cn and zh-tw CLI references and corresponding agent pages, preserving the ownership and selectionAttested wording. The current four paragraphs still omit that condition; this is a targeted clause check, not a complete translation review.

Close when all six items have a linked verified fix or an explicit evidence-backed maintainer disposition. Availability fixes and documentation/test corrections may land separately. The config-root ACL-overlap work (#7815/#7869), atomic-writer timeout-memo work (#7834/#7843) and macOS execution-validation issue #7860 do not address these paths.

Version

Reviewed merge c655484d9cccf316f3da41047d508bf10d92070a (#7648); follow-up base dev@f9e7d939d125c810aa3f3d700dcb8b0cb4129a0f.

Operating system

Windows execution paths. The evidence above is source/review verification; portable follow-up tests run on Linux. Native Windows runtime acceptance remains separate.

Provider and model

Not provider-specific. No provider request is needed for these regressions.

Logs or error output

The linked original review threads and post-merge verification contain the evidence and its limits. No new product log or native platform reproduction is claimed by this issue-format correction.

Screenshots and supporting files

See the source, review and validation links above.

Redacted configuration

Not applicable; no account, credential, installed application or live service configuration was changed for this report.

Checks
  • I searched existing issues and documentation.
  • I removed secrets, tokens, account details, request credentials, and personal data.
Dominant language
TypeScript
Stars
16.9k
Forks
1.3k
Avg merge
16h 51m
Merged PRs (30d)
681

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from lidge-jun/opencodex

All issues in lidge-jun/opencodex

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.