<!-- SPDX-FileCopyrightText: 2026 FocusFlow contributors -->
<!-- SPDX-License-Identifier: AGPL-3.0-only -->

# V1 ADR 006: Schedule Snapshot Policy

Status: **Accepted; updated to match current app state**

Date: 2026-06-26

Last reviewed: 2026-07-07

## Decision

Persist committed diagnostic schedule snapshots only. Snapshots are diagnostic
records, not authoritative task state.

Snapshot retention is bounded by a `retention_expires_utc` timestamp derived from
the snapshot capture time plus 30 days. Repository cleanup deletes snapshots whose
retention expiry is before the cleanup instant.

Notice acknowledgement is stored separately in `notice_acknowledgements`. The
Today read model suppresses acknowledged notices when presenting pending notice
state, but acknowledgement does not delete the source snapshot early.

## Consequences

* Snapshot rows can remain available for diagnostics until their retention
  expiry even after all displayed notices have been acknowledged.
* Notice acknowledgement is an application-layer read-model concern, not a
  snapshot lifecycle rule.
* Cleanup jobs and tests should target `retention_expires_utc`, not notice
  acknowledgement status.
