Skip to content

feat: calendar exclusion support in scheduling pipeline#11

Merged
Theauxm merged 1 commit into
mainfrom
feat/exclusion-windows
Mar 3, 2026
Merged

feat: calendar exclusion support in scheduling pipeline#11
Theauxm merged 1 commit into
mainfrom
feat/exclusion-windows

Conversation

@Theauxm
Copy link
Copy Markdown
Member

@Theauxm Theauxm commented Mar 3, 2026

Summary

  • Add Exclude() fluent method on ScheduleOptions and Exclusions property on ManifestOptions
  • Wire ApplyExclusions() into all 3 upsert methods in DataContextExtensions
  • Add IsExcluded() check at top of SchedulingHelpers.ShouldRunNow() — exclusions evaluated before schedule type dispatch
  • CreateItemOptions propagates exclusions to batch items
  • 24 new unit tests: ExclusionTests (14 tests for Exclusion.IsExcluded() + JSON round-trip) and ExclusionScheduleTests (10 tests for ShouldRunNow() integration)

Depends on: TraxSharp/Trax.Effect#12

Test plan

  • dotnet build passes
  • All 275 tests pass (dotnet test)
  • Excluded manifests are skipped during scheduling (verified via unit tests)
  • Midnight-crossing TimeWindow works correctly
  • Empty exclusions list has no effect on scheduling

Add Exclude() fluent method to ScheduleOptions and wire exclusion
evaluation into SchedulingHelpers.ShouldRunNow() as a pre-check gate.

- Exclude() on ScheduleOptions with Exclusions on ManifestOptions
- ApplyExclusions helper in DataContextExtensions for all 3 upsert methods
- IsExcluded check at top of ShouldRunNow (before schedule type dispatch)
- CreateItemOptions propagates exclusions to batch items
- 24 unit tests: Exclusion.IsExcluded + ShouldRunNow integration
@traxsharp
Copy link
Copy Markdown

traxsharp Bot commented Mar 3, 2026

This PR is included in version 1.5.0

@Theauxm Theauxm deleted the feat/exclusion-windows branch March 6, 2026 19:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant