Ymir/docs/aetheria-cutover.md
2026-07-15 00:51:54 +01:00

42 lines
1.6 KiB
Markdown

# Aetheria Cutover Notes
## First Slice
Cut over projectile travel and impact discovery before trying to replace every
Unity physics use.
1. Spawn a Ymir body for each projectile and relevant target hull/contact shape.
2. Step Ymir on the same fixed tick used by Aetheria gameplay.
3. Render Unity projectile GameObjects from Ymir snapshots.
4. Convert Ymir contacts into Aetheria hit/splash policy.
5. Keep Unity colliders as visual/debug witnesses only during the transition.
6. Delete or neuter collider callbacks once the Ymir path owns hit truth.
## Negative Checks
- A projectile with a Unity collider disabled still travels and hits through
Ymir.
- A Unity `OnCollisionEnter` callback cannot apply damage independently.
- Replaying from the same canonical creation order and command stream under the
accepted Box3D build produces the same ordered Ymir facts.
- Restarting from a checkpoint matches named numeric state tolerances. It emits
no authoritative gameplay contact facts until canonical history has replayed
through the checkpoint tick and restored exact contact lifecycle identity.
- Mid-flight visible projectile position matches the Ymir snapshot within a
named tolerance.
## Adapter Boundary
Unity adapter code may:
- submit spawn/despawn/field/body commands
- receive snapshots and contacts
- render GameObjects from snapshots
- publish diagnostics
Unity adapter code may not:
- alter positions as a hidden repair loop
- apply gameplay damage from Unity collisions
- maintain a parallel physics cache that can override Ymir
- treat scene hierarchy as the source of simulation truth