dsmc 0.18.0

Digitalservo Motion Control Library
Documentation
# dsmc: エージェント向けメモ

## 返答は日本語で

ユーザーへの返答(作業の報告・説明・質問)は日本語で書いてください。コード・doc コメント・コミットメッセージは既存の流儀(英語)に合わせます。

## 記録はユーザーに頼まれたときだけ

`notes/worklog.md` への作業ログの追記と、`notes/math/` の数式ノートの更新は、**ユーザーが「記録して」「ログに残して」などと頼んだときだけ**行ってください。
頼まれていないときは、作業の最後に自分から書いたり、`notes/` を読み込んだりしないでください(トークン節約のため)。`notes/` はgit管理外です。

### 頼まれたときの書き方

`notes/worklog.md` の末尾に、次の形式で追記します(既存の記録は書き換えない)。

```markdown
## YYYY-MM-DD HH:MM 〈作業の題名〉
- 依頼: ユーザーが頼んだこと(1〜2行)
- 実施: 変更したファイル・追加/変更した関数や型の要点
- 数式: 実装した式・アルゴリズム(下記)
- 判断: 設計上の選択とその理由、却下した案
- 検証: 実行したコマンド(cargo test / clippy など)と結果
- 未完了・次の課題: 残っていること、気づいた問題
```

数式は省かないでください。実装した式をコードの変数名との対応つきで書き、検定統計量と棄却域、近似とその条件、数値的な工夫(スケーリング・許容誤差など)の式と閾値も含めます。式は ```text ブロックか `$...$` で書きます。

式・アルゴリズム・閾値を変えた作業を記録するときは、`notes/math/` の該当ファイル(索引は `notes/math/README.md`)も現状に合わせて更新してください。

バージョンを上げたコミットを記録するときは、題名にバージョン(例: v0.4.1)を入れてください。

## テストの実行

結合テストは `tests/integration/` に1つのバイナリとしてまとめています(`main.rs` に各ファイルを `mod` で列挙)。新しいテストファイルを足したら `main.rs` に `mod` を追加してください。`tests/` 直下にファイルを置くとバイナリが増え、macOS の初回起動スキャン(1本数秒)でテストが遅くなります。

テストが長くなるモジュールは `tests/integration/<module>/` のフォルダにし、そのモジュールで共通の設定(サンプリング周期・対象プラント・比較用の補助関数など)はフォルダの `mod.rs` に置きます(例: `discretize/mod.rs`)。

assert で結果を確かめないもの(CSV を `out/` に書き出す・表示するだけのもの)はテストではなく `examples/` に置き、`cargo run --example <name>` で実行します。

- 変更に関係するモジュールだけ先に: `cargo test --test integration <module>::`(例: `excitation::`)
- ライブラリ内の doctest: `cargo test --doc`
- 最後に全体: `cargo test`
- SRIVC の重いテスト(`system_identification::srivc::`)はデバッグビルドでは ignore されます。確かめるときは `cargo test --release --test integration srivc::`(数秒)で。`-- --ignored` をデバッグビルドで付けると数分かかるので使わないこと