First commit
This commit is contained in:
32
AGENTS.md
Normal file
32
AGENTS.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# 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、連続性カウンター、切断時の後処理を確認する。
|
||||
Reference in New Issue
Block a user