exceptwhen

Start here

See it work before you write anything.

This is a complete schedule: a regular rule, a holiday that overrides it, and the calendar both produce. Subscribe to it now, then swap in your own document.

exceptwhen publishes a calendar derived from your rules, with the reason attached to every date. It is not a calendar app, not a solver, and not legal advice.

The whole idea, on one date

Wednesday 25 November 2026

Two rules both want this day. thanksgiving wins and school_nights does not. The holidays layer sits above base, so a holiday rule takes precedence over the regular school-night rule for the days it covers.

That is the property worth paying for. A disagreement about one date becomes a disagreement about one named rule and one recorded reading of one clause, rather than about the whole calendar.

Two-household school week

Resolved blocks for Thanksgiving week, America/Los_Angeles. Each one names the rule and the clause that produced it.

Regular rule

Parent A

Nov 23, 2026, 6:00 PM to Nov 24, 2026, 8:00 AM

Rule school_nights, from Judgment 4(a).

School nights run overnight, so the exchange is the next morning.

Regular rule

Parent A

Nov 24, 2026, 6:00 PM to Nov 25, 2026, 8:00 AM

Rule school_nights, from Judgment 4(a).

School nights run overnight, so the exchange is the next morning.

Exception

Parent B

Nov 25, 2026, 6:00 PM to Nov 29, 2026, 6:00 PM

Rule thanksgiving, from Judgment 7(c).

Thanksgiving starts the evening before and runs to Sunday evening.

These blocks are a fixed sample so this page works before any schedule is published. The rules below are the real thing.

The source

The two rules that produced that week

This is the whole schedule. It is text, so it diffs, reviews and keeps its history the way any other document does.

engine version "0.1.0" zone "America/Los_Angeles" horizon_margin 7
channel custody states parent_a parent_b
layer base
layer holidays above base
rule school_nights in base
when every week on mon, tue, wed, thu
from civil that day at 18:00
until civil next day at 08:00
assign custody = parent_a
clause "Judgment 4(a)"
interpret "School nights run overnight, so the exchange is the next morning."
rule thanksgiving in holidays
when nth(4, thu) of november
from civil previous day at 18:00
until from + civil 4 days
assign custody = parent_b
clause "Judgment 7(c)"
interpret "Thanksgiving starts the evening before and runs to Sunday evening."
Then

Swap the example for your document

Replace the two rules above with the ones in your judgment, custody agreement, or work rotation. Each rule carries the clause it came from and your reading of it, so the calendar can always be traced back to the paragraph that produced it.