Skip to content

fix(gate): linux 関門をワークツリーから回しても嘘の赤が出ないようにする - #39

Merged
tacyan merged 1 commit into
mainfrom
fix/linux-gate-worktree
Aug 21, 2026
Merged

tacyan merged 1 commit into
mainfrom
fix/linux-gate-worktree

Conversation

@tacyan

@tacyan tacyan commented Aug 21, 2026

Copy link
Copy Markdown
Owner

0.22.1 出荷時、ワークツリーから tools/linux-test.sh(全テスト) を回したら 9 本が赤になった。全部 CI の実機 ubuntu では緑で、正体は環境起因 3 種。リリース前に気づける形へ直し、記録する (ユーザー指示)。

原因と直し

  1. ワークツリーの .git はホスト絶対パス参照ファイル — コンテナに参照先が無く、リポジトリ発見をする git が全部 fatal(region 実git×3)。→ linux-test.sh がワークツリー検出時に本体 .git を同じ絶対パスへ read-only で写す + region の Lab::git は cwd を実験場へ固定
  2. 大小畳みの期待値を cfg で書いていた(pathx / guard) — 製品は実 FS 探針 worktree::fs_case_insensitive() で決めるので、Docker-on-Mac(Linux + 大小非区別マウント) でだけ製品が正しいのにテストが落ちる。→ 期待値を製品と同じ探針で分岐
  3. glyph / PID / 絶対時間 1 秒の線形テスト — 既知の環境差として linux-test.sh のヘッダへ追記

記録 (CLAUDE.md)

  • 上記 2 罠 (探針で決まる既定値のテスト分岐 / ワークツリー×Docker の git 参照)
  • 公開 (gh release create) は回した検査が全部出そろってから — 0.22.1 で linux 段を待たずに公開した反省

検証

  • ワークツリーから tools/linux-test.sh で region 実git×9 / pathx / guard 緑(git dir の ro 写しの証跡行も確認)
  • macOS: tools/verify.sh 緑 / --lint(clippy) 緑

🤖 Generated with Claude Code

https://claude.ai/code/session_01WxQjdDj6y3C6h9oUm4CL4Z

0.22.1 の出荷時、ワークツリーから tools/linux-test.sh (全テスト) を回したら
9 本が赤になった。全部 CI の実機 ubuntu では緑で、正体は 3 種類の環境起因:

1. **ワークツリーの .git はホスト絶対パス参照ファイル** — コンテナには
   参照先が無く、リポジトリ発見をする git が全部 fatal。リポジトリ不要の
   `git merge-file` (region の実 git テスト) まで、継承した cwd の発見失敗で
   巻き添え死していた
2. **大小畳みの期待値を cfg で書いていた** (pathx / guard) — 製品は実 FS
   探針 (`worktree::fs_case_insensitive`, プロセスに 1 回) で畳みを決めるので、
   「Linux なのに /w が大小非区別」という Docker-on-Mac の実在環境でだけ、
   製品は正しいのにテストが落ちる
3. glyph / PID 名前空間 / 絶対時間 1 秒の線形テスト — 既知・既記載の類

直し:
- linux-test.sh: ワークツリー検出時、参照先の本体 .git を**同じ絶対パスへ
  read-only で**写してリポジトリ発見を成立させる (ro は「テストが実リポジトリへ
  書いたら落ちる」検出を兼ねる)。引数は set -- で組み立て、空白パスでも壊れない
- region: `Lab::git` の cwd を実験場へ固定 (リポジトリ不要の操作に cwd を
  継承させない)
- pathx / guard: 大小の期待値を cfg ではなく製品と同じ探針で分岐
- CLAUDE.md: 上記 2 つの罠と、「公開は回した検査が全部出そろってから」
  (0.22.1 で linux 段を待たずに公開した反省) を記録

検証: ワークツリーから tools/linux-test.sh で region 実git×9 / pathx /
guard が緑 (git dir の ro 写しの証跡行も確認)。macOS の verify 緑。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WxQjdDj6y3C6h9oUm4CL4Z
@tacyan
tacyan merged commit ddd6ee6 into main Aug 21, 2026
25 checks passed
@tacyan
tacyan deleted the fix/linux-gate-worktree branch August 21, 2026 21:20
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