---
title: "Verify monthly recurrence follows the month-end policy"
description: "Test a sandbox monthly recurrence created on the thirty-first, checking shorter months, occurrence identity, and absence of unintended schedule drift."
canonical_url: "https://vostride.com/agent-library/scheduling/monthly-end-of-month-policy.md"
md_url: "https://vostride.com/agent-library/scheduling/monthly-end-of-month-policy.md"
content_kind: "recipe"
topic: "scheduling"
---

# Verify monthly recurrence follows the month-end policy

Test a sandbox monthly recurrence created on the thirty-first, checking shorter months, occurrence identity, and absence of unintended schedule drift.

## Risk

Monthly recurrence cannot always preserve its numeric day. Record whether the product skips short months or uses their final day, then inspect several generated occurrences to distinguish that policy from accidental rolling arithmetic.

## Fixtures

- An owned sandbox calendar with a disposable recurring event created on a prepared month ending on day 31.
- A recurrence specification defining short-month behavior and an independent expected-date manifest spanning at least four months.
- An external scheduler horizon fixture that materializes those months and a read-only occurrence oracle.

## Steps

1. Create the monthly event on the prepared thirty-first and verify its recurrence summary matches the intended rule before saving.
2. Open the recurrence preview and verify the next four expected dates against the independent month-end manifest.
3. Save and inspect calendar views covering the short month and the following long month; verify each expected occurrence and any intentionally skipped month.
4. Read the independent occurrence oracle and verify exact dates, one stable series identifier, and no drift to the twenty-eighth or an extra next-month date.

## Expected results

- Generated dates follow the stated short-month policy consistently.
- A shorter month does not permanently change the anchor day for later months.
- The occurrence set contains no duplicates or unexpected rolled-over dates.

## False-pass traps

- Checking only the next full-length month misses the month-end boundary.
- Generating expected dates with the same recurrence implementation makes the comparison circular.

## Cleanup

- Delete the entire sandbox series and clear its externally materialized reminder jobs.

## Use with agent-qa

Adapt this test design to your application's acceptance criteria and configured target using the [recipe execution guide](/agent-library/software-factory/turn-a-recipe-into-an-agent-qa-test.md). External fixture setup and non-UI checks require your own supported hooks or test tooling. Validate the authored test, execute it, and inspect the completed evidence; this recipe is not a recorded test result.

## References

- [agent-qa first test](/docs/agent-qa/guides/first-test.md)
- [agent-qa hooks](/docs/agent-qa/guides/hooks.md)
- [agent-qa test](/docs/agent-qa/configuration/test.md)

- [Scheduling and calendar QA recipes](/agent-library/scheduling.md)
- [Software factory QA library](/agent-library.md)
