novolis-governance / frank-p0-deep-dive.md
P0 deep-dive (Frank.\* → Novolis)
Policies that keep the org coherent
dotnetgovernancenovolis
Validated against shallow clones at SDK 10.0.203, branch main (Frank.Libraries uses master — not cloned).
Frank.Channels.DependencyInjection
| Field | Value |
|---|
| Packable | Frank.Channels.DependencyInjection |
| Tests | 2 [Fact] |
| Latest release | 2.2 |
| External Frank deps | None in library (tests use Frank.Testing.TestBases) |
| API surface | AddChannel<T>(), resolves Channel<T>, ChannelReader<T>, ChannelWriter<T> |
| Blockers | None |
| Novolis slice | Full single package → Novolis.Messaging.Channels |
| Effort | S |
Frank.PulseFlow
| Field | Value |
|---|
| Packable | Frank.PulseFlow |
| Tests | 8 [Fact] |
| Latest release | 3.0 |
| Frank deps | Frank.Channels.DependencyInjection, Frank.Reflection, Frank.Testing.TestBases |
| Docs | docs/ tree, AGENTS.md, STYLE.md |
| Blockers | Remove/replace Reflection dependency during migration (inline or Novolis.CodeGen later) |
| Novolis slice | Core messaging + ported docs |
| Effort | M (after Channels + Testing) |
Frank.BedrockSlim
| Field | Value |
|---|
| Packable | Server, Client, Cryptography |
| Tests | 1 [Fact] |
| Latest release | 1.1 |
| Samples | Client + Server sample projects |
| Blockers | Low test coverage — add TCP integration tests in Novolis |
| Novolis slice | Server + Client only → Novolis.Transports.Tcp.* |
| Effort | M |
Frank.Testing
| Field | Value |
|---|
| Packable | Logging, TestBases, Testcontainers, TestOutputExtensions |
| Tests | Test project present; few Fact attributes in quick scan |
| Latest release | 2.0 |
| Frank deps | Frank.Reflection, Frank.Reflection.Dump |
| Blockers | Decouple Reflection for first Novolis cut (copy minimal helpers or delay Dump package) |
| Novolis slice | All four packages under Novolis.Testing.* |
| Effort | M — Wave 1 priority |
Frank.DataStorage
| Field | Value |
|---|
| Packable | 10 backends + Abstractions + Core |
| Tests | 6 [Fact] |
| Latest release | 3.1 |
| Frank deps | Frank.Reflection, Frank.Testing.TestBases |
| Blockers | Large matrix — first wave: Json + Sqlite + Abstractions only |
| Novolis slice | See wave 3 issue |
| Effort | L (full), M (subset) |
Frank.Http
| Field | Value |
|---|
| Packable | Http, Abstractions, Authentication, Extensions |
| Tests | 14 test files, 0 Fact in quick scan (investigate test framework) |
| Latest release | 1.1 |
| Frank deps | None |
| Blockers | Weak test signal — add xUnit tests on migration |
| Novolis slice | Full HTTP stack → Novolis.Transports.Http.* |
| Effort | M |
Frank.Security
| Field | Value |
|---|
| Packable | Cryptography, HaveIBeenPwned, Resources |
| Tests | 8 [Fact] |
| Latest release | 0.2 |
| Frank deps | Frank.Testing.* (tests) |
| Blockers | Sparse README — document APIs during migration |
| Novolis slice | Cryptography + HIBP client (skip Resources unless required) |
| Effort | S–M |
P0 re-scores (confirmed)
All seven remain P0 (totals 11–15). No demotions.