26 lines
1.2 KiB
Markdown
26 lines
1.2 KiB
Markdown
# 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.
|