local:gate cannot pass on Windows — pre-existing failures in test:scripts, coverage:web and coverage:mcpdo
メンテナーはふだん 1 日以内に返信
@olaservo がすでに取り組んでいます。
2026年10月25日 から。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 45/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- git, node.js, typescript
調査の方向性
Start with the named failing suites: board-recover.test.mjs, board-snapshot.test.mjs, gate-lease.test.mjs, skill-eval.test.mjs, the five coverage:web files, and the eleven coverage:mcpdo files; also inspect the scripts/*.mjs entry guards and the proposed scripts/lib/ helper. Run the affected commands on Windows and check how each failure depends on line endings, permissions, Unix sockets, or process semantics. Done means the gate reaches later stages and platform-bound cases either pass or are skipped with a reason; the entry guard test should cover a Windows-style argv[1].
索引モデルが issue の本文から書いたものです。
説明
Problem
On Windows the gate goes red in three stages on an untouched checkout, so a Windows maintainer cannot get the green npm run local:gate AGENTS.md makes mandatory before a push. Each stage aborts the chain, so everything after it (local:dco, the remaining coverage runs, verify:build-gate, the smokes, Storybook) never runs unless invoked by hand.
Observed 2026-10-20 on Windows 11, Node 24, Git Bash, on main (2.11.0) and on a branch cut from v2/main at 1b4d4ec74. The failures are the same on both, so none is tied to a change under review.
| Stage | Failures | Shape |
|---|---|---|
test:scripts (last step of validate:guards) |
18 of 119 | board-recover.test.mjs and board-snapshot.test.mjs: 438 !== 384, a byte count that assumes LF line endings (one byte per line). gate-lease.test.mjs: 14 cases, exit codes 1 where 0 is expected, lease takeover and ordering, and the SIGTERM/SIGQUIT tree-kill cases (POSIX process-group semantics). skill-eval.test.mjs: the two runPrompt cases ("Bash must be denied", bounded tools). |
coverage:web |
30 of 9264, in 5 files | file-secret-store, secret-store-selection, oauth-secret-split, servers-route, node-persistence: file-permission assertions (0o644 read back as undefined), "permissions could not be set" warnings, and failed-disk-write rollback cases that expect a 500 and get a 200. All depend on POSIX mode bits or on making a path unwritable, which Windows does not honor. |
coverage:mcpdo |
65 of 499, in 11 files | daemon-stream, daemon-coverage, mcp-coverage, elicitation-client, daemon-paths, resolve-command, mcp-connection, daemon-private, skills-budget-hint, mcp-elicitation, agent-help: EACCES on listen for the Unix socket under %TEMP%, then 15s timeouts waiting on the daemon. |
Expected
Either each case passes on Windows, or the platform-bound cases are skipped there by name with a reason at the site, so every stage reports a real verdict and the chain reaches the stages after it. #1939 fixed the same class for verify:typecheck-coverage. mcpdo is documented as experimental and Unix-socket based, so skipping its daemon suites on Windows with a stated reason may be the whole answer there.
Also: the scripts' entry guard never fires on Windows
Separately from the test failures, every scripts/*.mjs CLI (21 files) ends with
if (import.meta.url === `file://${process.argv[1]}`) {
main();
}
On Windows process.argv[1] is C:\Users\...\scripts\board-card-add.mjs while import.meta.url is file:///C:/Users/.../scripts/board-card-add.mjs, so main() never runs and the process exits 0 having printed nothing. Observed with npm run board:add and npm run board:status for #2740: both printed only the npm banner, exited 0, and the issue had no card afterwards. The procedures treat a missing card: … line as "step not done", but a silent exit 0 is easy to misread as success. The portable form compares against pathToFileURL(process.argv[1]).href from node:url, ideally through one helper in scripts/lib/ with a test that pins a Windows-style argv[1].
Workaround used: node --input-type=module -e "import('./scripts/board-card-add.mjs').then(m=>m.main([...]))".
Context
Found while running the gate for #2740.
- 主要言語
- TypeScript
- スター
- 11.1k
- フォーク
- 1.6k
- 平均マージ
- 4時間 56分
- マージ済み PR(30日)
- 155
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
modelcontextprotocol/inspector のほかの issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
modelcontextprotocol/inspector#2810 ·
メンテナーはふだん 1 日以内に返信
-
blocked chore v2
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
modelcontextprotocol/inspector#2548 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
blocked chore v2
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
modelcontextprotocol/inspector#2547 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Create the GitHub App for board writes and security-alert reads, and store its credentials as org secrets対応中かも @cliffhall が 5 日前に担当しました。 オープンchore v2
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
modelcontextprotocol/inspector#2544 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
chore v2
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
modelcontextprotocol/inspector#2543 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
modelcontextprotocol/inspector の issue をすべて見る
似ている issue
-
bug require-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
expressjs/expressjs.com#2549 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
umami-software/umami#4686 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
[Bug]: Device screenshot fails with 500 on iPhone Duo (Xcode 27.2): serve-sim calls simctl without --display対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
pingdotgg/t3code#24900 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
inu-appcenter/UNIDorm-web#411 ·
メンテナーはふだん 1 日以内に返信
-
🐛 bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 2 日以内に返信