# 6. Exact cp9 purge ignores TTL

Status: Accepted

## Context

Broad scheduled cleanup must only delete expired sessions, so it requires an
expired `cp9-ttl`. But explicit cleanup — a manual workflow dispatch or the
`cp9 destroy` handoff — represents a deliberate decision to clean a specific
owner/session now. Such an explicit request should not be blocked by a missing
or future TTL.

## Decision

- Broad mode (no owner/session) discovers candidates from cp9-managed resources
  (`cp9-managed` in `{true, terraform-substrate}`) that carry `cp9-owner`,
  `cp9-session`, and an **expired** `cp9-ttl`. It does not require
  `environment=cp9`.
- Exact mode (paired `owner` and `session`) **ignores TTL** and treats the pair
  as an explicit manual or `cp9 destroy` handoff scope.
- A missing TTL is reported as a label defect, never treated as expiration.

## Consequences

- Scheduled cleanup never deletes active (non-expired) sessions.
- Explicit cleanup of a known owner/session is never blocked by TTL state.
- TTL metadata problems surface as label-defect findings, not as deletions.
