# Staleness & Drift Prep — PREP-AIRGAP-CTL-58-001-BLOCKED-ON-57-002 Status: Draft (2025-11-20) Owners: AirGap Controller Guild · AirGap Time Guild Scope: Capture the staleness/drift requirements for controller status once seal/unseal telemetry (57-002) is available. ## Inputs - Time anchor ingestion from Time service (Roughtime/RFC3161) via `time_anchor_id`, `drift_seconds`, `staleness_budget_seconds`. - Bundle metadata from importer (bundle_id, manifest hash, generated_at). ## Proposed status enrichments - Add fields to `GET /system/airgap/status`: - `staleness_seconds_remaining` - `bundle_id` - `time_anchor_id` - `drift_seconds` - Compute `staleness_seconds_remaining = staleness_budget_seconds - drift_seconds` (floor at 0). - Determinism: calculations purely from stored numbers; no wall-clock calls beyond persisted anchor timestamps. ## Observability - Metrics: `airgap_staleness_seconds{tenant}` (gauge), `airgap_drift_seconds{tenant}`. - Timeline events emitted when budgets breached: `airgap.staleness.threshold`. ## Handoff Use this prep note to satisfy PREP-AIRGAP-CTL-58-001. After integrating sealed-startup telemetry and time anchor verification, implement the above fields and metrics, then mark the implementation task DOING.