Skip to content

fix(keyring): target-platform path rules for packaged addon candidates - #6261

Merged
lidge-jun merged 2 commits into
devfrom
codex/rt6-keyring-path-flavor
Sep 29, 2026
Merged

lidge-jun merged 2 commits into
devfrom
codex/rt6-keyring-path-flavor

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

The final Cross-platform CI run on the RT6 dev tip (run 36629963702, windows 8/9) failed two packaged keyring native binding tests added by #6161. packagedKeyringCandidates built candidate paths with the host's node:path, so the tests that simulate the Linux and macOS layouts on a Windows runner received D:\tmp\... paths. The function now picks path.posix or path.win32 from the target platform. At runtime the target platform is the host platform, so packaged builds resolve exactly as before; only cross-platform simulation changes.

Verification

  • bun test tests/ci-workflows/keyring-smoke.test.ts: 18 pass, 0 fail (macOS host). The new case simulates a win32 target from a POSIX host; it fails without the fix (17 pass, 1 fail) and passes with it.
  • bun x tsc --noEmit: pass.
  • Full-matrix workflow_dispatch run 36633279616 on the fix commit 260400e: success on attempt 2 (windows 8/9 attempt 1 failed in an unrelated batch on two 33 s main-quota-policy tests during an icacls stall; the same SHA passed on re-run). Pull-request CI does not run the Windows shard matrix.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Summary by CodeRabbit

  • Bug Fixes
    • Packaged keyring paths are now resolved using the requested platform’s path rules, improving consistency when checking paths for another platform. Windows checks use Windows-style paths, while other platforms use POSIX-style paths, so the resulting keyring locations better match the selected target regardless of the host system.

@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner September 29, 2026 21:26
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 29, 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-09-29T22:20:49.816069Z 007aaba Draft marked ready
ℹ️ 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 intake: hygiene-blocked Deterministic PR hygiene checks failed label Sep 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Deterministic hygiene checks failed.

  • missing_regression_test — Behavior changed under src/ or gui/src/ without a test change. Add focused coverage or obtain test-exception-approved.

@github-actions

github-actions Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

✅ READY

  • all PR quality gates passed.

Hygiene

✅ Deterministic PR hygiene checks passed.

@github-actions
github-actions Bot marked this pull request as draft September 29, 2026 21:26
@github-actions github-actions Bot added the bug Something isn't working label Sep 29, 2026
@coderabbitai

coderabbitai Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

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: lidge-jun/opencodex/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: eaea8a4d-70c3-4673-a68c-3f8143e34638

📥 Commits

Reviewing files that changed from the base of the PR and between 260400e and 007aaba.

📒 Files selected for processing (1)
  • tests/ci-workflows/keyring-smoke.test.ts

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


📝 Walkthrough

Walkthrough

packagedKeyringCandidates now uses Windows path rules when the requested platform is win32 and POSIX path rules otherwise. A test checks candidate paths for Windows x64 and Linux x64 targets.

Changes

Keyring candidate paths

Layer / File(s) Summary
Select path rules for the target platform
src/lib/keyring-native.ts, tests/ci-workflows/keyring-smoke.test.ts
The module selects win32 path rules for Windows targets and posix rules for other targets. The test checks Windows and Linux x64 candidate paths.

Priority: ⬇️ Low

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

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 007aa

Production candidate paths continue to use the current host’s platform and executable location. The change does not introduce an established merge-blocking risk.

Architecture Summary

Architecture risk: 🔵 Low · up to 007aa

The change affects 2 systems.

Changed systems: src, tests

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — src (service) was modified; 1 changed file maps to changed impact.
  • observed — tests (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in src/lib/keyring-native.ts: Replaces the host-default path-function imports with the posix and win32 path implementations.
  • observed — Modified behavior in src/lib/keyring-native.ts: Adds target-platform path selection for candidate construction: win32 rules apply when platform is "win32"; all other platforms use posix rules.
  • observed — Modified behavior in tests/ci-workflows/keyring-smoke.test.ts: Adds a test that checks Windows x64 candidate paths use Windows separators and the MSVC addon filename, while Linux x64 candidates use the Linux GNU addon filename.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: selecting target-platform path rules for packaged keyring addon candidates.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files.
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.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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.

@lidge-jun

Copy link
Copy Markdown
Owner Author

리뷰 · 우선순위 36 / 80

이 PR은 패키지로 묶인 키링 네이티브 파일의 후보 경로를 만들 때, 지금 돌고 있는 컴퓨터(호스트)의 path 규칙을 쓰던 것을, 목표 OS(platform 인자)의 path 규칙으로 바꾼다. #6161이 넣은 Windows 러너 위 리눅스·맥 레이아웃 시뮬레이션 테스트가 D:\tmp\...처럼 윈도 경로를 받아서 깨졌고, Cross-platform CI windows 8/9가 그걸로 빨간불이 났던 구멍이다. packagedKeyringCandidates 안에서 platform === "win32"이면 path.win32, 아니면 path.posix로 basename/dirname/join/resolve를 고른다. 실제 제품 실행에서는 platform 기본값이 process.platform이라 예전과 같고, 다른 OS를 흉내 내는 테스트만 달라진다. 바뀐 파일은 src/lib/keyring-native.ts 한 곳(+4/-1)이고 base는 dev다. types.ts/config.ts 분할과 겹치지 않는다.

라인 - PR hygiene missing_regression_test: src/만 바뀌고 tests/는 안 바뀌어서 게이트가 막혔다. 이미 tests/ci-workflows/keyring-smoke.test.ts에 리눅스·맥 절대경로 단언이 있고, 이번 수정으로 Windows에서도 그 테스트가 통과한다(workflow_dispatch 로그 확인). 기계적 규칙상 “테스트 파일 변경 없음”이라 intake: hygiene-blocked가 붙어 있다.

라인 - workflow_dispatch Cross-platform CI windows 8/9: 키링 packaged 테스트는 전부 통과했다. 같은 샤드에서 아직 빨간 건 main quota policy at native admission의 owned recovery 두 케이스인데, 이번 패치 범위 밖이다. PR이 고치려던 실패와는 다른 줄이다.

메인테이너의 판단이 필요한 지점

hygiene를 test-exception-approved로 풀지, 아니면 테스트 파일에 단언·주석을 한 줄 더해 게이트를 통과시킬지. 그리고 windows 8/9의 quota 실패를 이 PR에서 같이 볼지, 별도 이슈로 둘지.

너의 추천

수정 방향은 맞고, 키링 쪽 재현도 잡혔다. hygiene만 풀면 머지해도 된다. 예외 라벨보다 테스트에 “호스트가 win32여도 linux/darwin 후보는 posix 구분자”를 분명히 하는 단언 한 줄을 넣는 편이 게이트와 문서가 같이 산다. quota 실패는 이 PR에 묶지 말고 따로 추적하라.

이 댓글은 grok-bot이 작성했습니다

@lidge-jun
lidge-jun marked this pull request as ready for review September 29, 2026 22:18
@github-actions github-actions Bot removed the intake: hygiene-blocked Deterministic PR hygiene checks failed label Sep 29, 2026
@lidge-jun
lidge-jun merged commit 540af24 into dev Sep 29, 2026
39 of 44 checks passed
@lidge-jun
lidge-jun deleted the codex/rt6-keyring-path-flavor branch September 29, 2026 22:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant