# Mika Live2D Runtime Export Work Order

- avatarId: `mika_live2d`
- ready: `true`
- runtimeModelJson: `runtime/mika_live2d.model3.json`
- fileGroupReady: `true`
- model3ReferenceConsistency.ready: `true`
- runtimePackageAcceptanceGate.ready: `true`
- requiredFileGroupCount: `8`
- displayInfoRequiredParameterCount: `59`
- expressionOutputCount: `9`
- motionOutputCount: `7`
- LearnMore default until ready: `mao_pro`

## Runtime File Groups

- `runtimeModelJson`: `runtime/mika_live2d.model3.json` -> `root`; present `true`; files `mika_live2d.model3.json`
- `moc3`: `runtime/*.moc3` -> `FileReferences.Moc`; present `true`; files `mika_live2d.moc3`
- `textures`: `runtime/textures/*.{png,jpg,jpeg,webp}` -> `FileReferences.Textures`; present `true`; files `textures/texture_00.png`
- `displayInfo`: `runtime/*.cdi3.json` -> `FileReferences.DisplayInfo`; present `true`; files `mika_live2d.cdi3.json`
- `physics`: `runtime/*.physics3.json` -> `FileReferences.Physics`; present `true`; files `mika_live2d.physics3.json`
- `pose`: `runtime/*.pose3.json` -> `FileReferences.Pose`; present `true`; files `mika_live2d.pose3.json`
- `expressions`: `runtime/expressions/*.exp3.json` -> `FileReferences.Expressions`; present `true`; files `expressions/a.exp3.json, expressions/blink.exp3.json, expressions/e.exp3.json, expressions/i.exp3.json, expressions/o.exp3.json, expressions/smile.exp3.json, expressions/surprised.exp3.json, expressions/thinking.exp3.json, expressions/u.exp3.json`
- `motions`: `runtime/motions/*.motion3.json` -> `FileReferences.Motions`; present `true`; files `motions/chorus-gesture.motion3.json, motions/greeting.motion3.json, motions/idle.motion3.json, motions/lyric-reading.motion3.json, motions/point-lyrics.motion3.json, motions/rhythm-sway.motion3.json, motions/soft-dance-loop.motion3.json`

## DisplayInfo Parameters

- mouth: `ParamA, ParamI, ParamU, ParamE, ParamO, ParamMouthDown`
- motion: `ParamAngleX, ParamAngleY, ParamAngleZ, ParamBodyAngleX, ParamBodyAngleY, ParamBodyAngleZ, ParamAllX, ParamAllY, ParamAllRotate, ParamBreath, ParamLeftShoulderUp, ParamRightShoulderUp, ParamArmLA01, ParamArmLA02, ParamArmLA03, ParamArmRA01, ParamArmRA02, ParamArmRA03, ParamHandLA, ParamHandRA, ParamFingerL, ParamFingerR, ParamLegLA01, ParamLegLA02, ParamLegRA01, ParamLegRA02, ParamFootL, ParamFootR, ParamEyeLOpen, ParamEyeROpen, ParamEyeBallX, ParamEyeBallY, ParamEyeLSmile, ParamEyeRSmile, ParamCheek, ParamBrowLY, ParamBrowRY, ParamHairFront, ParamHairSideL, ParamHairSideR, ParamHairBack, ParamHairBackL, ParamHairBackR, ParamoHairMesh, ParamHairFrontFuwa, ParamHairSideFuwa, ParamHairBackFuwa, ParamSkirtFront, ParamSkirtSideL, ParamSkirtSideR, ParamSkirtFuwa, ParamSleeveL, ParamSleeveR`
- missing: `-`
- ready: `true`

## Runtime Package Gate

- required ready fields: `fileGroupReady, model3ReferenceConsistency.ready, runtimeFileQuality.ready, displayInfoParameterReady, modelJsonProblems=[], blockingReasons=[]`
- required outputs: `runtime/mika_live2d.model3.json with complete FileReferences, runtime/*.moc3 referenced by FileReferences.Moc, runtime/textures/* referenced by FileReferences.Textures, runtime/*.cdi3.json referenced by FileReferences.DisplayInfo, runtime/*.physics3.json referenced by FileReferences.Physics, runtime/*.pose3.json referenced by FileReferences.Pose, runtime/expressions/*.exp3.json referenced by FileReferences.Expressions, runtime/motions/*.motion3.json referenced by FileReferences.Motions`
- model3 required refs: `Moc, Textures, DisplayInfo, Physics, Pose, Expressions, Motions`
- model3 missing refs: `-`

## Expression Outputs

- `a` -> `runtime/expressions/a.exp3.json`; map `a`; params `ParamA, ParamMouthDown`
- `blink` -> `runtime/expressions/blink.exp3.json`; map `blink`; params `ParamEyeLOpen, ParamEyeROpen`
- `e` -> `runtime/expressions/e.exp3.json`; map `e`; params `ParamE, ParamMouthDown`
- `i` -> `runtime/expressions/i.exp3.json`; map `i`; params `ParamI, ParamMouthDown`
- `o` -> `runtime/expressions/o.exp3.json`; map `o`; params `ParamO, ParamMouthDown`
- `smile` -> `runtime/expressions/smile.exp3.json`; map `smile`; params `ParamEyeLSmile, ParamEyeRSmile, ParamCheek, ParamA`
- `surprised` -> `runtime/expressions/surprised.exp3.json`; map `surprised`; params `ParamBrowLY, ParamBrowRY, ParamEyeLOpen, ParamEyeROpen, ParamO`
- `thinking` -> `runtime/expressions/thinking.exp3.json`; map `thinking`; params `ParamAngleX, ParamBodyAngleZ, ParamBrowLY, ParamBrowRY, ParamEyeBallX`
- `u` -> `runtime/expressions/u.exp3.json`; map `u`; params `ParamU, ParamMouthDown`

## Motion Outputs

- `chorus-gesture` -> `runtime/motions/chorus-gesture.motion3.json`; group `chorus-gesture`; params `ParamBodyAngleY, ParamRightShoulderUp, ParamArmRA01, ParamArmRA02, ParamArmRA03, ParamHandRA, ParamFingerR`
- `greeting` -> `runtime/motions/greeting.motion3.json`; group `greeting`; params `ParamAngleX, ParamBodyAngleX, ParamBodyAngleY, ParamBodyAngleZ`
- `idle` -> `runtime/motions/idle.motion3.json`; group `idle`; params `ParamAngleX, ParamAngleY, ParamAngleZ, ParamBreath`
- `lyric-reading` -> `runtime/motions/lyric-reading.motion3.json`; group `lyric-reading`; params `ParamAllX, ParamAllY, ParamAllRotate, ParamAngleX, ParamAngleY`
- `point-lyrics` -> `runtime/motions/point-lyrics.motion3.json`; group `point-lyrics`; params `ParamLeftShoulderUp, ParamRightShoulderUp, ParamArmLA01, ParamArmRA01, ParamHandLA, ParamHandRA, ParamFingerL, ParamFingerR`
- `rhythm-sway` -> `runtime/motions/rhythm-sway.motion3.json`; group `rhythm-sway`; params `ParamBodyAngleX, ParamBodyAngleZ, ParamArmLA01, ParamArmLA02, ParamArmLA03, ParamHandLA, ParamHandRA, ParamLegLA01, ParamLegRA01, ParamFootL, ParamFootR, ParamSkirtFront, ParamSkirtFuwa, ParamSleeveL, ParamSleeveR`
- `soft-dance-loop` -> `runtime/motions/soft-dance-loop.motion3.json`; group `soft-dance-loop`; params `ParamAngleX, ParamAngleY, ParamAngleZ, ParamBodyAngleX, ParamBodyAngleY, ParamBodyAngleZ, ParamAllY, ParamAllRotate, ParamBreath, ParamLeftShoulderUp, ParamRightShoulderUp, ParamArmLA01, ParamArmLA02, ParamArmLA03, ParamArmRA01, ParamArmRA02, ParamArmRA03, ParamHandLA, ParamHandRA, ParamFingerL, ParamFingerR, ParamLegLA01, ParamLegLA02, ParamLegRA01, ParamLegRA02, ParamFootL, ParamFootR, ParamHairFront, ParamHairSideL, ParamHairSideR, ParamHairBack, ParamHairBackL, ParamHairBackR, ParamoHairMesh, ParamHairFrontFuwa, ParamHairSideFuwa, ParamHairBackFuwa, ParamEyeLSmile, ParamEyeRSmile, ParamEyeLOpen, ParamEyeROpen, ParamEyeBallX, ParamEyeBallY, ParamCheek, ParamBrowLY, ParamBrowRY, ParamSkirtFront, ParamSkirtSideL, ParamSkirtSideR, ParamSkirtFuwa, ParamSleeveL, ParamSleeveR`

## OLV Model Dict

- name: `mika_live2d`
- displayName: `Mika`
- url: `/live2d-models/mika_live2d/runtime/mika_live2d.model3.json`
- idleMotionGroupName: `Idle`

## Runtime Gap

- preflight: `/mika-avatar/api/live2d/mika/runtime-export-preflight`
- ready: `true`
- missing ids: `-`
- blocking reasons: `-`

## Work Rules

1. Export the finished Cubism model into deliveries/mika-live2d/runtime with model3.json at the runtime root.
2. model3 FileReferences must declare Moc, Textures, DisplayInfo, Physics, Pose, Expressions and Motions.
3. EXPRESSION_MAP.json values must stop being TODO and must resolve to model-native expression files.
4. MOTION_MAP.json values must stop being TODO and must resolve to motion3 files with Cubism parameter curves.
5. Keep LearnMore on mao_pro until runtime preflight, delivery readiness, intake, and go-live gates all pass.
