novolis-governance / imports-todo/frank-scheduling-cronjobs.md
Import: `Frank.CronJobs` → Novolis
Policies that keep the org coherent
dotnetgovernancenovolis
Source: D:\frankrepos\Frank.CronJobs
What
| Package | Role |
|---|---|
| `Frank.CronJobs` | Hosted cron job registration, DI integration |
| `Frank.CronJobs.Cron` | Cron expression parsing/scheduling |
Dependencies: Frank.Reflection (→ novolis-codegen subset after wave 5).
Consumer: Frank.WorkflowEngine (PackageReference CronJobs 2.0.0, Mapping 1.1.0, Channels 1.2.0).
Why
- Listed P1 conditional in frank-inventory.md; blocks WorkflowEngine port.
- Aspire/service hosts need periodic jobs without copying cron parsing.
- 0 tests in quick inventory — rebuild with TUnit during port.
How
Target
New repo: novolis-scheduling (name per frank-naming-and-structure.md)
| Novolis package | Frank source |
|---|---|
| `Novolis.Scheduling` | `Frank.CronJobs` |
| `Novolis.Scheduling.Cron` | `Frank.CronJobs.Cron` (or nested) |
Port steps
- Spike public API surface + Reflection usage.
- Bootstrap repo;
net10.0;Novolis.Testing.TUnit. - Port or rewrite with deterministic clock injection for tests.
- Publish before frank-workflow-engine.md.
- Add registry + inventory row.
Blockers
novolis-testingand codegen Reflection on GPR.
Acceptance
Frank.WorkflowEnginecsproj can switch toNovolis.Scheduling+Novolis.Mapping+Novolis.Messaging.Channels(PackageReference only).