ci: run the frontend build, sidecar tests, and cargo test on a tauri-free crate - #15
Merged
Conversation
CI が npm ci と cargo check しか実行しておらず、#7 で追加した自動テストと 型検査が一度も CI で走っていなかった。フロントエンドの型エラーも素通りする 状態だったため、以下を check job へ追加した。 - npm run build(tsc + vite build) - npm run sidecar:check(サイドカーの型検査) - npm run sidecar:test(サイドカーの往復ハーネス) - cargo test --lib(.mcp.json マージ保全のテスト 3 本) cargo check は残している。cargo test に包含されるが、コンパイル失敗を先に 落とすほうが失敗箇所が読みやすく、README と docs が案内している parity コマンドでもあるため。 cargo test はローカル環境ではテストバイナリが STATUS_ENTRYPOINT_NOT_FOUND で 起動しない。CI 環境で起動するかはこの実行で確認する。 #12
cargo test --lib は CI 環境でもテストバイナリが STATUS_ENTRYPOINT_NOT_FOUND (0xc0000139) で起動しないことが確定した (run 32431917979)。ローカル環境固有 ではない。test バイナリが tauri の依存ツリー全体をリンクすることによる GNU ターゲット上の不一致と見られる。 そのため .mcp.json への登録と起動フラグの検査を crates/mcp-config/ へ切り出し、 CI の cargo test はこの crate を対象にした。これらのロジックが tauri を必要と する理由はそもそも無く、切り出しはテストを通すための細工ではなく依存の誤りを 正す変更である。 src-tauri/src/session.rs に残したのは tauri の State / AppHandle に触れる部分 だけ。純粋ロジックをそちらへ書き足すと書いた時点で検証不能になるため、その 境界を docs へ明記した。 切り出しに伴いテストは 3 本から 8 本へ増えた。再登録がエントリを蓄積しない こと、--flag=value 形式の非互換フラグを取りこぼさないこと、起動フラグが .mcp.json の登録名と一致していることを追加している。最後の 1 本は、同じ事実が 二箇所にある状態のドリフトを固定するもの。ドリフトすると「何も届かない部屋」 として現れ、原因が最も見えにくい。 crates/*/target/ を .gitignore へ追加。 #12
smileygames
commented
Aug 21, 2026
smileygames
left a comment
Member
Author
There was a problem hiding this comment.
AI self-review (execution_mode = auto)
受け入れ条件の照合(issue #12 完了条件)
| 条件 | 結果 | 根拠 |
|---|---|---|
npm run build / sidecar:check / sidecar:test / cargo test が CI で pass する |
pass | run 32432567154 で全ステップ green |
.mcp.json マージ保全のアサーションが実際に実行されている |
pass | CI ログに running 8 tests / test result: ok. 8 passed; 0 failed |
| 実行不能だった理由と採った対処が記録されている | pass | PR 本文、docs/0-requirements.md テストの配置節、commit body |
制約の照合
- 切り出しは純粋ロジックに限る: pass。
State/AppHandleに触れるstart_sessionはsrc-tauri/src/session.rsに残した。 - 新 crate は
src-tauri/の外: pass。crates/mcp-config/、portable-pty-patch/と同じ並び。 - 既存の挙動を変えない: pass。移動と呼び出し形の変更のみ。
register_sidecarの引数をRoomRegistrationへまとめたが、書き込む JSON の内容は同一。 crates/*/target/を.gitignoreへ追加済み。ビルド成果物の混入なし。
検証
- ローカル:
cargo test(8 pass)、cargo check --target x86_64-pc-windows-gnu、npm run build、npm run sidecar:check、npm run sidecar:test。 - CI: 上記すべて pass。
- 失敗側の観測も残っている(run 32431917979)。
src-tauri側のcargo test --libが CI でも起動しないことは推測ではなく実測。
scope deviation
あり、ただし合意済み。#12 の当初の対象ファイルは .github/workflows/ci.yml のみだった。CI 実行の結果 cargo test が起動しないことが判明し、切り出しには src-tauri/ の変更が伴うため、実装を止めて Master に確認した。合意の上で issue 本文を書き換え、対象ファイルと採る対処を反映済み。
次の期待
execution_mode = auto のため人間レビューゲートなし。CI green(CI pass / check pass 4m24s)。self-review pass により squash merge へ進む。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #12
変更内容
CI
checkjob へ追加。npm run build(tsc+vite build)npm run sidecar:checknpm run sidecar:testcargo test(crates/mcp-config)cargo checkは残した。cargo testの対象が別 crate になったため、アプリ本体のコンパイル検査はこちらが担う。切り出し
.mcp.jsonへの登録と起動フラグの検査をcrates/mcp-config/(tauri 非依存)へ移動した。なぜ切り出したか
当初は
cargo test --libをsrc-tauriで走らせたが、CI 環境でもテストバイナリがSTATUS_ENTRYPOINT_NOT_FOUND(0xc0000139)で起動しないことが確定した(run 32431917979)。ローカル環境固有ではない。test バイナリが tauri の依存ツリー全体をリンクすることによる GNU ターゲット上の不一致と見られる。特定の依存クレートまでは切り分けていない。MSVC ターゲットでのテスト実行と
cargo testの CI 対象外化も検討したが、前者は依存ツリーの二重ビルドで CI 時間がほぼ倍になるうえアプリが出荷しないターゲットで検証することになり、後者は.mcp.json書き換えという最も保険が要る箇所を無検証で残す。切り出しはテストを通すための細工ではない。
.mcp.jsonをマージするロジックが tauri を必要とする理由はそもそも無く、依存の誤りを正す変更である。src-tauri/src/session.rsに残したのは tauri のState/AppHandleに触れる部分だけで、この境界はdocs/0-requirements.mdに明記した。テストの増分
切り出しに伴い 3 本 → 8 本。
--flag=value形式の非互換フラグを取りこぼさないことserver:<name>が.mcp.jsonの登録名と一致していること最後の 1 本は、同じ事実が二箇所にある状態のドリフトを固定するもの。ドリフトすると「何も届かない部屋」として現れ、原因が最も見えにくい。
CI 実行結果(run 32432567154)
#7 で追加した Rust テストのアサーションが、これで初めて実行された。
影響範囲
CI とコードの配置のみ。アプリの挙動に変更なし。
release type
patch — 構造変更を含むが user/system observable な挙動変更はない。