# AGENTS.md このリポジトリは Mirakurun の Rust 実装です。 ## 最優先 - 変更前に `/home/cyberrex/Mirakurun/development_status.md` と既存実装を確認する。 - Node.js 版 Mirakurun 4.1.3 の公開 API、設定、DB、ストリーム挙動との互換性を維持する。 - 不要なリファクタリングや整形変更をせず、既存の未コミット変更を巻き戻さない。 - Rust 版の実装、設計判断、検証、ブロッカー、予定変更が発生した場合は、同じ作業内で `/home/cyberrex/Mirakurun/development_status.md` を更新する。 - ステータスの完了項目には検証結果を伴わせ、未検証の項目を完了扱いにしない。 ## Rust - Rust 2024 Edition と `rust-version = "1.85"` を維持する。 - `cargo fmt --check`、`cargo clippy --workspace --all-targets --all-features -- -D warnings`、`cargo test --workspace --all-features`を基本検証とする。 - 本番コードで `unwrap`、`expect`、意図しない `panic!` を使用しない。 - Webハンドラー内でブロッキングI/Oを行わない。共有可変状態は用途ごとに分離し、ロックをawait境界を越えて保持しない。 - 公開型と永続化型ではSerdeのフィールド名、省略条件、整数幅を明示する。 ## 構成 - `crates/mirakurun-types`: 公開API、設定、DBの型。 - `crates/mirakurun-core`: 設定、永続化、MPEG-TS/ARIB、チューナー、ジョブ。 - `crates/mirakurun-client`: TCP/Unixソケット対応クライアント。 - `crates/mirakurun-rs`: CLI、HTTP/WebSocketサーバー、Web UI。 ## 互換性確認 - Node.js 版は `/home/cyberrex/Mirakurun` にある基準実装として扱う。 - API変更ではHTTPステータス、本文、nullと省略、ヘッダー、HEADの挙動を契約テストで確認する。 - TS処理変更では188バイト同期、PID、PAT/PMT、CRC、連続性カウンター、切断時の後処理を確認する。