Novolis Docs
novolis-governance / platform-import-plan.md

Platform import plan

dotnetgovernancenovolis

Canonical execution plan for migrating Frank sources and closing in-repo gaps. Detail briefs live under `imports-todo/` as appendices only — do not duplicate priority tables there.

Last updated: 2026-05-25


Status summary

PhaseThemeStatus
DoneReplay, Tcp middleware, TwoD.Silkdone — GPR publish pending
0Publish gates, Math BCL, Numerics sunset, polishdone (in-repo); GPR merge pending
1Mapping, Raylib Loaders, Raylib Inputdone (code); registry/GPR pending
2Cron, Messaging facade, Audio, ViewPose bridgedone (code); dogfood samples optional
3SCR / FC adopt Replaydone (platform + dogfood); product repos adopt when ready
4Workflows, EF, codegen devtools, ML auditspec + audit — implementation after Phase 1–2 GPR
5ACS, central CI, DependenciesExplorerdone (governance scaffolding)

Dependency graph

flowchart TB
  subgraph phase0 [Phase0_Gates]
    GPR[NuGet_GPR_publish]
    MathBCL[Math_BCL_GPR_wave]
    NuGetOnly[verify_nuget_only]
    DocsAlign[governance_doc_alignment]
  end
  subgraph phase1 [Phase1_Frank_P0]
    Mapping[novolis_mapping]
    Assets[raylib_loaders_OBJ]
    Input[raylib_input]
  end
  subgraph phase2 [Phase2_Frank_P1]
    Cron[novolis_scheduling]
    Msg[novolis_messaging_facade]
    Audio[novolis_audio_or_raylib]
    StackFinish[math_rendering_physics_finish]
  end
  subgraph phase3 [Phase3_Products]
    ReplayDone[Novolis.Simulation.Replay]
    SCR[SCR_event_journal_adapter]
    FC[FleetCommander_timeline_dogfood]
  end
  subgraph phase4 [Phase4_Frank_P2]
    Workflow[novolis_workflows]
    EF[novolis_data_EF]
    CodegenDev[codegen_devtools]
    ML[ML_remainder_audit]
  end
  subgraph phase5 [Phase5_Ops]
    ACS[ACS_governance]
    CI[Workflows_CI]
  end
  phase0 --> phase1
  phase1 --> phase2
  Mapping --> Workflow
  Cron --> Workflow
  Msg --> Workflow
  MathBCL --> StackFinish
  ReplayDone --> SCR
  ReplayDone --> FC
  phase2 --> phase3
  phase2 --> phase4
  phase0 --> phase5

Global rules

  • Mine (Frank): D:\frankrepos, D:\github\Frank.*, FleetCommander, SCR — extract pieces via rebuild, not wholesale copy.
  • Third-party: D:\repos, D:\dotnetrepos — inspiration only; NuGet or minimal reimplementation.
  • Cross-repo: `nuget-only-policy.md` — PackageReference only; publish upstream before consumer bumps.
  • Stack: `library-boundaries.md` — Math → Physics → Simulation; Raylib/Rendering orthogonal.

Policy: `imports-todo/third-party-inspiration-policy.md`.


Already done (closed)

ItemEvidenceAppendix
Simulation replay (FC patterns)novolis-simulation/src/Novolis.Simulation.Replayfleetcommander-patterns
TCP middleware + memory transportnovolis-transports/src/Novolis.Transports.Tcp.Abstractionsbedrockframework-transports
2D platformer laneNovolis.Rendering.TwoD + Backends.TwoD.Silkgameengine-2d — Raylib Scene2D cancelled

Follow-ups: GPR publish Replay + Tcp.Abstractions; SCR/FC product adoption of Replay.


Phase 0 — Publish gates and in-repo completion

WorkstreamStatusAppendix
GPR / local feed (Math, Replay, Tcp)pending mergenuget-setup.md
Math BCL wavedone in sourcemath-bcl-refactor-publish-wave
Physics.Numerics sunsetdone (package removed)physics-numerics-package-sunset
ViewBasis / slab parity / RigidTransformdoneviewbasis, ilgpu-bvh-slab-parity, rigidtransform
Doc alignmentdonegovernance-docs-stale-references

Acceptance: pwsh -File novolis-governance/scripts/verify-nuget-only.ps1 exit 0; consumers build on packages only after GPR.


Phase 1 — Frank P0

#TargetStatusSourceAppendix
1.1novolis-mappingdoneFrank.Mappingfrank-mapping
1.2Novolis.Raylib.LoadersdoneFrank.GameEngine.Assets OBJgameengine-assets
1.3Novolis.Raylib.InputdoneFrank.GameEngine.Input (minimal)gameengine-input

Acceptance: TUnit per repo; registry entry; dogfood mesh or input sample.


Phase 2 — Frank P1

#TargetStatusAppendix
2.1novolis-schedulingdone (skeleton)frank-scheduling-cronjobs
2.2Messaging facadedonefrank-messaging-facade
2.3novolis-audiodone (skeleton)gameengine-audio
2.4ViewPose → CameraSnapshot bridgedonesimulation-viewpose-to-rendering
2.5Codegen bindings backlogdeferredcodegen-bindings-backlog

Phase 3 — Product patterns

ProductPlatform workStatus
FleetCommanderAdopt Novolis.Simulation.Replay in headless testsdocumented — product repo
Star Conflicts RevoltEvent journal stays product; Replay for tick snapshotsdocumented — optional ISimulationEventStore<T>
DogfoodingViewPoseRenderingBridge + Replay sample testdone

Appendices: fleetcommander-patterns, star-conflicts-revolt-patterns.


Phase 4 — Frank P2 (after Phase 1–2 GPR)

#TargetStatusDepends
4.1novolis-workflow-engineextracted locally; GPR release pendingMapping + Cron + Messaging (novolis-workflows remains GitHub Actions shared workflows)
4.2novolis-data EF facetspecTesting GPR
4.3Codegen devtools facetsspecfrank-codegen-devtools
4.4ML remainder auditaudit donefrank-ml-remainder

See `platform-import-phase4-backlog.md`.


Phase 5 — Governance and CI

#WorkStatus
5.1ACS alignment (AGENTS.md, .ai/index.md, verify script)done
5.2Central reusable workflowsdone (template under .github/workflows)
5.3DependenciesExplorer maintainer notedocumented in github-frank-mine-extra

Do not import

CategoryExamples
Frank skip listWPF, HttpDude, TorrentClient, bulk Frank.GameEngine 3D (UBL/XSD → novolis-xsd)frank-repos-explicit-skip
Third-party vendoringbullet3, ravendb, MonoGame, Unity rebellion2repos-third-party-catalog
dotnetrepos bulkaspnetcore/efcore forksdotnetrepos-platform-reference
Bedrock forkTcp slice done; logging middleware optional onlybedrockframework-transports

Verification checklist (every phase)

  1. pwsh -File novolis-governance/scripts/verify-nuget-only.ps1 → exit 0
  2. Affected solution dotnet build + dotnet test
  3. Pack affected packages 2026.1.*; bump consumer Directory.Packages.props
  4. Update this status table + frank-inventory.md

Implementation order

Phase0 (Math GPR, Numerics sunset, docs)
  → Phase1 (Mapping, Raylib Loaders, Raylib Input)
  → Phase2 (Cron, Messaging, Audio) ∥ Phase5 (ACS, CI)
  → Phase3 (SCR Replay adoption, FC tests)
  → Phase4 (Workflow → EF → Codegen devtools → ML audit)