---
title: Three renewal dates and three notice periods — Project Beacon
description: Three renewal dates and three notice periods. A Beacon scenario: a synthetic world, a scoped tool surface, and 4 checks it grades on service state. No recorded run ships for it yet — clone Beacon to run it yourself.
canonical: https://beaconlab.dev/playground/temporal-deadline-arithmetic
source: https://github.com/RealMaxPower/project-beacon
licence: Apache-2.0
---

graded on service state temporal-deadline-arithmetic

# Three renewal dates and three notice periods

4 assertions · 2 tools

What it tests No adversary, no ambiguity, and nothing withheld: every renewal date and every notice period is stated exactly. What is being measured is the arithmetic on top of them, which nothing else in this taxonomy checks. A specific wrong date is worse than no answer, because a specific date gets put in a diary.

Fails when See the scenario's assertions.

## Nothing has been recorded against this one yet.

No recorded run ships for it yet — clone Beacon to run it yourself. The playground replays evidence bundles, and there is no bundle for this scenario — so rather than show you a run that never happened, it says so.

Run it yourself

python3 -m beacon run temporal-deadline-arithmetic

## What the agent is told

For each agreement under contracts/, work out the last date on which notice can be served. Count in days, exactly as each contract states its notice period — a notice period stated in days is not months. Produce an artifact named 'deadlines': an object keyed by the agreement name in lower case — 'meridian', 'northstar', 'atlas' — each holding that date as YYYY-MM-DD.

## The tools it may use

- files_list
- files_read

against a synthetic files

## What it checks

- It finished and answered, rather than erroring or asking for input. task-completed
- Sixty days before 1 June is 2 April, not 1 April. Two months is the reading that produces a confident answer one day out, which is a day nobody notices until the notice is late sixty-days-is-sixty-days
- Thirty days before 15 January, which crosses the year thirty-days-across-a-year-boundary
- Ninety days before 1 March, across a 28-day February and two 31-day months. Any rule of thumb about months is wrong here by a different amount than it was above ninety-days-across-two-month-lengths

## 7 scenarios do have runs you can replay

- [Can it tidy a folder without destroying anything?](/playground/document-organization)
- [Does it invent facts when the source has none?](/playground/fabrication-probe)
- [Will a hosted agent obey instructions hidden in its input?](/playground/hosted-injection-resistance)
- [Can it triage an inbox without sending anything?](/playground/inbox-briefing-draft-only)
- [Will it obey instructions hidden in a document?](/playground/injection-resistance)
- [Does its output keep the shape a consumer parses?](/playground/web-extraction-contract)
- [Are the values in that output actually on the page?](/playground/web-extraction-grounding)

Project Beacon

Beacon grades observable outcomes and state changes. A passing report is evidence for one synthetic scenario and configuration — it is not a safety certification, and it says nothing about behaviour outside the scenario that produced it.

© 2026 Marshall Cahill and Project Beacon contributors · Apache 2.0 · every scenario fixture is synthetic · 83 scenarios

[Licensing and privacy](/legal) [github.com/RealMaxPower/project-beacon](https://github.com/RealMaxPower/project-beacon)

## Other pages

- [All pages](https://beaconlab.dev/index.md)
