<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="info"
     docName="draft-ackerman-temporal-integrity-metadata-00"
     ipr="trust200902"
     submissionType="independent"
     xml:lang="en"
     tocInclude="true"
     tocDepth="4"
     symRefs="true"
     sortRefs="true"
     version="3">

  <front>
    <title abbrev="Temporal Integrity Metadata (TIM)">Temporal Integrity Metadata (TIM) for Infrastructure Telemetry</title>

    <seriesInfo name="Internet-Draft" value="draft-ackerman-temporal-integrity-metadata-00"/>

    <author fullname='William "Trey" Ackerman' initials="W." surname="Ackerman">
      <organization>Vertiv Holdings Co.</organization>
      <address>
        <postal>
          <street>3414 Governors Dr SW</street>
          <city>Huntsville</city>
          <region>AL</region>
          <code>35805</code>
          <country>United States of America</country>
        </postal>
        <email>william.ackerman@vertiv.com</email>
        <email>treyackerman@hotmail.com</email>
      </address>
    </author>

    <date year="2026" month="April" day="15"/>

    <area>Operations and Management</area>
    <workgroup>Individual Submission</workgroup>

    <keyword>timestamp</keyword>
    <keyword>temporal integrity</keyword>
    <keyword>clock synchronization</keyword>
    <keyword>observability</keyword>
    <keyword>telemetry</keyword>
    <keyword>NTP</keyword>
    <keyword>PTP</keyword>
    <keyword>uncertainty</keyword>
    <keyword>SIEM</keyword>
    <keyword>OpenTelemetry</keyword>

    <abstract>
      <t>Distributed computing systems generate timestamped events from components whose clocks operate under fundamentally different synchronization conditions. Existing logging and observability standards -- including RFC 3164, RFC 5424, SNMP, NETCONF, and OpenTelemetry -- define message formats and telemetry schemas but provide no standard mechanism for an event source to declare the provenance, confidence, or synchronization state of its timestamps. Every platform that must correlate events across components independently invents a proprietary temporal reconciliation layer. These systems fail silently, cannot be validated against a published standard, and are not interoperable.</t>
      <t>This document defines Temporal Integrity Metadata (TIM): a transport-agnostic structure that any event-emitting system may attach to its telemetry to declare how its timestamp was generated, the synchronization state of its clock, a bounded uncertainty interval, the temporal reference domain, and a monotonic sequence token for ordering events when wall-clock time is unavailable. TIM is backward-compatible with existing protocols, implementable on constrained embedded hardware, and applicable from internet-scale distributed services to air-gapped and orbital deployments.</t>
    </abstract>
  </front>

  <middle>

    <section anchor="intro" numbered="true" toc="default" title="Introduction"><section anchor="background" numbered="true" toc="default" title="Background and Motivation"><t>Distributed computing systems generate timestamped events from components that do not share a common time reference. This is not an edge case -- it is the default condition of every networked system at scale. A web request traverses a CDN edge node, a load balancer, an application cluster, a distributed cache, and a database, each with independently synchronized clocks, generating log entries that are later correlated to diagnose performance or reconstruct an incident. The assumption embedded in that correlation -- that the timestamps are comparable -- is almost never verified and almost never declared.</t><t>The same assumption fails in security operations (SIEM platforms correlating events across firewall, endpoint, identity, and network logs), in financial systems (distributed transaction processors ordering trades across geographically separated nodes), in telecommunications (call trace platforms reconciling CDRs across SIP proxies, media servers, and billing systems), and in industrial and infrastructure environments. In every case, the receiving system has no standard basis for knowing how trustworthy the timestamps in its event streams actually are.</t><t>This document observes that the problem has been solved repeatedly, in isolation, for specific domains. The broadcast and motion picture industry solved an analogous problem in 1969 with SMPTE 12M, establishing the principle that a timecode label is not the same as actual time, and that synchronization state must be explicitly declared. Google's TrueTime <xref target="SPANNER"/> solved it for globally distributed databases in 2012 by representing timestamps as bounded uncertainty intervals rather than point values. What has never existed is a single, transport-agnostic standard that any event-emitting system can use to declare the quality of its timestamps. This document defines that standard.</t></section><section anchor="scope" numbered="true" toc="default" title="Scope"><t>This specification defines the Temporal Integrity Metadata (TIM) standard. The following are within scope:</t><ul spacing="normal"><li>The TIM structure: a transport-agnostic metadata block for declaring timestamp provenance, synchronization state, uncertainty bounds, temporal reference domain, and sequence ordering</li><li>Sync State definitions: six states covering all operational scenarios from GPS-locked to sequence-only</li><li>Temporal Confidence Classes A through F: derived from declared sync state and uncertainty bounds</li><li>Temporal Reference Domains: covering terrestrial UTC, orbital, cislunar, and facility-autonomous environments</li><li>Implementation guidance for event sources and consuming platforms</li></ul><t><strong>Fundamental design principle:</strong> <em>This specification does not require the existence of a globally synchronized time source. It defines a framework for expressing temporal information under conditions where such a source may be unavailable, unreliable, or undesired.</em></t><t><strong>Non-Goals -- this specification explicitly does NOT:</strong></t><ul spacing="normal"><li>Synchronize clocks, discipline oscillators, or improve the accuracy of any time source</li><li>Replace or supersede existing timestamp fields in any protocol, log format, or telemetry schema</li><li>Guarantee the accuracy of declared values -- TIM declares the emitting system's temporal state at the time of emission; it does not certify objective accuracy</li><li>Define transport mechanisms for telemetry or modify existing message formats</li><li>Provide causal ordering guarantees -- TIM enables systems to reason about the bounds within which causal ordering can and cannot be established; it does not guarantee causal correctness</li></ul></section><section anchor="positioning" numbered="true" toc="default" title="Positioning vs. Adjacent Standards"><t>TIM occupies a specific and previously unoccupied layer in the distributed systems standards stack:</t><table anchor="stack-table" align="center"><name>TIM in the Distributed Systems Standards Stack</name><thead><tr><th>Layer</th><th>Standard(s)</th><th>What It Addresses</th></tr></thead><tbody><tr><td align="left">Time synchronization</td><td>NTP (<xref target="RFC5905"/>), PTP (IEEE 1588)</td><td>Making clocks accurate</td></tr><tr><td align="left">Telemetry schema</td><td>OpenTelemetry</td><td>Defining what telemetry data looks like</td></tr><tr><td align="left">Distributed correlation</td><td>W3C Trace Context</td><td>Propagating trace/span IDs</td></tr><tr><td align="left">Temporal trust</td><td>TIM (this document)</td><td>Declaring how trustworthy timestamps are</td></tr></tbody></table><t><strong>TIM does not replace any of them; it provides the missing fourth layer.</strong></t><t><strong>NTP (RFC 5905) and PTP (IEEE 1588): </strong>These protocols synchronize clocks. TIM declares the quality of whatever clock a system has, regardless of whether it has been synchronized. A system with perfect PTP synchronization should declare TIM Class A. A system with no time reference should declare TIM Class F. Both are valid and useful declarations.</t><t><strong>OpenTelemetry (OTel): </strong>OTel defines schemas for traces, metrics, and logs with timestamp fields but provides no mechanism for declaring how trustworthy those timestamps are. TIM operates orthogonally to observability schemas: it annotates time, not telemetry semantics. TIM is the missing provenance layer for OTel timestamps. TIM fields SHOULD be expressed as OTel resource attributes, extending OTel rather than replacing it.</t><t><strong>W3C Trace Context: </strong>Distributed tracing carries trace and span IDs but contains no timestamp information. Timestamps in distributed traces are assigned by each service independently. TIM provides what distributed tracing assumes but never defines: a standard for declaring the reliability of those timestamps.</t><t><strong>RFC 3164 / RFC 5424 Syslog: </strong>RFC 3164 deferred timestamp quality to the application layer. RFC 5424 added structured formatting but left the same gap. TIM fills this gap without modifying either RFC.</t></section><section anchor="whynow" numbered="true" toc="default" title="Why This Standard, Why Now"><t>This problem has existed since the first distributed computing system was assembled. Four developments make standardization critically important now:</t><t><strong>AI systems, automation, and decisions without human validation: </strong>AI inference pipelines, autonomous vehicles, robotic control systems, and AI agents making real-time decisions operate on event streams without a human in the loop. When an autonomous system misorders two events, it may make an incorrect inference with no opportunity for correction before the next decision cycle. As the tempo of automated decision-making accelerates and human oversight decreases, the accuracy of event ordering becomes a safety and reliability property. The absence of a timestamp quality standard means every AI system must either assume all timestamps are reliable (they are not) or invent its own assessment (no two systems agree).</t><t><strong>Zero-trust security and audit requirements: </strong>The zero-trust model requires forensically defensible audit trails. An audit trail constructed from timestamps of unknown quality is legally and forensically weak. Regulatory frameworks -- MiFID II, NERC CIP, HIPAA, the EU AI Act -- are converging on timestamp accuracy declaration requirements. TIM provides the standard vocabulary.</t><t><strong>Edge computing and IoT at scale: </strong>Edge deployments and IoT systems involve billions of devices with highly variable clock quality. Aggregating their events for anomaly detection and operational intelligence requires honest temporal integrity declarations at scale.</t><t><strong>Regulatory convergence: </strong>Multiple regulatory bodies are independently requiring timestamp accuracy declarations. The White House OSTP directive on cislunar time standardization <xref target="OSTP-LTC"/> is one example. A single open standard that serves all these contexts is preferable to parallel proprietary solutions.</t></section><section anchor="reqlang" numbered="true" toc="default" title="Requirements Language"><t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t></section></section>

    <section anchor="problem" numbered="true" toc="default" title="Problem Statement"><section anchor="internet-scale" numbered="true" toc="default" title="Internet-Scale Scope of the Problem"><t>The absence of a timestamp quality declaration standard is not a niche infrastructure problem. It is a structural deficiency present in every distributed computing system on the internet.</t><t>The global volume of timestamped events generated across internet-scale systems is measured in trillions per day. The fraction for which the receiving system can state, with any declared confidence, the accuracy of the timestamp, is effectively zero. This is not because the problem is unsolvable -- it is because no standard declaration vocabulary has existed. This document provides that standard.</t></section><section anchor="fragmentation" numbered="true" toc="default" title="The Temporal Fragmentation Problem"><t>Event-emitting systems operate under fundamentally different clock synchronization conditions:</t><table anchor="frag-table" align="center"><name>Clock Synchronization Classes in Distributed Systems</name><thead><tr><th>Class</th><th>Accuracy</th><th>Protocol</th><th>Representative Systems</th></tr></thead><tbody><tr><td align="left">1</td><td>+/-10 ns</td><td>PTP IEEE 1588</td><td>AI compute fabric, financial trading systems, 5G base stations</td></tr><tr><td align="left">2</td><td>+/-1-250 ms</td><td>NTP <xref target="RFC5905"/></td><td>Application servers, cloud VMs, PDU management cards, IoT gateways</td></tr><tr><td align="left">3</td><td>Relative only</td><td>SNMP sysUpTime</td><td>Legacy network devices, embedded controllers</td></tr><tr><td align="left">4</td><td>Unknown drift</td><td>Unsync'd RTC</td><td>Offline devices, isolated OT networks</td></tr><tr><td align="left">5</td><td>None</td><td>None</td><td>Air-gapped systems, constrained embedded devices</td></tr></tbody></table><t>All five classes are present simultaneously in any large-scale deployment. No existing standard requires any device to declare which class applies to its timestamps.</t></section><section anchor="missing-standard" numbered="true" toc="default" title="The Missing Declaration Standard"><t>RFC 3164 <xref target="RFC3164"/> acknowledges that not all devices can timestamp their messages but offers no mechanism for a device to declare this condition. RFC 5424 <xref target="RFC5424"/> adds structured timestamp formatting but provides no vocabulary for declaring uncertainty, sync state, or source. The consequence: a monitoring platform cannot distinguish, from message content alone, between a timestamp accurate to +/-10 nanoseconds and one accurate to +/-250 milliseconds.</t><t>In the absence of declared temporal integrity, applications independently implement proprietary mechanisms for event ordering, correlation, and suppression. These mechanisms are not interoperable, cannot be validated against a published standard, and produce unreliable causal inference across system boundaries. Temporal integrity is a data-plane concern; causality is an application concern. SMPTE ST 12-1 established this boundary for broadcast infrastructure in 1969. TIM establishes it for networked computing.</t></section><section anchor="use-cases" numbered="true" toc="default" title="Impact Across Application Domains"><section anchor="siem-usecase" numbered="true" toc="default" title="Security Incident Timeline Reconstruction"><t>A SIEM investigating a data exfiltration incident correlates events from a firewall (NTP, +/-100ms), an authentication service (cloud-hosted, +/-50ms), an endpoint agent (Windows time service, +/-500ms), and a database audit log (GPS-disciplined NTP, +/-5ms). If the firewall alert and the authentication event are 200ms apart, the analyst cannot determine which came first -- the combined +/-600ms uncertainty makes the ordering ambiguous.</t><t><strong>With TIM: </strong>Each event carries a declared Temporal Confidence Class. The analyst knows which events can be trusted for millisecond-level ordering and which cannot. The SIEM presents the incident timeline with per-event confidence indicators rather than presenting all events as equally reliable.</t></section><section anchor="txn-usecase" numbered="true" toc="default" title="Distributed Transaction Ordering"><t>A financial platform processes trades across distributed nodes. Node A (GPS-disciplined, +/-10ns) records a price update at T=14:23:45.100. Node B (NTP, +/-200ms) records a trade execution at T=14:23:45.050. The trade appears to precede the price update by 50ms -- possibly evidence of front-running. But the +/-200ms NTP uncertainty means the trade may have occurred up to 200ms later. With TIM, the compliance system automatically flags that Node B is Class D and the 50ms lead is within the uncertainty window -- inconclusive rather than suspicious.</t></section><section anchor="telecom-usecase" numbered="true" toc="default" title="Telecom Call Trace Correlation"><t>A VoIP operator correlates events from a SIP proxy (PTP, +/-1us), a media transcoder (NTP, +/-50ms), a billing CDR system (NTP, +/-200ms), and a QoS monitor (SNMP sysUpTime, no wall-clock reference). Without declared uncertainty, the operator cannot determine whether a codec error caused packet loss or was caused by it. With TIM, the SIP proxy events anchor the timeline at Class A, the transcoder events declare Class C, and the QoS monitor declares Class F -- sequence ordering only.</t></section><section anchor="efficiency-usecase" numbered="true" toc="default" title="Representative Emerging Efficiency Metric (e.g., AI Inference tok/W)"><t>A representative example of an emerging efficiency metric requiring cross-domain temporal correlation is token throughput per watt (tok/W) for AI inference infrastructure. Computing this metric requires correlating primary compute throughput (PTP-synchronized, +/-10ns) with power consumption (NTP-synchronized, +/-250ms) and cooling load (Modbus, no time reference). TIM enables such metrics to be computed as bounded intervals derived from the declared uncertainty of constituent measurements, rather than as point values with false precision. This pattern generalizes to any multi-domain efficiency metric requiring temporal coherence across heterogeneous components.</t></section></section><section anchor="precision-discard" numbered="true" toc="default" title="The Precision Discard Problem"><t>A pervasive pattern: each layer of the software stack systematically discards precision that the hardware layer below it provides. A 5G base station synchronizes to GNSS to +/-1.5 microseconds. The mobile device connected to that base station uses NTP, achieving +/-100 milliseconds. TIM makes this gap visible, quantifiable, and actionable.</t></section><section anchor="domain-problem" numbered="true" toc="default" title="The Temporal Reference Domain Problem"><t>As computing extends to aeronautical, orbital, and cislunar environments, relativistic effects mean that clocks at different gravitational potentials do not tick at the same rate. For an observer on the lunar surface, an Earth-based clock loses approximately 56.7 microseconds per Earth day <xref target="OSTP-LTC"/>. No existing infrastructure logging RFC addresses this. TIM defines a Temporal Reference Domain field enabling any device to declare its relativistic and administrative time context.</t></section></section>

    <section anchor="terminology" numbered="true" toc="default" title="Terminology"><t>The following terms are used throughout this document:</t><dl><dt>Temporal Provenance</dt><dd><t>The complete characterization of how a timestamp was generated, including its source, synchronization state, uncertainty bounds, and temporal reference domain. Temporal provenance is the concept; TIM is the standard for declaring it.</t></dd><dt>Event Time (T_event)</dt><dd><t>The time at which the condition being reported actually occurred at the source. This is the time of interest for event correlation.</t></dd><dt>Emission Time (T_emit)</dt><dd><t>The time at which the device generated and transmitted the message. MAY differ from Event Time if the device queues or batches events.</t></dd><dt>Ingestion Time (T_ingest)</dt><dd><t>The time at which the collecting platform received the message. Populated by the collector, not the originating device.</t></dd><dt>Temporal Integrity Metadata (TIM)</dt><dd><t>The structured metadata block defined in this document, attached to or associated with a telemetry emission to declare its temporal provenance.</t></dd><dt>Sync State</dt><dd><t>A declared operational state indicating the relationship between a device's clock and an external time reference at the moment of emission. See Section 6.</t></dd><dt>Temporal Confidence Class</dt><dd><t>A single-letter classification (A through F) summarizing overall timestamp quality implied by declared sync state and uncertainty bounds. See Section 5.</t></dd><dt>Uncertainty Interval</dt><dd><t>A closed interval [earliest, latest] guaranteed to contain the absolute time of the event. Inspired by and modeled after Google TrueTime <xref target="SPANNER"/>.</t></dd><dt>Temporal Reference Domain</dt><dd><t>A declared context specifying the time scale and relativistic reference frame in which timestamps are expressed. See Section 7.</t></dd><dt>Causal Anchor</dt><dd><t>A high-confidence timestamp from a correlated event in a different domain, used to bound the uncertainty interval of a lower-confidence timestamp. A platform-level concept; not carried in TIM itself.</t></dd></dl></section>

    <section anchor="specification" numbered="true" toc="default" title="Temporal Integrity Metadata (TIM) Specification"><section anchor="overview" numbered="true" toc="default" title="Overview"><t>The TIM structure is a metadata block that SHOULD accompany every telemetry emission. It is transport-agnostic and may be carried as:</t><ul spacing="normal"><li><tt>application/json</tt> -- in REST API responses and webhook payloads</li><li>Structured data in RFC 5424 syslog messages using a registered SD-ID</li><li>OID-value pairs in SNMP responses and notifications</li><li>A YANG data node in NETCONF notifications and RESTCONF responses</li><li>Any other structured representation appropriate to the transport</li></ul><t>TIM does not replace existing message formats. It augments them with temporal integrity metadata that existing formats cannot express.</t><section anchor="event-emission-semantics" numbered="true" toc="default" title="Semantics of event_time and emission_time"><t><strong>event_time:</strong> The time at which the reported condition occurred. This value MAY be directly observed or inferred. When inferred, the uncertainty_ns field MUST reflect the inference uncertainty in addition to clock quality uncertainty. Devices SHOULD declare event_time null rather than declare a value they cannot support with any uncertainty bound.</t><t><strong>emission_time:</strong> The time at which the device generated and transmitted this message. This value MAY be later than event_time due to queuing, batching, or scheduling latency. The gap between event_time and emission_time is observable evidence of reporting latency.</t><t><strong>ingestion_time:</strong> The time at which the collecting platform received the message. Populated by the collector, never by the originating device.</t><t><strong>Critical: </strong>None of these fields are guaranteed to represent objective ground truth. Each represents the best available estimate at the respective stage, qualified by uncertainty_ns. Consuming systems MUST NOT treat any field as exact without verifying the confidence class.</t></section><section anchor="causality" numbered="true" toc="default" title="Causality and TIM"><t>TIM does not guarantee causal correctness. It enables systems to reason about the bounds within which causal ordering can and cannot be established. Two events whose uncertainty intervals do not overlap can be confidently ordered. Two events whose uncertainty intervals overlap cannot be confidently ordered -- their causal relationship is ambiguous within the declared bounds.</t><t>This is the same principle established by Google's TrueTime <xref target="SPANNER"/>: when uncertainty intervals overlap, ordering ambiguity must be resolved explicitly. TIM makes this uncertainty visible for any event type.</t></section><section anchor="uncertainty-computation" numbered="true" toc="default" title="Computing uncertainty_ns in Practice"><t>The uncertainty_ns field MUST represent a conservative upper bound on the absolute difference between event_time and the true occurrence time. Implementations SHOULD use the following reference models:</t><table anchor="uncertainty-table" align="center"><name>uncertainty_ns Computation Guide by Sync Source</name><thead><tr><th>Sync Source</th><th>Recommended Computation</th><th>Notes</th></tr></thead><tbody><tr><td align="left"><tt>PTP_IEEE1588</tt></td><td>grandmaster_clockAccuracy + path_delay_asymmetry</td><td>Use IEEE 1588-2019 clockAccuracy field. Add 10% margin for uncompensated asymmetry.</td></tr><tr><td align="left"><tt>GPS_GNSS</tt></td><td>gnss_receiver_accuracy_spec</td><td>Use manufacturer-specified accuracy. Typical: +/-10-30 ns.</td></tr><tr><td align="left"><tt>NTP_GPS_DISCIPLINED</tt></td><td>2 x ntp_root_delay + ntp_root_dispersion</td><td>chrony and ntpd expose root_delay and root_dispersion. Conservative bound. Typical: +/-1-5 ms.</td></tr><tr><td align="left"><tt>NTP_INTERNET</tt></td><td>2 x ntp_root_delay + ntp_root_dispersion</td><td>Same formula. If statistics unavailable, RECOMMENDED default: 250,000,000 ns.</td></tr><tr><td align="left"><tt>IRIG_B</tt></td><td>manufacturer_spec + cable_delay_estimate</td><td>Typically +/-1 us. Add approx 5 ns/m cable delay for runs over 100 m.</td></tr><tr><td align="left"><tt>Holdover (OCXO)</tt></td><td>drift_rate_ppb x holdover_duration_s x 1e9</td><td>Example: 50 ppb x 3600 s = 180,000 ns. Update at 60-second intervals.</td></tr><tr><td align="left"><tt>Holdover (Rubidium)</tt></td><td>drift_rate_ppb x holdover_duration_s x 1e9</td><td>Example: 0.1 ppb x 86400 s = 8,640 ns per day.</td></tr><tr><td align="left"><tt>FREEWHEEL / UNKNOWN</tt></td><td>null -- MUST NOT be fabricated</td><td>When no defensible bound exists, uncertainty_ns MUST be null. Implementations MAY provide an operator-defined fallback bound but MUST set <tt>uncertainty_source: &quot;operator_fallback&quot;</tt> to distinguish it from measured uncertainty. Consuming platforms receiving this flag MUST NOT use it for Class promotion above F without explicit operator authorization or policy override.</td></tr></tbody></table><t><strong>Inference uncertainty: </strong>When event_time is inferred from a polling interval, the inference uncertainty MUST be added to clock uncertainty. Example: 30-second polling + NTP +/-250 ms = total uncertainty_ns of approximately 30,250,000,000 ns.</t></section></section><section anchor="required-fields" numbered="true" toc="default" title="Required Fields"><t>The following fields are REQUIRED in every TIM emission:</t><table anchor="required-fields-table" align="center"><name>TIM Required Fields</name><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td align="left"><tt>tim_version</tt></td><td>String</td><td>TIM version implemented. Current value: &quot;1.0&quot;. MUST be present to identify the schema.</td></tr><tr><td align="left"><tt>sync_state</tt></td><td>Enum</td><td>Synchronization state at emission time. MUST be one of: LOCKED, HOLDOVER, RECOVERING, FREEWHEEL, AUTONOMOUS, UNKNOWN. See Section 6.</td></tr><tr><td align="left"><tt>sequence_token</tt></td><td>Uint64</td><td>Monotonically increasing counter scoped to this device. MUST increment for every emission. Provides event ordering independent of wall-clock time.</td></tr></tbody></table></section><section anchor="conditional-fields" numbered="true" toc="default" title="Conditionally Required Fields"><t>The following fields are REQUIRED under the stated conditions:</t><table anchor="conditional-fields-table" align="center"><name>TIM Conditionally Required Fields</name><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td align="left"><tt>event_time</tt></td><td><xref target="RFC3339"/></td><td>REQUIRED unless sync_state is UNKNOWN or FREEWHEEL with no wall-clock reference. MUST include timezone designator (Z for UTC).</td></tr><tr><td align="left"><tt>uncertainty_earliest</tt></td><td><xref target="RFC3339"/></td><td>OPTIONAL. Earliest bound of the uncertainty interval for event_time. Derived from event_time and uncertainty_ns: uncertainty_earliest = event_time &amp;minus; uncertainty_ns. If present and inconsistent with uncertainty_ns, uncertainty_ns governs.</td></tr><tr><td align="left"><tt>uncertainty_latest</tt></td><td><xref target="RFC3339"/></td><td>OPTIONAL. Latest bound of the uncertainty interval for event_time. Derived from event_time and uncertainty_ns: uncertainty_latest = event_time + uncertainty_ns. If present and inconsistent with uncertainty_ns, uncertainty_ns governs.</td></tr><tr><td align="left"><tt>uncertainty_ns</tt></td><td>Uint64</td><td>REQUIRED when event_time is present. The canonical normative uncertainty half-width in nanoseconds. uncertainty_earliest and uncertainty_latest are OPTIONAL derived representations; uncertainty_ns is normative. Implementations MAY omit interval fields entirely when consumers can derive them from uncertainty_ns. MUST be null when no defensible bound can be established.</td></tr></tbody></table></section><section anchor="optional-fields" numbered="true" toc="default" title="Optional Fields"><t>The following fields are OPTIONAL but RECOMMENDED where available:</t><table anchor="optional-fields-table" align="center"><name>TIM Optional Fields</name><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td align="left"><tt>emission_time</tt></td><td><xref target="RFC3339"/></td><td>Time at which this message was generated and transmitted, if different from event_time.</td></tr><tr><td align="left"><tt>sync_source</tt></td><td>Enum</td><td>Type of synchronization source. Values: PTP_IEEE1588, CELLULAR_5G_PRTC, GPS_GNSS, NTP_GPS_DISCIPLINED, NTP_INTERNET, IRIG_B, HAVEQUICK, INS_HOLDOVER, WIFI_TSF, WIFI_FTM, MOBILE_5G, MOBILE_LTE, OSCILLATOR_OCXO, OSCILLATOR_RUBIDIUM, OSCILLATOR_CESIUM, LTC_LUNAR, SPACECRAFT_ATOMIC, NONE.</td></tr><tr><td align="left"><tt>grandmaster_id</tt></td><td>String</td><td>For PTP sources: IEEE EUI-64 identity of the PTP grandmaster clock.</td></tr><tr><td align="left"><tt>holdover_duration_s</tt></td><td>Uint32</td><td>For HOLDOVER state: seconds since external reference was lost.</td></tr><tr><td align="left"><tt>time_domain</tt></td><td>Enum</td><td>Temporal reference domain. Default if absent: UTC_TERRESTRIAL. See Section 7.</td></tr><tr><td align="left"><tt>relativistic_correction_applied</tt></td><td>Boolean</td><td>Whether relativistic correction has been applied to event_time. Relevant for orbital and cislunar deployments.</td></tr><tr><td align="left"><tt>relativistic_correction_ns_per_day</tt></td><td>Int64</td><td>Declared relativistic correction rate in nanoseconds per day.</td></tr><tr><td align="left"><tt>domain_id</tt></td><td>String</td><td>Operator-defined identifier for isolated time domains (e.g., classification domains in DOD/DOE environments).</td></tr></tbody></table></section><section anchor="collector-fields" numbered="true" toc="default" title="Collector-Populated Fields"><t>The following fields MUST NOT be populated by the originating device. They MUST be populated by the collecting platform upon receipt:</t><table anchor="collector-fields-table" align="center"><name>TIM Collector-Populated Fields</name><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td align="left"><tt>_collector.ingestion_time</tt></td><td><xref target="RFC3339"/></td><td>Time the collecting platform received this message. Always from the collector's TRM.</td></tr><tr><td align="left"><tt>_collector.confidence_class</tt></td><td>String</td><td>Temporal Confidence Class (A-F) assigned by the collector based on sync_state and uncertainty_ns.</td></tr><tr><td align="left"><tt>_collector.device_tim_native</tt></td><td>Boolean</td><td>True if the device emitted native TIM; false if TIM was inferred by the collector.</td></tr><tr><td align="left"><tt>_collector.anomaly_flags</tt></td><td>Array</td><td>List of anomaly codes detected: SEQUENCE_VIOLATION, STALE_HOLDOVER, DOMAIN_MISMATCH, ANOMALOUS_LOCKED.</td></tr></tbody></table></section></section>

    <section anchor="confidence-classes" numbered="true" toc="default" title="Temporal Confidence Classes"><t>Temporal Confidence Classes are a standardized interpretation layer enabling consistent cross-platform reasoning about timestamp quality -- comparable to DSCP QoS classes in IP networking or severity levels in syslog. The class boundaries are anchored to the accuracy regimes of common synchronization technologies rather than arbitrary numeric divisions: Classes A and B correspond to PTP/GNSS-quality synchronization; Class C to GPS-disciplined NTP; Class D to internet NTP; Class E to oscillator holdover with growing drift; and Class F to devices with no usable time reference.</t><t>Collecting platforms MUST assign a Temporal Confidence Class to each received telemetry event based on the declared sync_state and uncertainty_ns fields.</t><table anchor="confidence-table" align="center"><name>Temporal Confidence Classes</name><thead><tr><th>Class</th><th>Sync States</th><th>Uncertainty</th><th>Typical Source</th></tr></thead><tbody><tr><td align="left">A</td><td>LOCKED</td><td>&lt; 1 us</td><td>PTP IEEE 1588 / GPS atomic</td></tr><tr><td align="left">B</td><td>LOCKED / HOLDOVER</td><td>1 us - 100 us</td><td>GPS-disciplined NTP / IRIG-B / rubidium holdover &lt; 24h</td></tr><tr><td align="left">C</td><td>LOCKED</td><td>100 us - 10 ms</td><td>GPS-disciplined NTP server</td></tr><tr><td align="left">D</td><td>LOCKED / FREEWHEEL</td><td>10 ms - 250 ms</td><td>Internet NTP</td></tr><tr><td align="left">E</td><td>HOLDOVER / RECOVERING</td><td>&gt; 250 ms or growing</td><td>Oscillator holdover, re-convergence</td></tr><tr><td align="left">F</td><td>FREEWHEEL / UNKNOWN</td><td>Undefined</td><td>No reference / sequence only</td></tr></tbody></table><t><strong>Class F constraint:</strong> Events with Confidence Class F MUST NOT be used for cross-domain temporal ordering without explicit operator authorization or policy override. Such authorization SHOULD be recorded as an audit event. Sequence tokens remain valid for Class F events and SHOULD be used for relative ordering within a single device stream.</t><t><strong>Holdover progression:</strong> A device entering HOLDOVER begins at the class appropriate to its last locked uncertainty. The class degrades as accumulated drift increases uncertainty_ns. Devices SHOULD update uncertainty_ns at regular intervals (RECOMMENDED: every 60 seconds) during holdover.</t></section>

    <section anchor="sync-states" numbered="true" toc="default" title="Sync State Definitions and Transitions"><t>Six sync states are defined. Devices MUST declare exactly one sync state in every TIM emission.</t><table anchor="sync-states-table" align="center"><name>Sync State Definitions</name><thead><tr><th>State</th><th>Description</th></tr></thead><tbody><tr><td align="left"><tt>LOCKED</tt></td><td>Device clock is actively synchronized to an external reference within declared uncertainty bounds.</td></tr><tr><td align="left"><tt>HOLDOVER</tt></td><td>External reference was lost. Device is maintaining time using an internal oscillator. holdover_duration_s SHOULD be populated and uncertainty_ns MUST reflect accumulated drift.</td></tr><tr><td align="left"><tt>RECOVERING</tt></td><td>External reference has been restored after HOLDOVER or FREEWHEEL. Clock is converging. uncertainty_ns remains elevated until convergence completes.</td></tr><tr><td align="left"><tt>FREEWHEEL</tt></td><td>Device is operating on its internal clock with no recent synchronization. No external reference is available.</td></tr><tr><td align="left"><tt>AUTONOMOUS</tt></td><td>Device is operating on a local atomic reference with no external synchronization path. Applicable to orbital, cislunar, and deep space deployments. The time_domain field MUST be populated.</td></tr><tr><td align="left"><tt>UNKNOWN</tt></td><td>Device cannot determine its synchronization state. Implies sequence-only ordering.</td></tr></tbody></table><t>Devices SHOULD emit a TIM with the updated sync_state whenever a state transition occurs. Devices that cannot emit unsolicited transition events MUST reflect the current sync_state in the next scheduled emission.</t></section>

    <section anchor="domains" numbered="true" toc="default" title="Temporal Reference Domains"><section anchor="domain-motivation" numbered="true" toc="default" title="Motivation"><t>All existing infrastructure logging RFCs implicitly assume UTC on Earth's geoid. This assumption fails for infrastructure operating at significantly different gravitational potential or velocity. At ISS altitude (~400 km), the net relativistic correction is approximately +38 microseconds per Earth day. On the lunar surface, approximately +56 microseconds per Earth day.</t><t><strong>Implementation note -- optionality:</strong> The time_domain field is OPTIONAL. Terrestrial deployments NEED NOT populate it; UTC_TERRESTRIAL applies implicitly. Implementations MAY ignore non-terrestrial domain values without loss of interoperability with other terrestrial TIM implementations. These domains are defined for future-proofing: (1) the field is optional and adds zero overhead to terrestrial deployments; (2) the White House OSTP issued a directive in April 2024 establishing Coordinated Lunar Time <xref target="OSTP-LTC"/>, providing direct policy backing; (3) commercial orbital computing is actively being developed.</t></section><section anchor="domain-definitions" numbered="true" toc="default" title="Defined Domains"><table anchor="domain-table" align="center"><name>Temporal Reference Domain Values</name><thead><tr><th>Domain Value</th><th>Description</th></tr></thead><tbody><tr><td align="left"><tt>UTC_TERRESTRIAL</tt></td><td>Standard UTC on Earth's surface. Default when time_domain is absent.</td></tr><tr><td align="left"><tt>UTC_LEO_CORRECTED</tt></td><td>UTC with applied relativistic correction for low Earth orbit (~+38 us/day at ISS altitude). relativistic_correction_ns_per_day MUST be populated.</td></tr><tr><td align="left"><tt>LTC_LUNAR</tt></td><td>Coordinated Lunar Time as defined by NASA/OSTP. Approx +56 us/day vs UTC_TERRESTRIAL.</td></tr><tr><td align="left"><tt>LTC_CISLUNAR</tt></td><td>Time standard for cislunar orbital operations. Correction varies with orbital parameters.</td></tr><tr><td align="left"><tt>SPACECRAFT_TAI</tt></td><td>International Atomic Time maintained by onboard atomic clock, without leap second corrections.</td></tr><tr><td align="left"><tt>FACILITY_AUTONOMOUS</tt></td><td>Facility-local time with no declared relationship to any international time scale. Events MUST NOT be cross-correlated with other domains without operator-defined conversion parameters.</td></tr><tr><td align="left"><tt>WIFI_FTM_RELATIVE</tt></td><td>Local relative time domain based on Wi-Fi FTM ranging. Timestamps represent elapsed nanoseconds from an anchor point and are NOT directly comparable to UTC-domain timestamps without calibration.</td></tr></tbody></table></section><section anchor="cross-domain" numbered="true" toc="default" title="Cross-Domain Correlation Requirements"><t>When correlating events from different Temporal Reference Domains, a consuming platform MUST:</t><ol spacing="normal" type="1"><li>Identify the declared domain of each event stream</li><li>Apply the appropriate conversion function and propagation delay correction</li><li>Compute resulting uncertainty as the sum of individual bounds plus conversion uncertainty</li><li>NEVER silently treat timestamps from different domains as directly comparable without conversion</li></ol></section></section>

    <section anchor="examples" numbered="true" toc="default" title="TIM Schema and Examples"><section anchor="ex-class-a" numbered="true" toc="default" title="Class A Example -- PTP-Synchronized Device"><sourcecode type="json">{
  &quot;tim_version&quot;:   &quot;1.0&quot;,
  &quot;event_time&quot;:    &quot;2025-09-18T14:23:45.123456789Z&quot;,
  &quot;uncertainty_ns&quot;: 10,
  &quot;sync_state&quot;:    &quot;LOCKED&quot;,
  &quot;sync_source&quot;:   &quot;PTP_IEEE1588&quot;,
  &quot;grandmaster_id&quot;:&quot;00:1a:2b:3c:4d:5e:6f:70&quot;,
  &quot;sequence_token&quot;: 8472910,
  &quot;time_domain&quot;:   &quot;UTC_TERRESTRIAL&quot;,
  &quot;_collector&quot;: {
    &quot;ingestion_time&quot;:   &quot;2025-09-18T14:23:45.610Z&quot;,
    &quot;confidence_class&quot;: &quot;A&quot;,
    &quot;device_tim_native&quot;: true
  }
}</sourcecode></section><section anchor="ex-class-d" numbered="true" toc="default" title="Class D Example -- Internet NTP Device"><sourcecode type="json">{
  &quot;tim_version&quot;:   &quot;1.0&quot;,
  &quot;event_time&quot;:    &quot;2025-09-18T14:23:45.123Z&quot;,
  &quot;uncertainty_ns&quot;: 250000000,
  &quot;sync_state&quot;:    &quot;LOCKED&quot;,
  &quot;sync_source&quot;:   &quot;NTP_INTERNET&quot;,
  &quot;sequence_token&quot;: 33201,
  &quot;time_domain&quot;:   &quot;UTC_TERRESTRIAL&quot;,
  &quot;_collector&quot;: {
    &quot;ingestion_time&quot;:   &quot;2025-09-18T14:23:45.890Z&quot;,
    &quot;confidence_class&quot;: &quot;D&quot;
  }
}</sourcecode></section><section anchor="ex-class-f-minimal" numbered="true" toc="default" title="Class F Example -- Minimal TIM (No Clock, Sequence Only)"><t>The absolute minimum valid TIM. No time reference. Only the sequence_token is populated, enabling event ordering within this device stream. Conformant baseline for the most constrained embedded devices.</t><sourcecode type="json">{
  &quot;tim_version&quot;:    &quot;1.0&quot;,
  &quot;event_time&quot;:     null,
  &quot;uncertainty_ns&quot;: null,
  &quot;sync_state&quot;:     &quot;FREEWHEEL&quot;,
  &quot;sync_source&quot;:    &quot;NONE&quot;,
  &quot;sequence_token&quot;: 12847,
  &quot;_collector&quot;: {
    &quot;ingestion_time&quot;:   &quot;2025-09-18T14:23:45.610Z&quot;,
    &quot;confidence_class&quot;: &quot;F&quot;
  }
}</sourcecode></section><section anchor="ex-class-e" numbered="true" toc="default" title="Class E Example -- Holdover in Progress"><sourcecode type="json">{
  &quot;tim_version&quot;:          &quot;1.0&quot;,
  &quot;event_time&quot;:           &quot;2025-09-18T14:23:45.123456Z&quot;,
  &quot;uncertainty_earliest&quot;: &quot;2025-09-18T14:23:44.723Z&quot;,
  &quot;uncertainty_latest&quot;:   &quot;2025-09-18T14:23:45.524Z&quot;,
  &quot;uncertainty_ns&quot;:        400200000,
  &quot;sync_state&quot;:           &quot;HOLDOVER&quot;,
  &quot;sync_source&quot;:          &quot;OSCILLATOR_OCXO&quot;,
  &quot;holdover_duration_s&quot;:   3612,
  &quot;sequence_token&quot;:        98341,
  &quot;time_domain&quot;:          &quot;UTC_TERRESTRIAL&quot;,
  &quot;_collector&quot;: {
    &quot;ingestion_time&quot;:   &quot;2025-09-18T14:23:45.890Z&quot;,
    &quot;confidence_class&quot;: &quot;E&quot;
  }
}</sourcecode></section><section anchor="ex-class-f-rtc" numbered="true" toc="default" title="Class F Extended -- Unsynchronized RTC"><t>Device has a battery-backed RTC but it has never been synchronized. event_time is present and useful for human inspection but MUST NOT be used for cross-domain ordering.</t><sourcecode type="json">{
  &quot;tim_version&quot;:   &quot;1.0&quot;,
  &quot;event_time&quot;:    &quot;2025-09-18T14:23:45.000Z&quot;,
  &quot;uncertainty_ns&quot;: null,
  &quot;sync_state&quot;:    &quot;FREEWHEEL&quot;,
  &quot;sync_source&quot;:   &quot;NONE&quot;,
  &quot;sequence_token&quot;: 5501,
  &quot;_advisory&quot;: {
    &quot;note&quot;: &quot;RTC present; last sync unknown. No bound established.&quot;
  },
  &quot;_collector&quot;: {
    &quot;ingestion_time&quot;:   &quot;2025-09-18T14:23:46.001Z&quot;,
    &quot;confidence_class&quot;: &quot;F&quot;
  }
}</sourcecode></section><section anchor="ex-5g-iot" numbered="true" toc="default" title="Mobile / IoT Example -- 5G-Connected Device (OS NTP vs. Network Precision)"><t>Illustrates the precision discard problem. Device is connected to a 5G network (GNSS-disciplined to +/-1.5 us) but the OS uses NTP. The _advisory block flags that better precision is available but not exposed.</t><sourcecode type="json">{
  &quot;tim_version&quot;:   &quot;1.0&quot;,
  &quot;event_time&quot;:    &quot;2025-09-18T14:23:45.123Z&quot;,
  &quot;uncertainty_ns&quot;: 250000000,
  &quot;sync_state&quot;:    &quot;LOCKED&quot;,
  &quot;sync_source&quot;:   &quot;NTP_INTERNET&quot;,
  &quot;sequence_token&quot;: 884721,
  &quot;_advisory&quot;: {
    &quot;cellular_network_timing_available&quot;: true,
    &quot;cellular_achievable_uncertainty_ns&quot;: 1500,
    &quot;note&quot;: &quot;OS does not expose cellular timing; NTP used instead&quot;
  },
  &quot;_collector&quot;: {
    &quot;ingestion_time&quot;:   &quot;2025-09-18T14:23:45.890Z&quot;,
    &quot;confidence_class&quot;: &quot;D&quot;
  }
}</sourcecode></section><section anchor="ex-ftm" numbered="true" toc="default" title="Wi-Fi FTM Example -- Relative Time Domain"><t>Device using Wi-Fi FTM ranging. event_time is null because this is a relative domain. UTC correlation requires a separate calibration record.</t><sourcecode type="json">{
  &quot;tim_version&quot;:   &quot;1.0&quot;,
  &quot;event_time&quot;:    null,
  &quot;uncertainty_ns&quot;: 2,
  &quot;sync_state&quot;:    &quot;LOCKED&quot;,
  &quot;sync_source&quot;:   &quot;WIFI_FTM&quot;,
  &quot;sequence_token&quot;: 44102,
  &quot;time_domain&quot;:   &quot;WIFI_FTM_RELATIVE&quot;,
  &quot;_ftm&quot;: {
    &quot;anchor_bssid&quot;:          &quot;aa:bb:cc:dd:ee:ff&quot;,
    &quot;anchor_calibration_id&quot;: &quot;cal-2025-09-18T00:00:00Z&quot;,
    &quot;rtts_ns&quot;:               142847193
  },
  &quot;_collector&quot;: {
    &quot;ingestion_time&quot;:   &quot;2025-09-18T14:23:45.890Z&quot;,
    &quot;confidence_class&quot;: &quot;A&quot;
  }
}</sourcecode></section><section anchor="ex-orbital" numbered="true" toc="default" title="Orbital Example -- LEO with Relativistic Correction"><t>Compute node in low Earth orbit. GPS receiver provides Class A timestamps. The relativistic correction (+38 us/day at ISS altitude) has been applied to event_time before emission.</t><sourcecode type="json">{
  &quot;tim_version&quot;:   &quot;1.0&quot;,
  &quot;event_time&quot;:    &quot;2025-09-18T14:23:45.000010Z&quot;,
  &quot;uncertainty_ns&quot;: 10,
  &quot;sync_state&quot;:    &quot;LOCKED&quot;,
  &quot;sync_source&quot;:   &quot;GPS_GNSS&quot;,
  &quot;sequence_token&quot;: 220194,
  &quot;time_domain&quot;:   &quot;UTC_LEO_CORRECTED&quot;,
  &quot;relativistic_correction_applied&quot;:    true,
  &quot;relativistic_correction_ns_per_day&quot;: 38000,
  &quot;_collector&quot;: {
    &quot;ingestion_time&quot;:   &quot;2025-09-18T14:23:45.900Z&quot;,
    &quot;confidence_class&quot;: &quot;A&quot;
  }
}</sourcecode></section></section>

    <section anchor="impl-sources" numbered="true" toc="default" title="Implementation Guidance -- Event Sources"><section anchor="minimum-viable" numbered="true" toc="default" title="Minimum Viable Implementation"><t>A device with no time reference can still implement a conformant minimal TIM with three fields: <tt>tim_version</tt>, <tt>sync_state: &quot;FREEWHEEL&quot;</tt>, and <tt>sequence_token</tt>. This provides sequence ordering and ensures consuming platforms do not silently treat absent timestamps as reliable.</t></section><section anchor="sync-hierarchy" numbered="true" toc="default" title="Sync Source Hierarchy for New Designs"><t>Device designers implementing TIM SHOULD implement sync source support in the following priority order, selecting the highest available tier:</t><table anchor="tier-table" align="center"><name>Sync Source Priority Tiers</name><thead><tr><th>Tier</th><th>Source</th><th>Accuracy</th><th>Context</th></tr></thead><tbody><tr><td align="left">1A</td><td>PTP IEEE 1588</td><td>+/-10 ns</td><td>High-performance data centers and compute environments with PTP-capable fabric</td></tr><tr><td align="left">1B</td><td>IRIG-B</td><td>+/-1 us</td><td>Air-gapped military, DOE, industrial environments</td></tr><tr><td align="left">1C</td><td>GPS/GNSS direct</td><td>+/-10 ns</td><td>Installations with GPS antenna access</td></tr><tr><td align="left">1D</td><td>CELLULAR_5G_PRTC</td><td>+/-100 ns - 1.5 us</td><td>5G edge sites using base station T-GM</td></tr><tr><td align="left">2</td><td>GPS-disciplined NTP</td><td>+/-1-5 ms</td><td>Facilities with OCP-TAP or equivalent</td></tr><tr><td align="left">3</td><td>Internet NTP</td><td>+/-100-250 ms</td><td>Commercial deployments without local time infrastructure</td></tr><tr><td align="left">4A</td><td>MOBILE_5G / MOBILE_LTE</td><td>+/-1.5-10 us</td><td>When OS or app layer explicitly exposes cellular timing</td></tr><tr><td align="left">4B</td><td>WIFI_FTM</td><td>+/-1 ns relative</td><td>Wi-Fi FTM ranging; relative domain</td></tr><tr><td align="left">5</td><td>Sequence only</td><td>N/A</td><td>Constrained devices with no time reference</td></tr></tbody></table></section><section anchor="sequence-requirements" numbered="true" toc="default" title="Sequence Token Requirements"><t>The sequence_token is the most important field for devices without reliable wall-clock time:</t><ul spacing="normal"><li><strong>MUST: </strong>Increment the token for every emission without exception.</li><li><strong>SHOULD: </strong>Store the sequence token in non-volatile memory so it survives power cycles. Constrained devices <xref target="RFC7228"/> that cannot provide non-volatile storage MAY initialize to a random 64-bit value on each boot as a degraded-mode alternative, and MUST document this limitation.</li><li><strong>MUST: </strong>Initialize to a random 64-bit value after factory reset to reduce collision probability with prior device history.</li></ul></section><section anchor="holdover-reporting" numbered="true" toc="default" title="Holdover Uncertainty Reporting"><t>Devices entering HOLDOVER state SHOULD update uncertainty_ns at regular intervals (RECOMMENDED: every 60 seconds) to reflect accumulated drift. Constrained devices that cannot update on schedule MUST update uncertainty_ns on every emission during holdover.</t></section></section>

    <section anchor="impl-consumers" numbered="true" toc="default" title="Implementation Guidance -- Consuming Platforms"><section anchor="trm" numbered="true" toc="default" title="Temporal Reference Manager (TRM)"><t>Consuming platforms that ingest TIM-annotated telemetry SHOULD implement a Temporal Reference Manager -- a component responsible for maintaining the best available time reference for ingestion_time stamping, managing failover between sources, and assigning confidence classes to incoming events.</t></section><section anchor="backward-compat" numbered="true" toc="default" title="Backward Compatibility -- Devices Without TIM"><t>Consuming platforms MUST operate correctly when receiving telemetry from devices that do not implement TIM. For such events, the platform MUST:</t><ul spacing="normal"><li>Assign Confidence Class F</li><li>Use collector ingestion_time as the best available timestamp</li><li>Declare the event as having no declared temporal integrity metadata</li><li>NEVER treat the absence of TIM as equivalent to a Class A timestamp</li></ul></section><section anchor="efficiency-interval" numbered="true" toc="default" title="Cross-Class Efficiency Metric Computation"><t>When computing efficiency metrics from constituent measurements with different Temporal Confidence Classes, consuming platforms SHOULD compute the metric as a bounded interval rather than a point value. The interval width is determined by the least-confident constituent measurement, and the overall confidence class equals the minimum class across all inputs.</t></section></section>

    <section anchor="related-standards" numbered="true" toc="default" title="Relationship to Existing Standards"><section anchor="rel-syslog" numbered="true" toc="default" title="RFC 3164 / RFC 5424 Syslog"><t>TIM is additive to RFC 5424 <xref target="RFC5424"/>. It MAY be carried as structured data using a registered SD-ID. The TIMESTAMP field carries event_time; the TIM structured data block carries provenance metadata. This document does not modify RFC 3164 or RFC 5424.</t></section><section anchor="rel-snmp" numbered="true" toc="default" title="SNMP"><t>SNMP notifications carry sysUpTime as the event time reference. TIM MAY be carried as additional variable bindings in SNMP traps and informs, using an OID allocated under a registered enterprise MIB. The sysUpTime value remains present for backward compatibility.</t></section><section anchor="rel-netconf" numbered="true" toc="default" title="NETCONF/YANG"><t>TIM MAY be represented as a YANG data node and included in NETCONF event notifications alongside the eventTime element. A YANG module definition for TIM is left for a companion document.</t></section><section anchor="rel-ptp" numbered="true" toc="default" title="IEEE 1588 (PTP)"><t>When a device's sync_source is PTP_IEEE1588, the TIM grandmaster_id field SHOULD contain the IEEE EUI-64 grandmaster identity from the PTP domain. TIM does not replace or modify PTP; it declares the provenance of timestamps derived from PTP synchronization.</t></section><section anchor="rel-smpte" numbered="true" toc="default" title="SMPTE ST 12-1"><t>SMPTE ST 12-1 <xref target="SMPTE-ST12"/> established two principles that directly inform TIM: (1) a timecode label is distinct from actual time; (2) synchronization state should be explicitly declared. TIM formalizes both principles for infrastructure telemetry.</t></section><section anchor="rel-truetime" numbered="true" toc="default" title="Google TrueTime"><t>The uncertainty interval model in TIM is directly inspired by Google's TrueTime API <xref target="SPANNER"/>, which represents timestamps as TTinterval{earliest, latest} guaranteed to contain the absolute event time. TrueTime's central insight -- that acknowledging and bounding uncertainty is superior to asserting false precision -- is the conceptual foundation of the TIM confidence class system.</t></section><section anchor="rel-otel" numbered="true" toc="default" title="OpenTelemetry"><t><em>Anticipated reviewer question: &quot;Why isn't this just part of OpenTelemetry?&quot;</em></t><t>OpenTelemetry defines what telemetry data looks like. TIM defines how trustworthy the time dimension of that data is. These are distinct concerns. TIM operates orthogonally to observability schemas: it annotates time, not telemetry semantics. A TIM implementation requires no knowledge of whether the event is a log record, a span, a metric, or a physical sensor reading.</t><t>OTel defines timestamp fields but provides no mechanism for declaring their quality. TIM is the missing provenance layer for OTel timestamps. TIM fields SHOULD be expressed as OTel resource attributes and log record attributes, extending OTel rather than replacing it. OTel resource attribute names for TIM fields are left to a companion specification.</t></section><section anchor="rel-tracecontext" numbered="true" toc="default" title="W3C Trace Context"><t>W3C Trace Context propagates trace and span identifiers but carries no timestamp information. Timestamps in distributed traces are assigned by each service independently. TIM provides what distributed tracing assumes but never defines: a standard for declaring the reliability of those timestamps. TIM SHOULD be propagated alongside Trace Context headers.</t></section><section anchor="rel-wifi" numbered="true" toc="default" title="IEEE 802.11 -- Wi-Fi Timing Mechanisms"><t><strong>802.11 TSF: </strong>The 64-bit microsecond counter synchronized across a BSS via beacon frames. TIM implementations using TSF SHOULD declare <tt>sync_source: &quot;WIFI_TSF&quot;</tt>. TSF resets MUST cause a transition to FREEWHEEL until a new anchor is established.</t><t><strong>802.11 FTM: </strong>Enables nanosecond round-trip time measurement without clock synchronization. Devices declaring <tt>sync_source: &quot;WIFI_FTM&quot;</tt> MUST populate <tt>time_domain: &quot;WIFI_FTM_RELATIVE&quot;</tt>. FTM is subject to spoofing attacks <xref target="IEEE80211AZ"/> and TIM security considerations apply with heightened weight.</t></section><section anchor="rel-5g" numbered="true" toc="default" title="3GPP -- LTE/5G Cellular Timing"><t><strong>CELLULAR_5G_PRTC: </strong>When a consuming platform directly subscribes to the timing output of a 5G base station's Telecom Grandmaster (T-GM) as a PTP source, sync_source SHOULD be declared as CELLULAR_5G_PRTC. The T-GM typically achieves +/-100 ns to +/-1.5 us accuracy per <xref target="ITU-G8275"/>.</t><t><strong>MOBILE_5G / MOBILE_LTE: </strong>These values apply when a device or OS layer explicitly synchronizes to cellular network timing. Devices that do not expose cellular timing SHOULD declare NTP_INTERNET and SHOULD populate the _advisory block to indicate that better timing is available but not exposed.</t></section></section>

    <section anchor="security" numbered="true" toc="default" title="Security Considerations"><t>TIM carries metadata about a device's clock synchronization state. Adversaries with write access to a device or its telemetry stream could manipulate TIM fields to misrepresent timestamp confidence, causing monitoring platforms to incorrectly weight events in correlation algorithms. Incorrectly elevated confidence_class values represent a high-impact integrity violation and SHOULD be treated as a security event by collecting platforms.</t><t>Implementations SHOULD sign TIM fields using a device-resident cryptographic key where hardware security capabilities are available. Consuming platforms SHOULD treat TIM metadata as untrusted input from unverified devices and apply independent validation where possible (e.g., comparing declared grandmaster_id against the known PTP domain topology).</t><t>The sequence_token provides tamper-evidence for event ordering: a gap in the sequence indicates either dropped events or tampering. Collecting platforms SHOULD alert on unexpected sequence gaps from devices operating in LOCKED state.</t><t>In multi-classification environments (DOD/DOE), the domain_id field identifies isolated time domains. Consuming platforms MUST enforce that events from different domain_id values are not cross-correlated without explicit operator authorization, as unauthorized cross-domain correlation may constitute an information security violation.</t></section>

    <section anchor="iana" numbered="true" toc="default" title="IANA Considerations"><t>This document requests the following IANA actions:</t><ul spacing="normal"><li>Registration of a Syslog Structured Data ID for TIM fields under the IANA Syslog Parameters registry</li><li>Registration of a YANG module name in the IANA YANG Module Names registry</li><li>Allocation of an OID arc under the IANA-managed SMI Enterprise Numbers for TIM SNMP MIB objects</li></ul><t>For the Informational submission, IANA coordination is not required. This section will be completed upon progression toward Standards Track consideration.</t></section>

  </middle>

  <back>
    <references>
      <name>References</name>
      <references anchor="normative-refs">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front><title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner"/>
            <date year="1997" month="March"/>
          </front>
          <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front><title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba"/>
            <date year="2017" month="May"/>
          </front>
          <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="8174"/>
        </reference>
        <reference anchor="RFC5905" target="https://www.rfc-editor.org/info/rfc5905">
          <front><title>Network Time Protocol Version 4</title>
            <author initials="D." surname="Mills"/><author initials="J." surname="Martin"/>
            <author initials="J." surname="Burbank"/><author initials="W." surname="Kasch"/>
            <date year="2010" month="June"/>
          </front>
          <seriesInfo name="RFC" value="5905"/>
        </reference>
        <reference anchor="RFC5424" target="https://www.rfc-editor.org/info/rfc5424">
          <front><title>The Syslog Protocol</title>
            <author initials="R." surname="Gerhards" fullname="R. Gerhards"/>
            <date year="2009" month="March"/>
          </front>
          <seriesInfo name="RFC" value="5424"/>
        </reference>
        <reference anchor="RFC3339" target="https://www.rfc-editor.org/info/rfc3339">
          <front><title>Date and Time on the Internet: Timestamps</title>
            <author initials="G." surname="Klyne"/><author initials="C." surname="Newman"/>
            <date year="2002" month="July"/>
          </front>
          <seriesInfo name="RFC" value="3339"/>
        </reference>
      </references>
      <references anchor="informative-refs">
        <name>Informative References</name>
        <reference anchor="RFC3164" target="https://www.rfc-editor.org/info/rfc3164">
          <front><title>The BSD Syslog Protocol</title>
            <author initials="C." surname="Lonvick" fullname="C. Lonvick"/>
            <date year="2001" month="August"/>
          </front>
          <seriesInfo name="RFC" value="3164"/>
        </reference>
        <reference anchor="RFC7228" target="https://www.rfc-editor.org/info/rfc7228">
          <front><title>Terminology for Constrained-Node Networks</title>
            <author initials="C." surname="Bormann"/><author initials="M." surname="Ersue"/>
            <author initials="A." surname="Keranen"/>
            <date year="2014" month="May"/>
          </front>
          <seriesInfo name="RFC" value="7228"/>
        </reference>
        <reference anchor="SPANNER">
          <front><title>Spanner: Google's Globally-Distributed Database</title>
            <author initials="J." surname="Corbett" fullname="J. Corbett"/>
            <date year="2012"/>
          </front>
          <refcontent>OSDI 2012</refcontent>
        </reference>
        <reference anchor="OSTP-LTC">
          <front><title>Policy on Celestial Time Standardization in Support of the National Cislunar Science and Technology Strategy</title>
            <author><organization>White House Office of Science and Technology Policy</organization></author>
            <date year="2024" month="April"/>
          </front>
        </reference>
        <reference anchor="SMPTE-ST12">
          <front><title>Time and Control Code</title>
            <author><organization>SMPTE</organization></author>
            <date year="2014"/>
          </front>
          <seriesInfo name="SMPTE ST" value="12-1:2014"/>
        </reference>
        <reference anchor="IEEE80211AZ">
          <front><title>IEEE Standard for Information Technology -- Amendment 4: Next Generation Positioning</title>
            <author><organization>IEEE</organization></author>
            <date year="2022"/>
          </front>
          <seriesInfo name="IEEE Std" value="802.11az-2022"/>
        </reference>
        <reference anchor="ITU-G8275">
          <front><title>G.8275.1: Precision time protocol telecom profile for phase/time synchronization</title>
            <author><organization>ITU-T</organization></author>
            <date year="2020"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="G.8275.1"/>
        </reference>
      </references>
    </references>

    <section anchor="deployment-scenarios" numbered="false" toc="default" title="Appendix A. Deployment Scenarios">
      <t>This appendix provides non-normative guidance for deploying TIM-capable infrastructure in environments with specialized timing constraints.</t>

      <section anchor="app-ai-dc" numbered="false" toc="default" title="A.1. Commercial AI Data Center">
        <t>In a commercial data center with a PTP-capable compute fabric: the PTP grandmaster is provided by compute fabric switches; new management cards implementing TIM declare sync_state LOCKED; legacy devices without TIM are classified Class F by the collecting platform; an OCP-TAP Time Server elevates infrastructure card confidence from Class D to Class B; the collecting platform computes efficiency metrics as intervals, with width determined by the least-confident constituent measurement.</t>
      </section>

      <section anchor="app-airgap" numbered="false" toc="default" title="A.2. Air-Gapped DOD / DOE Facility">
        <t>In an air-gapped facility with IRIG-B time distribution: devices with IRIG-B inputs declare sync_source IRIG_B, sync_state LOCKED, uncertainty_ns ~1000 (1 us), confidence_class B; the domain_id field is populated per classification domain; cross-domain correlation is blocked at the collector. No external connectivity is required.</t>
      </section>

      <section anchor="app-aeronautical" numbered="false" toc="default" title="A.3. Aeronautical Platform">
        <t>In an airborne computing platform: GPS is the primary source at altitude (Class A); on GPS signal loss in contested airspace, INS provides holdover; uncertainty_ns grows at the INS drift rate during holdover; confidence degrades from A toward E. On GPS recovery, sync_state transitions to RECOVERING, then LOCKED.</t>
      </section>

      <section anchor="app-leo" numbered="false" toc="default" title="A.4. Orbital Installation (LEO)">
        <t>In a computing installation in low Earth orbit: the time_domain field MUST be set to UTC_LEO_CORRECTED; relativistic_correction_ns_per_day is populated with the correction for the current orbital altitude (approximately +38,000 for ISS orbit); during communication blackout, AUTONOMOUS state with an onboard atomic clock provides continued operation.</t>
      </section>

      <section anchor="app-lunar" numbered="false" toc="default" title="A.5. Lunar Installation">
        <t>In a computing installation on the lunar surface: until LTC is formally defined, the time_domain field is set to FACILITY_AUTONOMOUS; onboard atomic clock ensemble provides the primary time reference; events MUST NOT be directly correlated with UTC_TERRESTRIAL timestamps without applying the ~56 us/day relativistic correction and propagation delay uncertainty; when LTC is defined, time_domain transitions to LTC_LUNAR.</t>
      </section>

      <section anchor="app-5g-edge" numbered="false" toc="default" title="A.6. 5G Edge Computing Site">
        <t>In a computing deployment co-located with a 5G base station: the T-GM is GNSS-disciplined to +/-100 ns to 1.5 us and serves as Tier 1D TRM source; primary compute node telemetry achieves Class A; power distribution measurements achieve Class B; facility monitoring achieves Class C; the combined metric interval reflects the weakest link at the facility monitoring temporal coherence; on GNSS outage, the T-GM enters holdover and TIM-capable collectors transition to Class E/B while continuing to declare honest uncertainty throughout.</t>
      </section>
    </section>

  </back>
</rfc>
