Skip to content

Define TESLA clock uncertainty and suspend/clock-step behaviour #72

Description

@ctfbruce

Problem

Schedules use time.Sub against the construction timestamp while verification derives epochs from capture wall-clock timestamps. These may use different clock behaviour across steps or suspend. Trying adjacent verifier epochs does not establish a bounded timestamp-trust policy.

Proposed change

Define and enforce a monitored mapping between monotonic local durations and verifiable wall time, including explicit attribution availability when clock uncertainty is too large.

Acceptance criteria

  • Specify startup time quality, maximum uncertainty, receiver/capture time trust and behaviour on backward/forward clock steps and suspend/resume.
  • Use controlled clocks to cover epoch boundaries, delayed packets and resume; prove no already-disclosed key regains authority through a backward step.
  • Expose attribution unavailable when time quality violates the declared bound, with a defined recovery rule and operator health signal.
  • Keep local lease durations monotonic and distinct from attribution wall-time mapping; do not present Round(0) or adjacent-epoch matching alone as the protocol fix.

Current evidence

unimplemented clock policy / validation gap; source inspection only, no new runtime reproduction. Backlog classification is based on source inspection; this issue does not claim a new runtime reproduction.

Dependencies

  • #70 — Specify and version packet-tag algorithms and verification limits
  • #71 — Persist schedule identities and roll TESLA chains without stale-key reuse

Related work

These are integration points, not prerequisites for starting this issue.

  • #104 — Add a bounded operator doctor command
  • #116 — Instrument host and enforcement capability health
  • #119 — Alert on unavailable enforcement and stale disclosure state
  • #6 — Filter executor discovery by advertised capability and readiness

Priority context

Required before accepting untrusted users or advertising the corresponding protected capability; not a blocker for the trusted local TEST alpha.

Validation must use owned local fixtures on supported Linux environments. Record the implementing merge request and relevant test results before closing this issue.


Imported from GitLab issue 71. Originally opened 2026-09-10. Historical GitLab links may require access to the original project.

Activity

  1. added
    FeatureA specific missing product behavior.
    P2Follow-on improvement or optional expansion after core requirements.
    Traffic policy and attributionConsistent traffic policy, aggregate budgets and evidence-backed packet attribution.
    Validation gapBehavior may exist in part; the required operating evidence or test gate remains absent.
    on Sep 24, 2026
  2. ctfbruce commented on Oct 7, 2026

    @ctfbruce
    CollaboratorAuthor

    PR #376, merged as f345d9f. All 16 required jobs passed on the exact candidate and merged main.

    The executor now refuses signing for an unready chain origin or excessive wall/monotonic drift, never restores authority to an earlier signing epoch, and exposes clock unavailability through admission, CLI and health metrics. Controlled-clock regressions cover steps, suspend and recovery.

    This remains open for the receiver/capture-time trust and end-to-end uncertainty contract and its delayed-capture validation. The documented local drift threshold is a safety policy, not a measured bound on the receiver's clock.

  3. ctfbruce commented on Oct 7, 2026

    @ctfbruce
    CollaboratorAuthor

    #409 adds the independently supplied receiver-clock record described in the remaining scope above. SDK/CLI verification binds that record to the exact packet bytes and capture timestamps, executor/chain/origin identities and an observation interval. Its combined error bound must cover receiver and schedule-origin uncertainty, timestamping error and drift. The verifier rounds the bound conservatively, rejects overrides or uncovered captures, and supports later offline checks when the original arrival was covered. Missing records leave capture_time_trusted=false. Record and operator procedure.

    Controlled tests cover delayed rechecks, edited timestamps/digests, wrong origins, insufficient bounds and the disclosure boundary. The local step/suspend safety and health behavior from #376 remain in place. These tests do not establish a measured cross-host bound.

    This issue remains open for:

    • An owned end-to-end capture run with independently referenced receiver-to-schedule clock observations, including uncertainty over the actual capture interval and epoch/disclosure boundaries.
    • Acceptance of the supported uncertainty/delay envelope. Tag spec v1 still checks capture epoch t and t−1; supplying a larger error bound does not widen that window. If the supported envelope needs more candidates, it needs an explicit versioned matching policy, bounded work and revised false-match accounting.

    Schedule signatures, synchronization flags and kernel clock estimates alone do not supply that measurement.

    All 17 checks passed on the exact candidate and merged main, including the separate guest-source checks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    FeatureA specific missing product behavior.P2Follow-on improvement or optional expansion after core requirements.Traffic policy and attributionConsistent traffic policy, aggregate budgets and evidence-backed packet attribution.Validation gapBehavior may exist in part; the required operating evidence or test gate remains absent.

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions