M6完了監査
監査日: 2026-05-13
成功条件と証跡
| 要件 | 証跡 | 状態 |
|---|---|---|
.motion2dproj 保存 | saveProject がJSONと正規化PNG Data URLを書き出す | 完了 |
| 再読み込み | handleProjectFile と loadImageAssetFromDataUrl | 完了 |
| パーツ/メッシュ/リグ保存 | parts / meshes / rig.values / rig.keyframes を保存 | 完了 |
| 入力設定保存 | settings.mouseInputEnabled と cameraTracking: "not_adopted" | 完了 |
| 内部保存名UUID化 | image.assetId と image.internalName をUUIDベースにし、image.displayName と分離 | 完了 |
| 既存形式互換 | assetId / internalName がない既存 .motion2dproj は読み込み時にUUIDを補完 | 完了 |
| 禁止データ抑止 | カメラ映像、音声、外部モデル、個人情報ログを保存しない | 完了 |
| JSONサイズ制限 | 読み込み時に75 MBを上限として拒否 | 完了 |
| スキーマ検証 | src/lib/projectValidation.ts で構造、バージョン、必須フィールド、パーツ、メッシュ、リグ、設定値を検証 | 完了 |
| テスト | scripts/verify-m5-m6.mjs と scripts/verify-project-validation.mjs | 完了 |
.motion2dpkg について
ランタイム書き出しはMVP最小範囲から外し、.motion2dproj の保存/再読み込みをMVP完了条件とする。
.motion2dproj ZIP化について
2026-05-13時点では、.motion2dproj はJSON + PNG Data URL形式を維持する。初期仕様のZIPコンテナとの差分と移行判断は docs/project_format_decision.md に記録した。
今回ZIP化を見送った理由は、既存形式の読み込み互換を維持したまま、まず不正/過大/破損/想定外データを安全に拒否するほうが正式リリース前のリスク低減効果が高いため。ZIP化はZip Slip、ZIP爆弾、総展開サイズ、ファイル数、圧縮率、Tauri権限、依存レビューを含めてv0.2以降で扱う。