A solver answer becomes a certificate when independent computations agree. This repo's own arithmetic re-checks every constraint on the decoded schedule, its own enumeration counts every feasible schedule, and the solver's streamed exhaustive enumeration runs at build time too: the two counts must agree or the build stops.

highlighted = computed this step

Independent re-verification

This repo's own arithmetic re-checks all 25 constraints on the decoded schedule: 9 coverage rules, 12 at-most-one rules, and 4 load rules. Why: an independent check must not reuse the solver's code path, and any violation would stop the build rather than let a wrong schedule through.

every constraint re-checked exactly\text{every constraint re-checked exactly}
One schedule out of manyThe decoded schedule is feasible, and the own enumeration counts every feasible schedule.one of 5184 feasible schedulesD1D2D3N1S3S2off2 shiftsN2S2S1S23 shiftsN3offS3S12 shiftsN4S1offS32 shifts

Counting every schedule

The own enumeration counts 5184 feasible schedules: per day an assignment injects the 3 shifts into the 4 nurses, 24 day-patterns; across 3 days that is 13824 combinations, and the load filter keeps exactly 5184. The solver's own exhaustive enumeration also runs at every build, streaming every feasible solution, and its streamed count of 5184 must equal this repo's count or the build stops; every streamed schedule passes the same per-constraint re-checks. Why: two live, independent counts landing on the same integer is a certificate, not a cross-reference to a number someone recorded once.

P(4,3)=24P(4,3)=24
One schedule out of manyThe decoded schedule is feasible, and the own enumeration counts every feasible schedule.one of 5184 feasible schedulesD1D2D3N1S3S2off2 shiftsN2S2S1S23 shiftsN3offS3S12 shiftsN4S1offS32 shifts

Many right answers

There are 5184 equally valid schedules, so propagation alone cannot narrow this instance to one answer; the solver's search committed to one of them. Why: the earlier chain propagates outright to singletons, and the stuck toy shows propagation stalling so search must branch; here the space of fully feasible answers is simply large.

feasible space, not a unique answer\text{feasible space, not a unique answer}
One schedule out of manyThe decoded schedule is feasible, and the own enumeration counts every feasible schedule.one of 5184 feasible schedulesD1D2D3N1S3S2off2 shiftsN2S2S1S23 shiftsN3offS3S12 shiftsN4S1offS32 shifts

Diagram note

The grid is the same decoded schedule, N1 through N4 by D1 through D3, and the count in the caption is recomputed by the own enumeration on every build. Pixel positions are rounded for layout; every number shown is exact.

count recomputed on every build\text{count recomputed on every build}
One schedule out of manyThe decoded schedule is feasible, and the own enumeration counts every feasible schedule.one of 5184 feasible schedulesD1D2D3N1S3S2off2 shiftsN2S2S1S23 shiftsN3offS3S12 shiftsN4S1offS32 shifts