novolis-governance / imports-todo/internal-novolis-audit/codegen-bindings-backlog.md
CodeGen bindings — post–Phase 4 backlog
Policies that keep the org coherent
dotnetgovernancenovolis
What
Items deferred after the binding codegen library baseline (initial-idea-v2.md):
| Item | Description |
|---|---|
| **Phase 6 — façade doc enrichment** | Automated flow from generated façade XML back into C# manifest sources (`Novolis.Raylib.Manifests`) |
| **Second consumer** | Prove `Novolis.CodeGen.Bindings` is not Raylib-only (e.g. future native UI shim, another game API) |
| **NativePack generator** | Packaging native DLLs consistently with L0 manifest fragments |
| **BindingSurface sugar** | Higher-level manifest ergonomics beyond raw fragments |
| **Parity T2** | Byte-identical generated output (not required today; T1 AST gate is enough) |
Shipped baseline (do not re-import):
Novolis.CodeGen.Pipeline,Bindings,Bindings.Roslyn- Raylib manifests,
RaylibBindingCodegenHost, T0/T1 parity, 14 generated outputs
Why
- Raylib lane is the forcing function; without a second consumer, manifest APIs may stay Raylib-shaped.
- Doc enrichment reduces hand-maintained companion drift between L2 companions and L3 façades.
- Native pack generation is recurring work across Raylib, ImGui, Raygui shims.
How
Phase 6 — doc enrichment
- Define manifest fragment field for doc template or
@dochooks consumed by emitter. - Pipeline step: after generate, optional
doc-syncwrites summary lines into companion.csonly when fingerprint unchanged (safety). - Gate with T1 comparer excluding doc-only regions if needed.
Second consumer spike
- Pick smallest non-Raylib target (e.g. code generator for
novolis-wirefishcapture metadata, or internal test manifest). - Implement
IBindingManifestSource+ oneInteropExportsfragment; runBindingCodegenExecutorin unit test withMockFileSystem. - Document required companion pattern in
novolis-codegen/docs.
NativePack generator
- Spec fragment type
NativePackwith RID → DLL list. - MSBuild target emits
runtimes/**layout; align withNovolis.Raylibpackaging today. - Share with install repo if needed.
Sequencing
- After Raylib bindings stable on GPR
2026.1.*. - No cross-repo
ProjectReferenceintonovolis-raylibfrom codegen — manifests stay in consumer repo.
Acceptance
- Backlog tracked here; each item gets its own PR wave with parity tests.
- Second consumer merged or spike doc explains why deferred another quarter.