novolis-governance / imports-todo/frank-ml-remainder.md
Import: `Frank.ML` remainder (post-foundation)
Policies that keep the org coherent
dotnetgovernancenovolis
Source: D:\frankrepos\Frank.ML
What is already in Novolis
| Frank | Novolis |
|---|---|
| `Frank.ML.Foundation.Neural.*` | `novolis-machinelearning` |
| `Frank.ML.Foundation.AutoMl` | `novolis-machinelearning` |
| `Frank.ML.Foundation.Core` | Partial / evaluate |
| `Frank.ML.Domain.Racing` (simulation) | `novolis-simulation` (`Novolis.Simulation.Racing`) |
What remains on disk
| Project | Suggestion |
|---|---|
| `Frank.ML.Domain.Legacy` | **Defer** — uses `Frank.Mapping`, `Frank.Libraries.Csv/Json`; mine algorithms only |
| `Frank.ML.Domain.MlPipeline` | **Partial** — pipeline abstractions → `novolis-machinelearning` if generic |
| `Frank.ML.Domain.MlAssets` | **App/private** — asset bundles stay out of platform |
| `Frank.ML.Presentation.*` (Avalonia, ConsoleSpectre, Adapter) | **Apps** — `novolis-dogfooding` or private; not platform |
| `Frank.ML.App.*`, Aspire host | **Skip** platform — product apps |
| Tests / Playwright | Port patterns to `Novolis.Testing` only |
Why
- wave-8-machinelearning-neural.md scoped building blocks, not domain apps.
- library-boundaries.md: NN evolution on racing lives in apps (e.g. NeuralRacing), not
Novolis.MachineLearning.*. - Legacy domain would pull Mapping and Libraries monolith — import Mapping first (frank-mapping.md).
How
- Finish frank-mapping.md.
- Audit
Domain.MlPipelinefor types that are truly framework vs product. - Port only packable, domain-agnostic libraries; leave Avalonia/Web/CLI in Frank.ML or dogfooding.
- Add partial-migration block to Frank.ML README (per frank-partial-migration.md).
Acceptance
- No
Frank.Libraries.*PackageReference innovolis-machinelearningproduction code. - Racing sim stays in Simulation; ML training glue stays in apps.