Files
mirakurun-rs/AGENTS.md
2026-07-31 14:39:33 +09:00

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 --checkcargo clippy --workspace --all-targets --all-features -- -D warningscargo test --workspace --all-featuresを基本検証とする。
  • 本番コードで unwrapexpect、意図しない 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、連続性カウンター、切断時の後処理を確認する。