ZV-2026-0607 · 2026-09-01 · almanack.dev

almanack.dev: Type of date on add_to_date changed object → unset.

breaking

What changed

Type of date on add_to_date changed object → unset. Type of date on calendar_weekday changed object → unset. Type of date on format_calendar_date changed object → unset. Type of month on render_calendar_page changed integer → unset.

What to do

If your agents call almanack.dev, pin the new snapshot, patch the affected call sites, and let a green contract check confirm the fix. If you don't use the changed tools, nothing is required, but the rest of the ecosystem just learned about it at the same moment you did.

The redline

−  object
+  unset   add_to_date
−  object
+  unset   calendar_weekday
−  object
+  unset   format_calendar_date
−  integer
+  unset   render_calendar_page
−  Move a date by years, months and days. They are applied in that fixed order, which matters…
+  Move a date by years, months, days and ticks. They are applied in that fixed order, which …   add_to_date
+  on_error  Optional field on_error was added to add_to_date; may shift model behaviour.
+  steps  Optional field steps was added to add_to_date; may shift model behaviour.
+  ticks  Optional field ticks was added to add_to_date; may shift model behaviour.
+  time  Optional field time was added to add_to_date; may shift model behaviour.
+  date  Default of date on add_to_date changed unset → null.
−  When a recurring event falls. query 'next' gives the first occurrence after the date in 'a…
+  When recurring events fall, and whether they land on each other. query 'next' gives the fi…   calendar_events
+  events  Optional field events was added to calendar_events; may shift model behaviour.
+  event  Default of event on calendar_events changed unset → null.
−  Which weekday a date falls on, as a 0-based index into the calendar's own week plus its na…
+  Which weekday a date falls on, as a 0-based index into the calendar's own week plus its na…   calendar_weekday
+  dates  Optional field dates was added to calendar_weekday; may shift model behaviour.
+  on_error  Optional field on_error was added to calendar_weekday; may shift model behaviour.
+  date  Default of date on calendar_weekday changed unset → null.
−  Convert between a calendar date, its day number, and its Gregorian date. Give exactly one …
+  Convert between a calendar date, its day number, and its Gregorian date. Give exactly one …   convert_date
+  dates  Optional field dates was added to convert_date; may shift model behaviour.
+  day_numbers  Optional field day_numbers was added to convert_date; may shift model behaviour.
+  gregorians  Optional field gregorians was added to convert_date; may shift model behaviour.
+  on_error  Optional field on_error was added to convert_date; may shift model behaviour.
+  time  Optional field time was added to convert_date; may shift model behaviour.
−  The distance between two dates. 'days' is the exact signed count (negative when end preced…
+  The distance between two dates. 'days' is the exact signed count (negative when end preced…   date_interval
+  end_time  Optional field end_time was added to date_interval; may shift model behaviour.
+  start_time  Optional field start_time was added to date_interval; may shift model behaviour.
−  Write a date out to a pattern. pattern is either a name from the calendar's own 'formats' …
+  Write a date out to a pattern. pattern is either a name from the calendar's own 'formats' …   format_calendar_date
+  dates  Optional field dates was added to format_calendar_date; may shift model behaviour.
+  on_error  Optional field on_error was added to format_calendar_date; may shift model behaviour.
+  time  Optional field time was added to format_calendar_date; may shift model behaviour.
+  times  Optional field times was added to format_calendar_date; may shift model behaviour.
+  date  Default of date on format_calendar_date changed unset → null.
+  time  Optional field time was added to moon_phases; may shift model behaviour.
+  month  Default of month on render_calendar_page changed unset → null.
+  calendar_periods  Tool calendar_periods was added.
+  sun_daylight  Tool sun_daylight was added.
−  date  Field date on add_to_date is no longer required.
−  event  Field event on calendar_events is no longer required.
−  date  Field date on calendar_weekday is no longer required.
−  date  Field date on format_calendar_date is no longer required.
−  Every moon's phase on a date. 'fraction' is the exact position in the cycle, 0.0 at new an…
+  Every moon's phase on a date. 'fraction' is the exact position in the cycle, 0.0 at new an…   moon_phases
−  Read a written date back into a date. Strict, with no fuzzy matching of any kind: literal …
+  Read a written date back into a date. Strict, with no fuzzy matching of any kind: literal …   parse_calendar_date
−  Draw one month of a calendar as an SVG grid and return the SVG itself. Columns come from t…
+  Draw one month of a calendar as an SVG grid, or a whole year on one sheet, and return the …   render_calendar_page
−  month  Field month on render_calendar_page is no longer required.
Full almanack.dev changelog →JSON feedWatch this for my agents