Conversation
表示仕様の刷新(docs/21 SYS-F-5xx/6xx): - 固定幅スライディングウィンドウ(1〜300s)、右端=今、rAFローカルスクロール - 絶対時刻整列・1-2-5量子化バケット集約(確定セル不変=表示の定常性 INV-7) - LIVE / Inspect / Paused の3状態モデル、スクロールバック、Yヒステリシス バグ修正(マルチエージェントレビューで58件確定、主要分): - DataStore差し替え追従(Clear/再接続でプロッタ永久停止)、インスタンス別tempディレクトリ - Loggerの書込→index公開→popのチャンク単位順序化、パーサのセパレータ固定・UTF-8分割破損 - バッチ同一タイムスタンプ潰れ、Average中央線=真の加重平均、ウィンドウライフサイクル一式 - Linux移植: ポート名解析の"(COM"前提を汎用化(extract_port_path) - リリースビルドへのデバッグ行混入をDEVゲートで排除 テスト基盤(Rust 164 / front 144、全ゲート緑): - プロパティ11件(proptest: チャンク分割不変性、min<=avg<=max、整列安定性、読出一貫性等) - 状態遷移 Chow 0/1-switch(バックエンド49ペア+ビューFSM 49ペア) - フォールト注入(get_data失敗・スキップアヘッド)、ミューテーション残存キラー (parser 69ミュータント中、等価4件を除き全滅を実証) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
- 20: ステークホルダーニーズ(UN-01〜23、利用シナリオ、正式対応OS決定)
- 21: システム要求仕様(SYS 112件+追補、29148様式、測定可能な受入基準)
- 22: アーキテクチャ記述(状態機械SM-1〜6、不変条件INV-1〜13、ADR-01〜11、42010/arc42様式)
- 23: トレーサビリティ(UN→SYS→実装→検証、GAP一覧と解消記録)
- 24: V&V計画(EP/BVA・プロパティ・状態遷移・ペアワイズ・E2E・ミューテーション、
実施状況: ペアワイズ2ラウンド全PASS、ミューテーション基線66.3%と残存分布)
- 25: リリース戦略(SemVer/1.0定義、3段ゲート、手順、配布: winget承認ゲート・Linux・macOS計画)
- 07: LIVE表示刷新の変更履歴を追記、10-12の旧リファクタ文書を整理
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
- ci.yml: Tier1必須ゲートを1本化(Windows+Linuxの2ジョブ並列、libudev-dev込み) - 旧rust-ci/frontend-ci: mainブランチ前提の死んだトリガを撤去し、手動+週次の定点観測に転換 - release.yml: タグでNSIS/MSI(Windows)とdeb/AppImage(Linux)をdraft Releaseへ添付 - winget-publish.yml: workflow_dispatch専用。人間のdispatch+確認フレーズ+シークレットの 三重ゲートで、オーナー許可なしには実行不能(packaging/winget/にマニフェスト雛形) - test_tools/e2e/: UIA操作ハーネスとペアワイズ実行器(第1R: 8因子112ペア/7行、 第2R: 12因子333ペア/14行、全PASS)を永続化 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
- productName: serial-monitor-essential / publisher: 771-8bit / identifier: io.github.771-8bit.serial-monitor-essential(docs/25 §1.4) - C#版(Serial Monitor Essential 0.0.9)との共存を実機検証済み(別UpgradeCode・別名で干渉なし) - README: C#時代の利用者向け構成(動機・比較表・スクリーンショット・インストール手順)を継承しつつ Tauri版の実像(プロッタ完成、Windows/Linuxインストール、SmartScreen注意、旧版アンインストール案内、 データ形式、docs/へのリンク、MIT)に更新。実E2Eのスクリーンショット2点を同梱 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
WSL2 Ubuntu 24.04での実証結果(164テスト・deb/AppImageビルド・WSLg起動・ pty経由シリアル往復まで全PASS)で判明した4件を修正: - F2: aggregator.rsテストのunwrap-after-is_some(キャッシュ済みclippyでは 出ず、新規ビルドの-D warningsで失敗=CI初回赤の原因)→ if let化。 クリーン全再コンパイルで cargo clippy --all-targets -- -D warnings を実証 - F3: Cargoパッケージ/lib名を serial-monitor-essential(_lib) に改名 (debの/usr/binとアイコンが旧雛形名になっていた)。package-lock.jsonも同期 - F4: debのDependsに libudev1 / libgudev-1.0-0 を追加(lddで実リンクを確認済み) - F5: E2EハーネスのFind-WindowにWSLg向け部分一致フォールバック (RAILがタイトルを書き換えるため完全一致では見つからない) - monitor_memory.py の既定プロセス名を新名に更新 Linux E2Eはsocatのptyペアで実現可能なことを実証済み(DTR/RTSはno-op、 ボーレート非強制の2点に留意)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
CI初回失敗の2系統を修正: - Prettier(Windowsジョブ): ランナーのautocrlf=trueでチェックアウトがCRLF化し endOfLine:lf既定に全ファイル違反 → .gitattributesで全テキストをeol=lf固定 - License Check: cargo-about 0.9系は--features cliなしでバイナリ未生成のまま exit 0となり generate が"no such command"で失敗 → taiki-e/install-actionの プリビルト取得に置換。npm側はlockを削除して新規解決する非決定的チェック だった(上流リリースごとに壊れる)→ npm ci基準に修正し、両ライセンス ファイルをCI同一環境(Ubuntu/cargo-about 0.9.2・lock済みnpm)で再生成 アイコン: Tauriデフォルトが残っていたため、C#時代のアイコン(緑のウィンドウ +プロンプト+MCUチップ、git履歴のICON.pngから復元)で全サイズ再生成。 生成元をicons/app-icon-source.pngとして保存 docs/24: ミューテーション改善測定を記録 (parser+thread 66.3%→95.9%、残4件は等価と論証済み。aggregator基線55.6%) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
オーナー決定(2026-09-03): ホットプラグ能動検知=実装 / ドッキングは スコープ内維持(時期未定) / AIポートはローカルブリッジ+MCPの二層で実装。 AI Bridge(src-tauri/src/bridge.rs, 27テスト): - COMポートは排他のためアプリ自身をマルチプレクサ化(ADR-12) - TCP 127.0.0.1:57320・NDJSON・既定OFF。auth/status/read_range/tail/ subscribe(プッシュ+世代reset)/send/ports。SettingsPanelにトグルと アクティビティ表示(AIの送信はbridge-activityイベントで人間に常時可視) MCPアダプタ(mcp/, stdio): - 7ツール(serial_status/ports/read_tail/read_range/send/send_hex/wait_for) - smoke.mjs(フェイクブリッジ12項目PASS)+ 実MCPハンドシェイク検証済み - 実E2E: PING送信→COM15ボットのPONG応答を購読ストリーム/実MCPクライアント 双方で受信確認。GUIに「送信 5 bytes」表示を確認 小修正: - GAP-04: min/maxバンドをYオートレンジに算入(calculateYRange、10テスト) - GAP-07: ポート一覧2秒ポーリング(接続中は選択を動かさない) - GAP-08: serial-status切断時にclose_portで状態再同期 - GAP-09: Loggerのon_error(5秒レート制限)→log-errorイベント→UI通知 docs: UN-24/SYS-F-1101〜1106/ADR-12/RISK-4等を追加、GAP・1.0条件A表を更新 (条件A全件判断済・保留ゼロ)、04_api.mdの既存誤記2件も是正。README にAI連携節。 テスト計: Rust 194 / フロント 167 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
- 冒頭ピッチと比較表に「AI 連携」列を追加(他ツールにない差別化点) - 特徴に「AI 連携(MCP)」節を追加(マルチプレクサ/wait_for/常時可視/安全側デフォルト) - AI 連携節に実スクリーンショット(AI Bridge 行の送信表示)と利用例の対話例を追加 - docs/01 のホットプラグ記述を実装(readエラー+2秒ポーリング)に整合 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
Plain OSS-style English throughout; Japanese docs links annotated with (Japanese). Content unchanged: comparison table, features, install (Windows/Linux), plotter usage, AI integration (MCP), development. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
インストール済み環境(リポジトリ・Node.js なし)だけで AI 連携が完結する ようにする(UN-25 / SYS-F-1107〜1109 / ADR-13)。 - --mcp フラグ: 同一 exe が MCP stdio サーバとして起動(mcp_stdio.rs)。 ツール実行はワーカースレッドで行い、serial_wait_for 中も ping に即応答、 notifications/cancelled で待ちを中断。wait_for は生バイト regex で ストリームオフセット厳密、世代交代検知・gap 置換・両端切断 UTF-8 判定。 Windows release は AttachConsole でコンソール直起動にも対応 - Settings に Setup Guide ボタン → AI 連携ガイドウィンドウ(ai-guide)。 実 exe パス入りのコピー可能な登録コマンド(AppImage は $APPIMAGE)、 ブリッジ状態のライブ表示、ツール一覧、生 TCP・セキュリティ説明 - ブリッジに認証不要の help メソッド(プロトコル自己記述)と bridge_guide_info コマンドを追加。BridgeActivity に preview を追加し、 GUI が AI の送信内容そのものを表示(SYS-F-1103 の実質化) - Node 版 server.mjs へパリティ修正(リセット検知・gap 置換・両端 UTF-8・ id:null 拒否行)。既知の非対称は docs/22 DEBT-6 に明記 - テスト: Rust 225(mcp_stdio 30 新規・bridge 28)/ フロント 173 (AiGuideWindow 5 新規)。実機 E2E: exe --mcp 経由 PING→PONG 往復、 ウェイト中 ping 応答 0.00s、キャンセル即中断、ガイドウィンドウ表示、 メイン閉での道連れクローズを検証済み Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
ブリッジの接続上限拒否は、クライアントの最初のリクエストを読まずに ソケットを閉じていた。未読データが残ったままの close は(特に Windows で) RST を送り、直前に書いた "too many connections" 行が相手に届く前に 破棄されることがある。拒否行の書き込み後は書き込み側だけ閉じ、相手が 閉じるまで短時間読み捨てる(本番パスと mcp_stdio の統合テストの フェイクサーバの両方)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
release ビルド(DEV デバッグ行なし・新アイコン)で、実データを流した状態で 撮影。main-window はライブ受信 + AI Bridge ON(Setup Guide ボタンと 送信プレビュー "LED ON" 表示)、plotter は sin/cos/temp + motor/pump の 状態タイムライン(LIVE・10s ウィンドウ)、ai-bridge は新しい設定行の切り抜き。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
- test_tools/e2e/README.md: com0com のセットアップ手順を明文化 (インストール・setupc でのペア作成・レジストリでの確認・ 仮想ペアの制約 = ボーレート/DTR/RTS は no-op で性能受入に使えない) - AI Bridge E2E をスクリプト収載: pong_bot.py(PING→PONG 応答)、 mcp_bridge_live.py(実往復 + ブロック中 ping 即応答 + cancelled 中断)、 run_bridge_e2e.ps1(起動→UIA 設定→検証→後片付けの一括実行。 UIA 前面化フレークは 1 手ごとのリトライで吸収) - mcp_stdio_smoke.py: GUI・com0com 不要の内蔵アダプタ検証。 SME_BRIDGE_PORT を隔離ポートにして「ブリッジ未起動」を決定化 - ci.yml: 両 OS で実バイナリの MCP stdio smoke、windows で Node smoke を追加 - ui.ps1: Activate-Window に GetForegroundWindow 検証リトライ + null ハンドル防御 - docs 23/24/25: GAP-31 をほぼ解消に更新、E-21 シナリオ追加、 E-13〜20 の実施状況を正確化、Tier 1 の 2 ジョブ + スモーク行を反映 検証: mcp_stdio_smoke 単体 ALL PASS、run_bridge_e2e.ps1 を 2 回連続で ALL PASS(2 回目は select-port のフレークをリトライが自動回復) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
ユーザー向けの「使い方/セットアップ」ドキュメントを英語に統一(設計資料 docs/ は日本語のまま)。mcp/README・test_tools/e2e README・test_tools README・ packaging/winget README・ルート README の mcp リンク注記を更新。翻訳中に 見つかった既存の記述ミス(存在しない pico_stress_test_controller.py 参照など)も修正。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
pico_serial_tx_test を Arduino から組み込み Rust(no_std / rp2040-hal / デュアル USB-CDC)へ移植。制御プロトコルは Arduino 版と互換で既存 Python コントローラが そのまま動く。旧 .ino は legacy_arduino/ に保存。 実機(Raspberry Pi Pico)で T2-5 を実施し PASS: - トランスポート層: pyserial オラクルで 60 秒 15,451,179 バイト・SHA-256 一致(欠落0) - アプリ受信パス: serial_test.py + アプリ + verify で data.bin が 2,577,396 バイト・SHA-256 一致(Disconnect で最終チャンクを flush 後、100%) - 限界(honest): RP2040 USB Full Speed CDC は実効 ~2Mbps が上限で、真の 12Mbps 線速度は本治具では出ない(High Speed デバイスが要る。SYS-NF-101 の残課題) 実機でのみ判明した治具バグを修正: - USB エニュメレーション失敗 = EP0 既定 8B + コントロールバッファ 128B に デュアル CDC 構成記述子 141B が収まらない → max_packet_size_0(64) + feature control-buffer-256 - 送信ゼロ = ループ先頭 now_us がコマンド処理より前で START 直後に u64 減算 アンダーフロー → テスト実行ブロックで now_us 再取得 - 未送出 = write() は write_buf に積むだけ → 各送信後 flush() ボタン不要の BOOTSEL コマンド(reset_to_usb_boot)と DIAG 診断コマンドを追加。 ホスト側: identify_pico_ports.py に Rust 版 VID:PID(16C0:27DD)を追加、 serial_test.py に 0 バイト偽合格ガード、verify_received_data.py を現行の <pid>/<instance>/data.bin レイアウトに対応。docs/24 §6.5 と docs/25 T2-5 に 結果と ~2Mbps の限界を記録。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
Pico ~2Mbps 600秒連続受信(154MB)でメモリ計測。合計WSは送信中ピーク~685MB →停止で46.5MBへ解放(プロセス7→1)。保持リークの兆候なし。ただしピークは WebView2フロントの一過性描画バッファが主で、154MB受信に対し大きい(footprint 課題、リークではない)。10分/~2Mbps/1サイクルであり、正式60分ゲートと 複数サイクルのベースライン漸増チェック、真の12Mbps(FT2232H)は残課題。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
- CHANGELOG.md を新規作成(Keep a Changelog、0.1.0 の機能を記載) - T2-1/T2-2 ペアワイズ E2E 回帰: AI Bridge/MCP/ガイド追加後の 7 行全 PASS。 プロセス生存オラクルが PowerShell の実行コンテキスト依存の文字列比較の癖 (連続ハイフンを含む名 serial-monitor-essential に -Name/-eq/-match が偽を返す) で「app process died」を誤検出していたため、UIA メインウィンドウ存在での liveness 判定に変更(旧プロセス名 + -ErrorAction Stop の誤検出も解消) - T2-3 ミューテーション差分: mcp_stdio.rs は missed 0(完全被覆)。bridge.rs は test_size_constants / test_is_ok_reflects_outcome とat_msアサーション強化で 6 件を kill、残 2(port_handle/is_timeout の IO 層)は単体では等価とコメント明記 - docs/23 テスト数更新(bridge 30, 計227)、docs/24 §6.5 に T2-1/2/3 結果を記録 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
再測定で missed は port_handle→None の 1 件のみ(IO層・単体等価)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
- 重大な訂正: 先の「mcp_stdio 0 missed / bridge 1 missed」は cargo-mutants の 逐次書き込み outcomes.json を途中で誤読した誤り。完走値は 232 mutants = caught 159 / missed 57 / unviable 15 / timeout 1(≈74%。bridge 27・mcp_stdio 30)。 - mcp_stdio.rs にテスト追加(from_env の port>0/token フィルタ、is_valid_utf8 の 切断境界、serial_send の全 line_ending、dispatch の null-id 通知扱い)。 bridge.rs は既追加テストで 27→21。 - 残存ミュータントは大半が IO 層・コマンド配線・stdio 主ローカル(実ソケット結合と E2E で担保、ミュータント粒度は未アサート)→ DEBT-7 を両ファイルに拡大。 - T2-4 メモリソークは静穏条件の 60 分計測が正式値: WS ~410MB で定常、 +1.3MB/30分(リークなし)。10 分版の 685MB ピークは計測中 UI 操作の 一過性アーティファクトと判明。 - docs/23 テスト数更新(mcp_stdio 34 / bridge 30 / 計 231)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkrgSKpH4VPzKKXX1FEs4h
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.
No description provided.