Novolis Docs
novolis-governance / frank-inventory.md

Frank.\* repository inventory

dotnetgovernancenovolis

Master inventory for migrating legacy frankhaugen libraries into Novolis-Platform.

Dependency graph (Frank → Frank)

flowchart TB
  Channels[Frank.Channels.DependencyInjection]
  Pulse[Frank.PulseFlow]
  Testing[Frank.Testing]
  Reflection[Frank.Reflection]
  Markdown[Frank.Markdown]
  Channels --> Pulse
  Testing --> Channels
  Reflection --> Testing
  Reflection --> Markdown
  Pulse --> Channels
  Pulse --> Reflection
  Pulse --> Testing
  DataStorage[Frank.DataStorage] --> Reflection
  DataStorage --> Testing
  CronJobs[Frank.CronJobs] --> Reflection
  CronJobs --> Testing
  Security[Frank.Security] --> Testing
  Templates[Frank.Templates] --> Testing

Wave implication: novolis-messaging (Channels) → novolis-testing early → then transports/storage/security.

Summary by tier

TierCountAction
P07Extract into reserved Novolis repos (see waves)
P18Spike complete — conditional extract (see frank-p1-spikes.md)
P26Reference / decompose / rebuild ideas only
P33+Skip or archive

P0 — Bring (validated 2026-05-17)

RepoS/D/MTotalNovolis repoNovolis packagesModeReleaseTestsFrank depsNotes
Frank.Channels.DependencyInjection5/5/515novolis-messagingNovolis.Messaging.ChannelsExtract2.22 factsFrank.Testing.TestBases (tests only)Pilot — 1 packable project
Frank.PulseFlow5/4/514novolis-messagingNovolis.MessagingExtract3.08 factsChannels, Reflection, Testingdocs/; after Channels
Frank.BedrockSlim5/4/413novolis-transportsNovolis.Transports.Tcp.Server, .ClientExtract1.11 factCryptography (internal)Skip Cryptography unless needed
Frank.Testing5/4/413novolis-testingNovolis.Testing.TUnit, .Logging, .Testcontainers, .TestBases, .TestServerExtract2.0sparseReflectionWave 1 — unblocks all migrations
Frank.DataStorage4/4/412novolis-storageWave 3 subset: .Json, .Sqlite + AbstractionsExtract subset3.16 factsReflection, Testing10 packable backends — do not migrate all at once
Frank.Http4/4/412novolis-httpNovolis.Http.* (documents, variables, client, auth, extensions)Rebuild1.10 factsnoneKeep request documents presentation-free
Frank.Security4/4/311novolis-securityNovolis.Security.Secrets, .PasswordHashing, .Encryption, .HaveIBeenPwned; WordLists internalExtract0.28 factsTestingWord lists in Novolis.Security.WordLists

P1 — Evaluate (spike complete)

RepoS/D/MTotalNovolis targetSpike verdictMode
Frank.CronJobs4/4/311TBD (Novolis.Scheduling?)Conditional — 2 packages (Frank.CronJobs, .Cron); depends Reflection+Testing; 0 facts in quick scan — rebuild with testsExtract after Testing
Frank.Reflection4/4/412novolis-codegenPartial — bring Reflection, Dump, Mermaid; defer Roslyn stack until neededExtract subset
Frank.Analyzers4/3/411novolis-analyzers, novolis-codegenPartial — AutoMapper, CodeLength analyzers; skip CppInteropts unless native laneExtract subset
Frank.Templates4/3/411novolis-templatesMerge — align with novolis-template-dotnet; drop duplicate NuGetSolution templateMerge
Frank.Mermaid3/3/39novolis-markupWave 10 — fluent diagram text; archive after shipExtract
Frank.Markdown3/3/410novolis-markupWave 10 — 38 facts, fluent APIExtract
Frank.WireFish3/3/39novolis-transportsMigrated — Novolis.Transports.WireFish; depends on Messaging.ChannelsExtract (wave 9)
Frank.Networking3/3/39novolis-transportsDefer — no NuGet releases; audit overlap with Bedrock/Http firstPartial later
Frank.Collections3/3/39novolis-math?Defer — Array2D, ObservableList; 27 facts; low strategic fitExtract if demanded
Frank.ML2/2/26novolis-machinelearning + novolis-simulationPartial — neural + AutoML (ML); racing sim (Simulation.Racing); apps/presentation stay privateExtract subset

P2 — Reference / archive

RepoTotalTreatment
Frank.GameEngine—gameengine-reference-policy.md — selective mining (wave 7 math); repo stays active
Frank.Libraries—Decompose catalog only; author disclaims production use
Frank.SimpleInstaller—Rebuild ideas into novolis-install
Frank.IRC—Skip — learning project
Frank.CrossPlatformWindow—Skip unless native window lane outside Raylib
Frank.Libraries.Wpf—Skip — WPF off-brand

P3 — Skip

RepoReason
Frank.IRCEducational; overlaps Networking.Irc
Frank.ML (apps/domain)Apps and domain code remain on private Frank.ML
Frank.Libraries.Wpf / CrossPlatformWindowNo Novolis lane

Frank → Novolis package mapping

Frank packageNovolis packageTarget repo
Frank.Channels.DependencyInjectionNovolis.Messaging.Channelsnovolis-messaging
Frank.PulseFlowNovolis.Messagingnovolis-messaging
Frank.BedrockSlim.Server / .ClientNovolis.Transports.Tcp.Server / .Clientnovolis-transports
Frank.Http (+ abstractions)Novolis.Http.*novolis-http
Frank.Testing.*Novolis.Testing.*novolis-testing
Frank.DataStorage.Json / .SqliteNovolis.Storage.Json / .Sqlitenovolis-storage
Frank.Security.Cryptography / .HaveIBeenPwnedNovolis.Security.Secrets, .PasswordHashing, .Encryption, .HaveIBeenPwnednovolis-security
Frank.CronJobsNovolis.Scheduling, Novolis.Scheduling.Cronnovolis-scheduling
Frank.MappingNovolis.Mappingnovolis-mapping
Frank.Messaging (abstractions)Novolis.Messaging.Abstractionsnovolis-messaging
Frank.GameEngine.Assets (OBJ)Novolis.Raylib.Loadersnovolis-raylib
Frank.GameEngine.InputNovolis.Raylib.Inputnovolis-raylib
Frank.GameEngine.AudioNovolis.Audio (stub)novolis-audio
Frank.Reflection (subset)Novolis.CodeGen.*novolis-codegen
Frank.Analyzers.* (subset)Novolis.Analyzers.*novolis-analyzers
Frank.GameEngine.Primitives (subset)Novolis.Math.Arrays, Novolis.Math.Geometrynovolis-math
Frank.ML.Foundation.Neural.*Novolis.MachineLearning.Neural.*novolis-machinelearning
Frank.ML.Foundation.AutoMlNovolis.MachineLearning.AutoMlnovolis-machinelearning
Frank.ML.Domain.Racing (sim)Novolis.Simulation.Racingnovolis-simulation
Frank.ML.Domain.Racing (ML glue)NeuralRacing appnovolis-dogfooding
Frank.WireFishNovolis.Transports.WireFishnovolis-transports
Frank.MarkdownNovolis.Markup.Markdownnovolis-markup
Frank.MermaidNovolis.Markup.Mermaidnovolis-markup
Frank.WorkflowEngineNovolis.WorkflowEngine.* (Abstractions, core, Hosting, Channels, Mapping, Scheduling)novolis-workflow-engine
Frank.GameEngine.* (remainder)nonesee game policy

Extraction waves

WaveNovolis repoFrank sourcesBrief
0novolis-messagingChannels.DI → PulseFlowextraction-briefs/wave-0-messaging.md
1novolis-testingFrank.Testingextraction-briefs/wave-1-testing.md
2novolis-transportsBedrockSlim, Httpextraction-briefs/wave-2-transports.md
3novolis-storageDataStorage subsetextraction-briefs/wave-3-storage.md
4novolis-securityFrank.Securityextraction-briefs/wave-4-security.md
5novolis-analyzers / novolis-codegenAnalyzers, Reflection subsetwave-5-codegen.md, wave-5-analyzers.md
6novolis-templatesFrank.Templateswave-6-templates.md
7novolis-mathGameEngine Primitives subsetwave-7-gameengine-math.md
8novolis-machinelearningFrank.ML neural foundationwave-8-machinelearning-neural.md
9novolis-wirefishFrank.WireFishwave-9-wirefish.md
10novolis-markupFrank.Markdown, Frank.Mermaidwave-10-markup.md
12novolis-simulationFrank.ML.Domain.Racing (sim)wave-12-simulation-racing.md
13novolis-mappingFrank.Mappingplatform-import-plan.md — done
7bnovolis-raylibOBJ + InputNovolis.Raylib.Loaders, .Input — done
14novolis-workflow-engineFrank.WorkflowEngineNovolis.WorkflowEngine — extracted locally; GPR release pending
—novolis-installSimpleInstaller ideasRebuild only

Pilot: extraction-briefs/pilot-channels.md

Non-goals

  • Bulk migrate Frank.Libraries monolith
  • Migrate Frank.GameEngine.Rendering.* while Novolis.Raylib is active
  • Migrate Markdown/Mermaid outside novolis-markup (wave 10)
  • Transfer git history by default
  • Publish production Novolis packages before bootstrap gate opens

Tracking issues

Novolis repoIssue
novolis-messaging#1 pilot Channels, #2 PulseFlow
novolis-testing#1 Testing wave 1
novolis-transports#1 TCP + HTTP wave 2
novolis-storage#1 Storage wave 3
novolis-security#1 Security wave 4
novolis-physics#1 GameEngine policy