2.0 KiB
2.0 KiB
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、連続性カウンター、切断時の後処理を確認する。