Skip to content

runtime errorの収集と送信をWindowsでも動かす(ADR 0194、0.75.0) - #12

Merged
quolu merged 2 commits into
mainfrom
snowwhite/runtime-errors-windows
Oct 3, 2026
Merged

quolu merged 2 commits into
mainfrom
snowwhite/runtime-errors-windows

Conversation

@quolu

@quolu quolu commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator

PR #10(0.74.0、送信をLattice自身が持つ)の上に積んである。#10 を統合したら base を main へ付け替える。

何が変わるか

Windowsでは、Latticeの故障を1件も記録できなかった(0.73.0からは collection: "unsupported")。storeを本人だけが触れる形で置けると確かめる方法が無かったためである。Windowsでも記録し、送れるようにする。

  • 確かめ方: icacls /save でDACLをSDDLで読み、本人・SYSTEM・Administratorsへの許可だけで出来ている時だけ使う。それ以外はPOSIXと同じく store_unsafe で止める(src/windows-owner-only.mjs)。
  • 置き場: storeは %LOCALAPPDATA%\Lattice\runtime-errors\。継承を切って絞る。他のaccountが触れる形で中身があるフォルダは、絞らずに止める。
  • 合鍵: %LOCALAPPDATA%\bughub\product-credentials\lattice.json を同じ判定で確かめる。他のaccountが読めれば credential_unsafe(acl_not_owner_only)。
  • 有効化: Windowsで収集を有効にするのは runtime-errors reporting enable。有効にするまでは disabled。unsupported はmacOS・Linux・Windows以外の答えとして残す。
  • macOS・Linuxの動きは変わらない。

設計と残る限界(所有者は確かめない)はADR 0194に書いた。

確かめたこと

  • Windows 11の実機(fox)で、作業中のtreeの試験31件を走らせ、30件成功・1件skip(POSIX専用のCLI試験。理由は試験に書いた)。
    • 他のaccountへ継承で読み取りを許すフォルダの下でも、storeは本人・SYSTEM・Administratorsだけになる。
    • storeや合鍵へ他のaccountの権限を足すと、読むのも書くのも止まる。
    • 既定の置き場(%LOCALAPPDATA%)で、CLIから有効化・記録の読み取り・解決ができる。
    • 送信を有効にした端末で記録が出来ると、次のCLI実行の後に子processが届ける。
  • BugHubの持ち主が fox に置いた合鍵の実物は、この判定を通る。
  • 手元(Linux)の npm run ci 全体が成功(root 1961件中 0失敗)。

含めたもの

🤖 Generated with Claude Code

quolu and others added 2 commits October 3, 2026 10:56
Windowsではstoreを本人だけが触れる形で置けると確かめる方法が無く、故障を1件も記録できなかった。
icaclsでDACLを読み、本人・SYSTEM・Administratorsへの許可だけで出来ている時だけ使う。

- storeは %LOCALAPPDATA%\Lattice\runtime-errors\ へ置き、継承を切って絞る
- 他のaccountが触れる形で中身があるフォルダと、後から権限を足されたstoreは store_unsafe で止める
- 合鍵も同じ判定で確かめる(credential_unsafe / acl_not_owner_only)
- Windowsで収集を有効にするのはLattice自身の送信設定。unsupported は他のOSの答えとして残す
- store・送信の試験をWindowsでも走らせ、Windows実機だけの試験を足した

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hooksの試験は一時のHOMEをCLIへ渡すが、CODEX_HOME・CLAUDE_CONFIG_DIR・GROK_HOMEを消していなかった。
CLIはHOMEよりこれらを優先するので、CODEX_HOMEを持つ端末で試験を走らせると、利用者の本物の
Codex hooks.jsonへhandlerを足し、外し、backupを残した(2026-10-03に実際に起きた)。

- 試験の入口(productTestEnvironment)が3つの変数を子processへ渡さない
- hooks試験のisolatedEnvも同じ3つを消す(node --test で直に走らせた時のため)
- 偽のフォルダを3つの変数に指して、1 byteも変わらないことを確かめる試験を足した

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@quolu
quolu changed the base branch from snowwhite/runtime-error-reporting to main October 3, 2026 11:28
@quolu
quolu merged commit 8489cec into main Oct 3, 2026
15 of 18 checks passed
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