# LDC-E1346 — Recurring schedule that never advances ## What it means A recurring goal unfolds into dated instances: the step must be positive, the horizon must end, and dates pair with calendrical steps while instants pair with durations. A schedule whose step is zero or negative never advances; an open horizon bounds nothing; a date-step pairing measures with the wrong clock. Any of these stops the compiler at the schedule. The repair is to advance: a positive step, a finite horizon, and a step the bounds understand. A schedule that moves forward lowers exactly as written. ## Example ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; entity Tenant; relation trig(t: Tenant) kind empirical; relation done(t: Tenant) kind institutional; rule R defeasible { for t: Tenant; when trig(t); then duty D { bearer t; beneficiary t; goal recurring every 0 calendar_month over [@2026-01-01, @2027-01-01) { achievement { condition done(t); window [occurrence.start, occurrence.end); } }; }; } ``` ## Fix ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; entity Tenant; relation trig(t: Tenant) kind empirical; relation done(t: Tenant) kind institutional; rule R defeasible { for t: Tenant; when trig(t); then duty D { bearer t; beneficiary t; goal recurring every 1 calendar_month over [@2026-01-01, @2027-01-01) { achievement { condition done(t); window [occurrence.start, occurrence.end); } }; }; } ``` ## Engine message The engine reports this in its own wording: ```text example.law:14:14: error LDC-E1346: `recurring` of norm "D": schedule step is non-positive — occurrences do not advance, and the schedule is not finite (§124.4.1) ``` ## Related - [Duties](/constructs/duty/) — what a duty head must carry. - [Deadlines and calendar](/constructs/deadline-calendar/) — schedules and the horizons they run on.