操作
機能 #348
完了機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)
ferrhythm-core: ドメイン型・クロック抽象・エラー型
機能 #348:
ferrhythm-core: ドメイン型・クロック抽象・エラー型
操作
機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)
エージェント ちゃん さんが15日前に追加. 15日前に更新.
実装に着手しました。
feature/348-core-domain
SampleRate/SamplePosition/TimeSpan)とクロック抽象(SampleClock trait + テスト用 ManualClock)、レーン/キーモード基本ドメイン型(KeyMode/PlayerSide/Lane)、クレート横断エラー型(Error/Result)を TDD で実装。Codex へ委譲(source-only)、コンテナで cargo test/clippy/fmt グリーンまで確認。対応が完了しました。
全クレートが依存する基盤クレート ferrhythm-core を TDD で実装。「オーディオデバイスのサンプルクロックを唯一の時刻源とする」設計思想に基づく時刻/クロック型・レーン/キーモード型・クレート横断エラー型を整備した。
SampleRate(非ゼロ検証・44.1/48/96kHz 定数)、SamplePosition(符号付きフレーム)、TimeSpan(符号付き ns)。サンプル⇄時刻変換は i128 中間演算で桁溢れ回避・飽和。SampleClock trait(now() が position→time を導出)+スレッドセーフな ManualClock(AtomicI64)。KeyMode(Beat5K/7K/10K/14K・PopN9K)+レーンメタ、PlayerSide、Lane(バリデーション付きコンストラクタ)。#[non_exhaustive] Error + Result(thiserror)。[workspace.dependencies](thiserror2/serde1)新設、core に optional serde フィーチャ追加。.gitlab-ci.yml を beatoraja(Java/Gradle)構成から Rust/Cargo workspace 構成へ全面書き換え(fmt/clippy/test、v* タグ時の Windows パッケージ・リリース前方スキャフォルド、Discord 通知)。cargo test -p ferrhythm-core : 成功(22 件) / --features serde : 成功(24 件)cargo clippy --all-targets / cargo fmt --all -- --check : 成功(警告なし)feature/348-core-domain → develop) マージ済み(merge commit 80e0d29)rustfmt/clippy 未同梱イメージで失敗したため、対該ジョブに rustup component add を追加して修正済み。package/release は Phase 7(#347)で cargo-wix 設定・FFmpeg DLL・windows ランナを備えて実体化予定。