What's wrong: a schedule change saved with a FUTURE effective date (owner ruling 2026-08-01: effective_from/effective_until on employee_schedules) is invisible and immutable once saved — no way to see it, move its date, or cancel it before it takes effect. The only workaround is re-saving the whole grid and reasoning about window arithmetic by hand.
Change (UI plan approved by owner 2026-08-03): a "Pending schedule changes" card on the per-employee schedule page listing every future-dated facet:
- pending addition ("starts Aug 10") -> inline date change (tomorrow or later) or cancel (deletes the row, never took effect)
- pending removal ("stops from Aug 10") -> inline date change or cancel (clears
effective_until, shift keeps running)
After any edit: future scheduled-upcoming assignments outside the new window are removed, then generate_instances backfills anything newly in-window. Both audit-logged. No migration.
Blast radius: per-employee schedule page + one new POST route. Generation logic untouched.
What's wrong: a schedule change saved with a FUTURE effective date (owner ruling 2026-08-01:
effective_from/effective_untilonemployee_schedules) is invisible and immutable once saved — no way to see it, move its date, or cancel it before it takes effect. The only workaround is re-saving the whole grid and reasoning about window arithmetic by hand.Change (UI plan approved by owner 2026-08-03): a "Pending schedule changes" card on the per-employee schedule page listing every future-dated facet:
effective_until, shift keeps running)After any edit: future scheduled-upcoming assignments outside the new window are removed, then
generate_instancesbackfills anything newly in-window. Both audit-logged. No migration.Blast radius: per-employee schedule page + one new POST route. Generation logic untouched.