novolis-governance / imports-todo/internal-novolis-audit/physics-numerics-package-sunset.md
Physics — sunset `Novolis.Physics.Numerics`
Policies that keep the org coherent
dotnetgovernancenovolis
What
Retire the `Novolis.Physics.Numerics` package: obsolete forwards (Vector3d, Quaterniond, Ray3d, Sphere3d, Capsule3d, AxisAlignedBox3d) that duplicate BCL + Math Geometry.
Current state (2026-05-25):
- Implementation is only
ObsoleteNumericsForwards.cswith implicit conversions toSystem.Numerics/ Math types. - No production `.cs` outside the package uses
Vector3d/Ray3d(physics code migrated). - Stale docs: package README still says “Use
Ray3” and listsRay3/Sphere3in related packages. - Project references remain:
Novolis.Physics.Abstractions,Novolis.Physics.Orbits, and others stillProjectReferenceNumerics in csproj restore graphs. - `novolis-simulation/Directory.Packages.props` pins
Novolis.Physics.Numericsthough simulation source does not use it.
Why
- library-boundaries.md: BCL first, always — custom
Vector3dtypes are forbidden for new stack code. - Keeping the package with wrong README actively steers contributors to forbidden names (
Ray3). - Extra package reference edges slow restore and confuse dependency graphs.
How
Phase A — Stop the bleeding (non-breaking)
- Fix
novolis-physics/src/Novolis.Physics.Numerics/README.md:
- Examples use
Ray,Sphere,Vector3. - Mark package deprecated with target removal version.
- Update
ObsoleteNumericsForwardsmessages: point toRay/Sphere, notRay3. - Remove
Novolis.Physics.Numericsfromnovolis-simulation/Directory.Packages.propsif unused. - Replace
ProjectReferenceto Numerics in physics projects with direct Math.Geometry / BCL only (Abstractions should not need Numerics).
Phase B — Remove package (breaking, one wave)
- Delete
Novolis.Physics.Numericsproject from solution. - Remove package from registry / pack scripts.
- Major or minor bump on affected Physics packages; release notes: “Numerics removed — use System.Numerics + Novolis.Math.Geometry.”
- Grep consumers across org for
PackageReference Include="Novolis.Physics.Numerics".
Phase C — Governance
- Update inertial-frame-stack-spec.md examples (
AxisAlignedBox3d→AxisAlignedBoxor document double-precision as future optional facet, not Numerics shims).
Acceptance
- Physics solution builds with zero references to
Novolis.Physics.Numerics. - README and governance docs contain no “use Ray3” guidance for new code.
- GPR/no longer publishes
Novolis.Physics.Numerics(or publishes empty metapackage with hard error — prefer delete).