Novolis Docs
novolis-governance / simulation-layer-policy.md

Simulation layer policy (summary)

dotnetgovernancenovolis

Operational summary for agents and maintainers. Full boundaries: library-boundaries.md.

Stack (closed)

Math → Physics → Simulation

Math facets: Novolis.Math.Arrays, Novolis.Math.Geometry, future Novolis.Math.Topology.

Simulation facets include Novolis.Simulation.Racing (headless racing sim; ML-agnostic). Neural evolution on racing lives in apps, not in novolis-machinelearning.

RepoIn stack?Role
**novolis-math**YesNumbers, geometry, topology — **never time**
**novolis-physics**YesPhysical evolution with `dt`
**novolis-simulation**YesWorlds, systems, clocks, **all cameras**, replay
**novolis-raylib****No**Separate graphics host — **no dep on Simulation, Simulation does not dep on Raylib**
**Apps**ComposeWire stack + Raylib (and product rules) at app layer

Dependency rule

physics → math
simulation → math, physics

Forbidden: Novolis.Raylib.*Novolis.Simulation.* (either direction). Same for dogfooding/SCR inside platform Simulation packages.

Type rules

  • BCL first, always: System.Numerics.Vector3, Quaternion, Matrix4x4 — no Vector3d / Novolis.Physics.Numerics duplicates.
  • No Vector2 in stack; planar XZ = Vector3 with Y = 0.

Time rule

NeedHome
No time (static spatial/math)Math
`dt`, integration, forces, motionPhysics
Tick order, scenario clock, replaySimulation

Cameras

All platform cameras → Simulation.

Apps: product-specific feel (run bobbing, recoil); bridge Simulation observers to Raylib Camera3D — not in either library.

SCR vs platform

StarConflictsRevolt.Server.Simulation = product. Novolis.Simulation.* = platform.

HexGame-aligned loops

Orchestration for HexGame-shaped ticks (commands in → advance authoritative state → snapshots/effects out) lives here and in app application cores — not in Physics. See hexgame-authoritative-core.md.

Related