novolis-governance / markdown-and-pdf-policy.md
Markdown and PDF policy
Policies that keep the org coherent
dotnetgovernancenovolis
Indisputable rule: Novolis does not take dependencies on Markdig or QuestPDF. Markdown parsing/HTML and prose PDF export use Novolis-owned stacks only.
Allowed
| Concern | Package / path |
|---|---|
| Markdown parse + fluent + HTML | `Novolis.Markup.Markdown` (`MarkdownDocument.Parse`, `MarkdownToHtmlConverter`) |
| Markdown → paged model | `Novolis.Markup.Markdown.Documents` |
| Prose / book / report PDF | `Novolis.Documents` + `Novolis.Documents.Layout` + `Novolis.Documents.Skia` |
| Themed MD→PDF CLI | `Novolis.Tools.MarkdownPdf` (`novolis-mdpdf`) |
| Score / freeform drawing PDF | SkiaSharp in the owning library (e.g. `Novolis.Audio.Midi`) — **not** QuestPDF |
Forbidden
PackageReference/PackageVersionforMarkdigorQuestPDF(any version)using Markdig/using QuestPDFin product or test code- Routing books or reports through a third-party PDF layout engine
- Replacing Markdig with a different third-party Markdown parser (grow
Novolis.Markup.Markdowninstead)
Why
- License: QuestPDF Community eligibility is not acceptable org-wide.
- Ownership: One-column trade/report PDFs are a first-class Novolis island (
novolis-documents), not a QuestPDF clone. - Consistency: Studio preview, manuscript print, and tools share one Markdown engine.
Validation
pwsh -File d:\novolis\novolis-governance\scripts\verify-banned-packages.ps1See also: nuget-only-policy.md, library-boundaries.md, novolis-documents design.