Skip to main content

Time Asymmetry Regression Estimator (TARE): Estimating the Packet-Length-Dependent Component of NTP Offset
draft-cummings-tare-00

Document Type Active Internet-Draft (individual)
Author Samuel S. Cummings
Last updated 2026-10-25
RFC stream (None)
Intended RFC status (None)
Formats
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-cummings-tare-00
Network Working Group                                     S. S. Cummings
Internet-Draft                                                    E2 LLC
Intended status: Experimental                            25 October 2026
Expires: 28 April 2027

   Time Asymmetry Regression Estimator (TARE): Estimating the Packet-
                Length-Dependent Component of NTP Offset
                         draft-cummings-tare-00

Abstract

   Network Time Protocol (NTP) offset measurements can contain bias
   associated with differences in packet serialization delay in the
   forward and reverse directions.  This document describes TARE (Time
   Asymmetry Regression Estimator), a client-side experimental method
   that estimates a packet-length-dependent component of measured NTP
   offset using regression over exchanges with varied packet lengths.  A
   client may use the estimate to produce two named outputs
   (Section 6.1): Output A, an offset normalized to a selected reference
   packet length, which does not reduce the length-dependent bias at
   that length; and Output B, the intercept of the fitted model at zero
   length of a documented length layer, an extrapolated quantity whose
   meaning depends on the validity of the model.

   TARE does not, by itself, determine or remove fixed propagation-delay
   asymmetry, distinguish that asymmetry from true clock offset, or
   guarantee improved synchronization accuracy.  This document defines
   an experimental measurement model, calibration procedure, validity
   checks, fallback behavior, and evaluation plan.  It does not define
   new NTP packet fields or require server changes.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 28 April 2027.

Cummings                  Expires 28 April 2027                 [Page 1]
Internet-Draft                    TARE                      October 2026

Copyright Notice

   Copyright (c) 2026 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   4
     1.1.  Where TARE Applies  . . . . . . . . . . . . . . . . . . .   5
   2.  Conventions and Terminology . . . . . . . . . . . . . . . . .   6
     2.1.  Requirements Language . . . . . . . . . . . . . . . . . .   6
     2.2.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   6
   3.  Scope and Design Goals  . . . . . . . . . . . . . . . . . . .   7
     3.1.  Calibration versus Discipline . . . . . . . . . . . . . .   8
     3.2.  Relationship to Complementary Mechanisms  . . . . . . . .   8
   4.  Measurement Model . . . . . . . . . . . . . . . . . . . . . .   9
     4.1.  Two-Way Offset Measurement  . . . . . . . . . . . . . . .   9
     4.2.  Reference Length and Intercept  . . . . . . . . . . . . .  10
     4.3.  Time Variation  . . . . . . . . . . . . . . . . . . . . .  11
     4.4.  Length and Timestamp Definitions  . . . . . . . . . . . .  11
   5.  TARE Calibration Procedure  . . . . . . . . . . . . . . . . .  12
     5.1.  Sample Collection . . . . . . . . . . . . . . . . . . . .  12
     5.2.  Sample Selection  . . . . . . . . . . . . . . . . . . . .  13
     5.3.  Fitting . . . . . . . . . . . . . . . . . . . . . . . . .  13
     5.4.  Calibration Record  . . . . . . . . . . . . . . . . . . .  14
   6.  Applying a Calibration  . . . . . . . . . . . . . . . . . . .  14
     6.1.  Outputs . . . . . . . . . . . . . . . . . . . . . . . . .  14
     6.2.  Normalization . . . . . . . . . . . . . . . . . . . . . .  15
     6.3.  Uncertainty Reporting . . . . . . . . . . . . . . . . . .  15
     6.4.  Overlapping Corrections . . . . . . . . . . . . . . . . .  16
     6.5.  Traceability  . . . . . . . . . . . . . . . . . . . . . .  16
   7.  Validity, Invalidation, and Fallback  . . . . . . . . . . . .  16
   8.  Compatibility and Operational Considerations  . . . . . . . .  17
     8.1.  Protocol Compatibility  . . . . . . . . . . . . . . . . .  17
     8.2.  Interaction with Network Corrections  . . . . . . . . . .  18
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  18
     9.1.  Length-Dependent Delay Manipulation . . . . . . . . . . .  18
     9.2.  Correction Bounds and Fit-Quality Behavior  . . . . . . .  19
     9.3.  General Considerations  . . . . . . . . . . . . . . . . .  20

Cummings                  Expires 28 April 2027                 [Page 2]
Internet-Draft                    TARE                      October 2026

   10. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  20
   11. Experimental Evaluation . . . . . . . . . . . . . . . . . . .  20
     11.1.  Evaluation Requirements  . . . . . . . . . . . . . . . .  20
     11.2.  Candidate Deployment Conditions (Hypotheses) . . . . . .  21
     11.3.  Bench Testbed  . . . . . . . . . . . . . . . . . . . . .  22
     11.4.  Reproducibility  . . . . . . . . . . . . . . . . . . . .  22
     11.5.  Validation Venue . . . . . . . . . . . . . . . . . . . .  23
   12. Open Questions  . . . . . . . . . . . . . . . . . . . . . . .  23
   13. References  . . . . . . . . . . . . . . . . . . . . . . . . .  24
     13.1.  Normative References . . . . . . . . . . . . . . . . . .  24
     13.2.  Informative References . . . . . . . . . . . . . . . . .  25
   Appendix A.  Preliminary Monte Carlo Simulation . . . . . . . . .  26
     A.1.  Reproduction  . . . . . . . . . . . . . . . . . . . . . .  26
     A.2.  Model . . . . . . . . . . . . . . . . . . . . . . . . . .  27
     A.3.  Results . . . . . . . . . . . . . . . . . . . . . . . . .  27
   Appendix B.  Matched-Budget Comparison (Test date: 2026-10-23)  .  28
     B.1.  Setup and Reproduction  . . . . . . . . . . . . . . . . .  28
     B.2.  Matched-Budget Results (E1) . . . . . . . . . . . . . . .  29
     B.3.  Analytic Checks . . . . . . . . . . . . . . . . . . . . .  30
     B.4.  Design Sweep at a Budget of 48 (E2) . . . . . . . . . . .  31
     B.5.  Budget Sweep (E2b)  . . . . . . . . . . . . . . . . . . .  33
     B.6.  Meaning of Zero Length (E4) . . . . . . . . . . . . . . .  33
   Appendix C.  Stress Tests (Test date: 2026-10-23) . . . . . . . .  34
     C.1.  Setup and Reproduction  . . . . . . . . . . . . . . . . .  34
     C.2.  Estimator Results . . . . . . . . . . . . . . . . . . . .  35
     C.3.  Validity Gate Results . . . . . . . . . . . . . . . . . .  37
     C.4.  Observations  . . . . . . . . . . . . . . . . . . . . . .  39
     C.5.  Gate Against Length Counted as Payload Only (Test date:
           2026-10-24) . . . . . . . . . . . . . . . . . . . . . . .  40
   Appendix D.  Pooled-Slope Variant (Test dates: 2026-10-23 and
           2026-10-24) . . . . . . . . . . . . . . . . . . . . . . .  41
     D.1.  Definition and Reproduction . . . . . . . . . . . . . . .  42
     D.2.  Impairment Suite  . . . . . . . . . . . . . . . . . . . .  43
     D.3.  Applicability Sweep . . . . . . . . . . . . . . . . . . .  47
     D.4.  Detection Power . . . . . . . . . . . . . . . . . . . . .  48
     D.5.  Pooling Depth . . . . . . . . . . . . . . . . . . . . . .  49
     D.6.  Leverage  . . . . . . . . . . . . . . . . . . . . . . . .  50
     D.7.  Loss, Delay at 90 B, and a Schedule-Aware Adversary (Test
           date: 2026-10-24) . . . . . . . . . . . . . . . . . . . .  50
   Appendix E.  Traceability of Figures Quoted in the Body . . . . .  54
     E.1.  Figures Quoted in the Body  . . . . . . . . . . . . . . .  54
     E.2.  Provenance of the Tables  . . . . . . . . . . . . . . . .  57
   Appendix F.  Source Code (Test dates: 2026-10-23 and
           2026-10-24) . . . . . . . . . . . . . . . . . . . . . . .  58
     F.1.  tare_core_2026-10-23.py . . . . . . . . . . . . . . . . .  59
     F.2.  tare_monte_carlo_2026-10-23.py  . . . . . . . . . . . . .  63
     F.3.  tare_matched_budget_2026-10-23.py . . . . . . . . . . . .  65
     F.4.  tare_stress_2026-10-23.py . . . . . . . . . . . . . . . .  69

Cummings                  Expires 28 April 2027                 [Page 3]
Internet-Draft                    TARE                      October 2026

     F.5.  tare_hybrid_2026-10-23.py . . . . . . . . . . . . . . . .  72
     F.6.  tare_supplement_2026-10-24.py . . . . . . . . . . . . . .  78
   Appendix G.  Output Data (Test dates: 2026-10-23 and
           2026-10-24) . . . . . . . . . . . . . . . . . . . . . . .  83
     G.1.  tare_monte_carlo_results_2026-10-23.csv . . . . . . . . .  83
     G.2.  tare_E1_matched_budget_2026-10-23.csv . . . . . . . . . .  83
     G.3.  tare_E1_analytic_checks_2026-10-23.csv  . . . . . . . . .  84
     G.4.  tare_E2_design_sweep_2026-10-23.csv . . . . . . . . . . .  85
     G.5.  tare_E2b_budget_sweep_2026-10-23.csv  . . . . . . . . . .  86
     G.6.  tare_E4_length_zero_meaning_2026-10-23.csv  . . . . . . .  87
     G.7.  tare_stress_estimators_2026-10-23.csv . . . . . . . . . .  87
     G.8.  tare_stress_validity_2026-10-23.csv . . . . . . . . . . .  97
     G.9.  tare_supplement_gate_2026-10-24.csv . . . . . . . . . . .  99
     G.10. tare_hybrid_estimators_2026-10-23.csv . . . . . . . . . .  99
     G.11. tare_hybrid_validity_2026-10-23.csv . . . . . . . . . . . 110
     G.12. tare_hybrid_slope_sweep_2026-10-23.csv  . . . . . . . . . 112
     G.13. tare_hybrid_power_2026-10-23.csv  . . . . . . . . . . . . 112
     G.14. tare_hybrid_pooling_depth_2026-10-23.csv  . . . . . . . . 114
     G.15. tare_hybrid_leverage_2026-10-23.csv . . . . . . . . . . . 114
     G.16. tare_supplement_hybrid_2026-10-24.csv . . . . . . . . . . 115
   Appendix H.  Checksums and Reproduction . . . . . . . . . . . . . 117
     H.1.  Unfolding . . . . . . . . . . . . . . . . . . . . . . . . 117
     H.2.  Checksums . . . . . . . . . . . . . . . . . . . . . . . . 117
     H.3.  Reproduction  . . . . . . . . . . . . . . . . . . . . . . 119
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . . 119

1.  Introduction

   Network Time Protocol (NTP) estimates clock offset from timestamps
   exchanged between a client and a server.  The usual offset estimate
   depends on the difference between forward and reverse path delays.
   When the paths have unequal delays, the estimate can be biased even
   if the timestamps themselves are accurate.

   One component of path delay is serialization delay: the time required
   to transmit a packet over a link.  Serialization delay depends on
   packet length and link rate.  If forward and reverse path rates or
   effective transmitted lengths differ, changing packet length can
   change the measured offset.  This creates a potentially observable
   relationship between packet length and measured offset.

Cummings                  Expires 28 April 2027                 [Page 4]
Internet-Draft                    TARE                      October 2026

   TARE (Time Asymmetry Regression Estimator) is an experimental client-
   side method for estimating that relationship.  The name refers to the
   effect of forward and reverse rate asymmetry on measured offset; the
   method estimates only the packet-length- dependent component of that
   effect, not path asymmetry in general.  A client collects
   measurements at several packet lengths, fits a model, and uses the
   fitted length-dependent term to normalize measurements to a reference
   length.  TARE is an estimator layered above existing NTP exchanges;
   it does not require a new wire format.

   The method rests on a limited claim.  A regression can estimate a
   length-dependent component only when that component is sufficiently
   stable and distinguishable from other time-varying effects.  The
   regression intercept does not, in general, reveal the true clock
   offset.  Fixed propagation asymmetry and true clock offset are
   confounded in ordinary two-way measurements.  TARE results are
   relative to the selected server (Section 6.5).

   This document specifies a candidate experimental procedure and
   safeguards intended to make that limitation explicit.  The algorithm
   and results are preliminary; independent implementation and real-
   network validation are needed before any standards-track
   recommendation.

1.1.  Where TARE Applies

   Different error sources respond to different improvements.  Hardware
   timestamping reduces timestamp-capture uncertainty.  Better
   oscillators reduce drift between measurements.  Higher link rates
   reduce serialization delay.  None of these automatically removes
   directional asymmetry in network delay, and as some error terms
   shrink, others become the limiting factor.  TARE addresses one term:
   a component of measured offset that depends on packet length.

   The value of the method is not that packet-length regression solves
   every source of synchronization error.  When the model's assumptions
   hold, the regression may remove a systematic, length-dependent
   component of measured offset that averaging at a single length leaves
   behind.  Whether that is useful on a given path depends on the rate
   asymmetry, the achievable length spread, timestamping quality, and
   estimator uncertainty; no universal link-rate threshold is claimed.
   The decisive test is whether TARE reduces the relevant error more
   reliably than a fair alternative under the same measurement budget
   (Section 11).

   Serialization delay scales inversely with link rate, so the effect is
   larger where forward and reverse rates differ structurally.  Access
   networks with asymmetric rates (for example, some DSL, DOCSIS, and

Cummings                  Expires 28 April 2027                 [Page 5]
Internet-Draft                    TARE                      October 2026

   PON deployments) are candidates for evaluation.  ADSL2plus, for
   instance, is specified for minimum net rates of 16 Mbit/s downstream
   and 800 kbit/s upstream [G992.5]; G-PON specifies an upstream time-
   division multiple access mechanism with dynamic bandwidth assignment
   [G984.3]; and DOCSIS upstream uses a request-grant mechanism that is
   generally reported to add 2-8 ms before any queuing [LLD].  They are
   not assumed to be suitable: upstream scheduling or grant mechanisms
   on such links can add delay that is large compared with serialization
   and may not be linear in packet length, which would violate the model
   in Section 4.1.  Section 11.2 states these conditions as hypotheses
   to be tested.

2.  Conventions and Terminology

2.1.  Requirements Language

   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 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals.

   This document describes an experimental algorithm.  The requirements
   language expresses the intended behavior of implementations of this
   experiment; it does not imply that TARE is an IETF-approved protocol.
   The key words are used only for behavior whose compliance can be
   checked from an implementation's inputs, outputs, or recorded state.
   Other statements are descriptive.

2.2.  Terminology

   Measurement: An NTP exchange and the offset, delay, timestamps, and
   packet-length metadata derived from it.

   Probe length: The packet length varied by the client during
   calibration.

   Length layer: The protocol layer at which a length is counted, for
   example the NTP payload, the UDP datagram, the IP packet, or the
   link-layer frame.  Implementations document which layer defines the
   probe length.

   Effective transmitted length: The number of octets relevant to
   serialization on a particular link.  It can differ from an IP or UDP
   length due to encapsulation, link-layer framing, and other overhead.

   Timestamp reference point: The point in a frame, for example its
   start or its end, to which a timestamp refers.

Cummings                  Expires 28 April 2027                 [Page 6]
Internet-Draft                    TARE                      October 2026

   Reference length (L0): The probe length to which measurements are
   normalized.  It is normally chosen within the range of lengths
   actually measured.  A value outside that range relies on
   extrapolation, and the reported uncertainty then includes the
   extrapolation term (Section 6.3).

   Output A (length-normalized offset): The offset a probe of length L0
   would be expected to measure.

   Output B (model intercept at zero length): The value at zero length
   of the fitted linear model, evaluated at the documented length layer.
   It is an extrapolated quantity: it removes only the length- dependent
   component represented by the fitted model, and its meaning and
   uncertainty depend on whether the assumed linear relationship holds
   between the observed range and zero.

   Zero length: Zero octets at the documented length layer.  It is a
   property of the length variable, not a physical packet.  Overhead
   that the documented layer does not count is not extrapolated away
   (Section 4.4).

   Calibration: The process of collecting measurements and estimating
   the relationship between measured offset and probe length.  In this
   document the word denotes a defined measurement procedure with
   specified uncertainty reporting, not a calibration in the sense of
   ISO/IEC 17025 (Section 6.5).

   Valid calibration: A calibration that passes the implementation's
   preconfigured data sufficiency, model-fit, stability, and uncertainty
   checks.

3.  Scope and Design Goals

   TARE has the following goals:

   *  Estimate a packet-length-dependent component of measured offset.

   *  Normalize measurements to a reference length using a fitted model.

   *  Detect conditions under which the model is not sufficiently
      supported and disable the correction in those conditions.

   *  Operate without new NTP packet fields or mandatory server changes.

   *  Make uncertainty and limitations visible to the clock-selection
      and clock-discipline logic.

   TARE does not attempt to:

Cummings                  Expires 28 April 2027                 [Page 7]
Internet-Draft                    TARE                      October 2026

   *  Infer absolute clock offset from the regression intercept alone.

   *  Remove fixed propagation-delay asymmetry.

   *  Correct arbitrary queueing, routing, scheduling, or timestamping
      errors that are not explained by the model.

   *  Replace NTP source selection, authentication, filtering, or clock
      discipline.

   *  Treat a good regression fit as proof that a time source is honest.

   *  Estimate oscillator frequency, or specify check intervals or
      holdover behavior.  The time-trend term of Section 4.3 is a
      nuisance parameter that reduces confounding; it is not an output.

   *  Certify accuracy against a primary time reference.

   TARE is intended initially for controlled experiments and client
   implementations that can retain per-exchange metadata.  It is not a
   requirement for general NTP interoperability.

3.1.  Calibration versus Discipline

   TARE is a calibration procedure, not a clock discipline algorithm.
   Its outputs describe measured offset at the time of calibration.  How
   an implementation uses them, for example for immediate slewing,
   gradual steering, or operator intervention, is outside the scope of
   this document.  Calibration quality is determined by path
   characteristics, timestamping hardware, and estimator noise, not by
   the choice of discipline algorithm.  This document does not prescribe
   update frequency, slew limits, or holdover strategies.

3.2.  Relationship to Complementary Mechanisms

   TARE is one mechanism among several that address different error
   terms.  They are complementary rather than strictly hierarchical:

   *  Hardware or kernel timestamping reduces uncertainty about when
      packets enter or leave the network.  Interleaved modes [RFC9769]
      allow a server to return a more accurate transmit timestamp
      captured after transmission.

   *  TARE estimates a packet-length-dependent component of measured
      offset, which is most relevant on paths with asymmetric rates and
      no other correction for that component.

Cummings                  Expires 28 April 2027                 [Page 8]
Internet-Draft                    TARE                      October 2026

   *  Network-device corrections, such as the Network Correction
      Extension Field of NTP over PTP [RFC10030] and the Correction
      Extension Field of NTPv5 [NTPv5], account for delay added by
      forwarding devices.  They can overlap with TARE's target; see
      Section 8.2.

   *  An independent external reference, for example a GNSS-disciplined
      clock, establishes a clock's offset relative to that reference
      through a separate path, provided the arrangement is sufficiently
      accurate.  It can help distinguish errors that TARE cannot
      resolve, including fixed propagation asymmetry.  It does not
      remove path asymmetry from any concurrent NTP exchange.

   An implementation selects mechanisms according to what its deployment
   supports and avoids applying overlapping corrections twice
   (Section 6.4).

4.  Measurement Model

4.1.  Two-Way Offset Measurement

   Let theta_i be the offset estimate produced from exchange i using the
   applicable NTP timestamp equations.  Let L_i denote the configured
   probe length for that exchange.  Under the usual two-way measurement
   model, the observed offset includes the true clock offset and one
   half of the difference between forward and reverse path delays.  With
   the [RFC5905] definition theta = ((T2 - T1) + (T3 - T4)) / 2, the
   measured offset equals the true offset plus (d_f - d_r) / 2, where
   d_f and d_r are the forward and reverse one-way delays; it is
   positive when the forward path is slower.  Implementations MUST use
   this convention, and units are microseconds for offset and delay,
   bytes for length, and microseconds per byte for slope.

   If forward and reverse effective lengths are equal to L_i, and if the
   only length-dependent contribution is serialization on fixed-rate
   links, a simplified model is:

   theta_i = C + b (L_i - L0) + epsilon_i

   where:

   theta_i  is the measured offset for exchange i;
   C        is the expected measured offset at reference length L0;
   b        is the length-dependent offset slope;
   L_i      is the probe length for exchange i;
   L0       is the chosen reference length; and
   epsilon_i represents measurement noise and unmodeled effects.

Cummings                  Expires 28 April 2027                 [Page 9]
Internet-Draft                    TARE                      October 2026

   For a simple pair of fixed-rate bottleneck links, with equal packet
   lengths in each direction, the serialization contribution to the
   slope can be approximated by:

   b = (1/2) * 8 * (1/Rf - 1/Rr)  [microseconds per byte if the rates
   are expressed in Mbit/s]

   where Rf and Rr are the effective forward and reverse rates.  For
   several store-and-forward hops carrying packets of equal length in
   both directions, the sum over hops of the same term applies.  If only
   the request length is varied and the response length is fixed, the
   slope is half the forward per-byte serialization time and is not the
   asymmetry (toy test, 2026-10-23: 0.400 against 0.360 us/B).  This
   equation is an idealized model, not a method for inferring link rates
   from arbitrary Internet measurements.  It also assumes particular
   timestamp reference points (Section 4.4).

   In a real path, packet length can affect queueing, scheduling,
   fragmentation, encapsulation, or route selection.  In those cases, a
   linear slope may not represent serialization alone.  TARE therefore
   treats the slope as an empirical coefficient unless the path and
   timestamping conditions justify the physical interpretation.

4.2.  Reference Length and Intercept

   TARE normally uses a reference length within the range of lengths
   measured during calibration.  This avoids relying on extrapolation
   beyond the data.  The fitted value C is the expected offset at L0; it
   still includes true clock offset, fixed path asymmetry, and any other
   length-independent bias.

   Output A normalizes to L0.  At L0 the length-dependent bias b * L0 is
   still present, so Output A has the same expected bias as an ordinary
   sample at L0 and does not reduce it (toy test, 2026-10-23: 107.4 us
   for both).  Output B, the fit extrapolated to zero length, is the
   only output that removes the length-dependent term.  Extrapolation
   beyond the measured range relies on the linear model, and its
   uncertainty is larger than that of Output A.  Output B is not the
   true clock offset: a fixed propagation asymmetry remains in both
   outputs (75 us in the toy model) and cannot be separated from the
   true offset by this method.  Implementations SHOULD NOT label Output
   B as an absolute offset.

Cummings                  Expires 28 April 2027                [Page 10]
Internet-Draft                    TARE                      October 2026

4.3.  Time Variation

   If calibration measurements span a period in which the clock offset
   or path delay changes, a length-only regression can attribute time
   variation to packet length.  Calibration exchanges MUST be sent in
   randomized length order (toy test, 2026-10-23: with sequential order
   a 1 ppm drift shifts Output B by about -20 us and the illustrative
   validity gate rejected only 1.4% of such fits).  A time term MAY be
   fitted, but only when the order is randomized, because in sequential
   order it is collinear with length.  One possible model is:

   theta_i = C + b (L_i - L0) + c (t_i - t0) + epsilon_i

   where t_i is the measurement time, t0 is a centered reference time,
   and c represents a first-order time trend.  The term c aggregates all
   drifting effects in the window, including oscillator frequency error
   and slowly varying path delay, so it is a nuisance parameter and is
   not reported as an output.  A time term does not repair abrupt path
   changes or arbitrary correlations between packet length and time.
   Implementations SHOULD reject calibrations where length and time are
   too strongly confounded to estimate reliably.

4.4.  Length and Timestamp Definitions

   Implementations MUST record the layer at which L_i is measured.
   Depending on the environment, relevant lengths may include the NTP
   payload, UDP datagram, IP packet, or effective transmitted frame.
   These quantities are not interchangeable.  Encapsulation and link-
   layer overhead can make effective transmitted length differ by
   direction or link.

   If the implementation counts payload only, Output B retains the
   product of the slope and the omitted overhead (toy test, 2026-10-23:
   about +10 us for 28 bytes, +24 us for 66 bytes, +36 us for 100 bytes
   at 0.36 us/B), and the illustrative validity gate did not detect it
   (Appendix C, Table C-3: the gate rejected 0.9, 1.0, and 1.0 percent
   of fits for 28, 66, and 100 bytes, against 1.1 percent with no
   overhead).  Output B is therefore the model intercept at zero of the
   documented layer, not at zero physical bytes.

   A client usually cannot observe the effective transmitted length on
   every intermediate link.  When it cannot, the length variable is an
   implementation-defined probe-length proxy.  The fitted coefficient
   MUST NOT be presented as a direct measurement of physical link rates
   unless the needed assumptions have been independently established.

Cummings                  Expires 28 April 2027                [Page 11]
Internet-Draft                    TARE                      October 2026

   The model in Section 4.1 also depends on where in each frame the four
   timestamps are taken.  Protocols and implementations differ.  For
   example, NTPv5 [NTPv5] defines the server receive timestamp as the
   end of reception and the server transmit timestamp as the beginning
   of transmission, and NTP over PTP [RFC10030] recommends a transmit
   timestamp at the beginning of the frame and a receive timestamp at
   its end.  A different reference point changes which serialization
   intervals are included in the measured offset and with what sign, so
   the relation between the fitted slope and the link-rate difference
   depends on it.  Implementations MUST record the timestamp reference
   point for each of the four timestamps where it is known, and
   otherwise record that it is unknown.

5.  TARE Calibration Procedure

5.1.  Sample Collection

   The client selects a set of packet lengths within the path's
   supported size range.  It SHOULD avoid lengths that cause IP
   fragmentation and SHOULD keep the other relevant packet fields stable
   where possible.  The client MUST obey the selected NTP version's
   message-format and interoperability requirements.  This document does
   not authorize arbitrary packet padding or changes to NTP message
   formats.

   Equal request and response length is required by the model.  In NTPv5
   (draft-ietf-ntp-ntpv5-09, Section 10) the response must be the same
   length as the request, and servers must support the Padding extension
   field (Section 7.2), which provides a conforming way to vary probe
   length.  A Correction Extension Field, when used, must be the last
   extension field of the message (Section 7.6), so padding precedes it.
   NTP over PTP [RFC10030] similarly recommends padding a response to
   the length of its request.  For NTPv4 a response is not guaranteed to
   mirror the request length; a TARE client MUST measure the response
   length and either fit request and response lengths separately or
   decline to fit.  Deployed NTPv4 server behavior has not been surveyed
   for this document.

   NTPv5 also advises clients to use constant-length requests for an
   association, to avoid adding variation to the measured delay
   (Section 7.4 of -09, in the context of reference ID requests).  TARE
   varies length deliberately, so a TARE client SHOULD confine length
   variation to bounded calibration bursts, SHOULD use constant-length
   requests otherwise, and SHOULD label calibration exchanges so that
   ordinary filtering does not mix them with steady-state samples.

   For each accepted exchange, the client records at least:

Cummings                  Expires 28 April 2027                [Page 12]
Internet-Draft                    TARE                      October 2026

   *  the four timestamps used by the NTP offset and delay calculations;
      o the measured offset and round-trip delay; o the configured probe
      length and the layer at which it is measured; o the timestamp
      reference points (Section 4.4); o the local monotonic measurement
      time; o the server identity and protocol version; o timestamping
      mode, if known; o whether the sample was filtered or rejected, and
      why; and o relevant available correction information from the
      protocol or implementation, including whether a network correction
      was applied (Section 8.2).

   The client SHOULD interleave or randomize lengths rather than send
   all small packets followed by all large packets.  This reduces
   confounding between length and time.  It SHOULD use a bounded number
   of exchanges and SHOULD respect server polling and rate limits.

5.2.  Sample Selection

   Implementations MAY use an existing NTP filtering policy, but the
   policy MUST be documented and applied consistently.  Selecting the
   minimum-delay sample independently at each length can change the
   statistical properties of the samples and can bias the fitted slope.
   Therefore, an implementation SHOULD compare calibration results under
   its selected policy with a suitable sensitivity check.

   Minimum-delay filtering may reduce some variable-delay effects, but
   it does not establish that forward and reverse delays are equal and
   does not eliminate path asymmetry.

5.3.  Fitting

   The client fits the selected model to the collected measurements.
   Ordinary least squares is a useful baseline.  A robust estimator MAY
   be used when outliers are expected, but robust fitting does not
   compensate for a wrong model, path changes, or adversarially
   manipulated samples.

   The client MUST have enough distinct lengths and accepted samples to
   estimate the selected model.  A fit with insufficient length spread,
   excessive collinearity between length and time, or numerically
   unstable coefficients MUST be rejected.

   The fitted slope is b_hat.  The estimated offset normalized to L0 is:

   theta_hat(L0) = theta(L) - b_hat (L - L0)

   for an individual measurement at length L.  If the implementation
   uses the fitted line directly, the equivalent prediction at L0 is the
   fitted intercept C_hat under the reference-length model.

Cummings                  Expires 28 April 2027                [Page 13]
Internet-Draft                    TARE                      October 2026

   For ordinary least squares with n groups, mean length Lbar, Sxx = sum
   (L_i - Lbar)^2 and residual standard deviation s, the standard error
   of the slope is s / sqrt(Sxx) and of the zero-length intercept s *
   sqrt(1/n + Lbar^2 / Sxx).  Both MUST be included in the reported
   uncertainty, within the classification of Section 6.3.  A narrow
   length range inflates them (toy test, 2026-10-23, 48 exchanges:
   lengths 90-1400 B intercept sd 7.0 us; 90-250 B 11.8 us; Appendix B).

   Implementations SHOULD retain residuals, slope uncertainty, and
   goodness-of-fit diagnostics.  A single goodness-of-fit statistic is
   not sufficient to establish calibration validity.

5.4.  Calibration Record

   A calibration result SHOULD include:

   *  the reference length L0; o the estimated slope and its
      uncertainty; o Output A and Output B with their uncertainty
      statements (Section 6.3); o the number and range of accepted
      lengths and samples; o the length layer and the timestamp
      reference points; o residual and stability diagnostics; o the time
      window over which it was estimated; o a validity state, a validity
      timestamp, a validity period, and the reason for any rejection; o
      the reference conditions: server, path or interface identifier,
      protocol version, and timestamping mode; and o whether any network
      correction was applied before fitting.

   TARE's estimated slope is not itself a clock offset correction.
   Implementations MUST distinguish slope estimation, normalization to a
   reference length, and the final clock-offset estimate used by the
   clock discipline.

6.  Applying a Calibration

6.1.  Outputs

   A TARE calibration produces two named outputs.

   Output A (length-normalized offset) is the offset normalized to a
   stated reference length L0.  It has the same expected length-
   dependent bias as an ordinary sample at L0 and offers no bias
   reduction.

   Output B (model intercept at zero length) is the fitted linear model
   extrapolated to zero length at the documented length layer.  It
   removes only the length-dependent component represented by the fitted
   model.  Its meaning and uncertainty depend on whether the assumed
   length-offset relationship holds between the observed range and zero.

Cummings                  Expires 28 April 2027                [Page 14]
Internet-Draft                    TARE                      October 2026

   Neither output establishes the true absolute clock offset.  Fixed
   path asymmetry and reference-server error remain in both.  If the
   measured length layer omits headers, framing, or encapsulation,
   Output B retains the product of the fitted slope and the omitted
   overhead, a term the regression cannot detect (Section 4.4).

6.2.  Normalization

   When a calibration is valid, a client MAY normalize a measurement
   from length L to reference length L0 by subtracting the estimated
   length-dependent term:

   theta_corrected = theta_measured - b_hat (L - L0)

   The corrected value is an offset estimate normalized to L0.  It is
   not necessarily an unbiased estimate of the true clock offset,
   because fixed propagation asymmetry and other length-independent
   biases remain.

6.3.  Uncertainty Reporting

   The standard errors of Section 5.3 are not a complete uncertainty
   budget.  They presuppose the regression assumptions.  A calibration
   SHOULD report an uncertainty statement for each output that
   classifies the budget into three categories:

   ESTIMATED from the regression: the residual noise s, the slope
   standard error, the intercept standard error, the standard error of
   the fitted value at L0 (including the extrapolation term when L0 is
   outside the measured range), and, where fitted, the time-trend
   standard error.  These are valid only under the stated regression
   assumptions.  Where samples are correlated or delays vary with time,
   the least-squares formulas understate the sampling uncertainty, and
   implementations should qualify or inflate them.

   ASSUMED by the model: linearity of the length-offset relationship
   within and below the observed range, the absence of unmodeled length-
   dependent behavior (queueing thresholds, fragmentation, shapers,
   scheduling), and the correctness of the length layer and timestamp
   reference points.  These assumptions are documented, not measured,
   and the validity checks of Section 7 monitor them only partially.

   UNOBSERVABLE from TARE measurements alone: fixed path propagation
   asymmetry, the reference server's own time error, and timestamping
   calibration error.  These terms appear in no output of the regression
   and set a floor on absolute accuracy that no confidence interval from
   the fit can reduce.

Cummings                  Expires 28 April 2027                [Page 15]
Internet-Draft                    TARE                      October 2026

   An expanded uncertainty with a stated coverage factor may be computed
   for the ESTIMATED category only.  The ASSUMED and UNOBSERVABLE
   categories are reported qualitatively or with deployment-specific
   bounds.  A narrow regression confidence interval does not demonstrate
   accuracy of the absolute clock offset.

   The client SHOULD NOT treat the corrected value as more precise than
   justified by both the measurement noise and the calibration
   uncertainty.  If the reported uncertainty is too large to support the
   implementation's configured error budget, the client SHOULD disable
   the correction (Section 7).

6.4.  Overlapping Corrections

   If protocol-defined correction fields or implementation-specific
   corrections already account for part of the same delay, the
   implementation MUST avoid applying the same correction twice.  An
   implementation MUST NOT apply a TARE correction to a delay or offset
   component already reported as corrected by a network correction
   field.  Section 8.2 describes the fields known to this document.

6.5.  Traceability

   TARE calibrations are relative to the selected time server.  The
   client inherits the server's time without verifying the server's
   accuracy or traceability.  TARE does not and cannot certify accuracy
   against a primary reference; a GNSS-disciplined or equivalent primary
   reference is required for absolute calibration, with that reference's
   own uncertainty taken into account.

7.  Validity, Invalidation, and Fallback

   Implementations SHOULD model calibration state explicitly.  A
   suggested state machine is:

   UNCALIBRATED -> CALIBRATING -> VALID | ^ | v | v INVALID <------+

   Transitions INVALID -> CALIBRATING and VALID -> CALIBRATING
   (recalibration) are also permitted.

   The exact state names are implementation-defined.  A client SHOULD
   use ordinary NTP processing when no valid TARE calibration exists.

   A calibration SHOULD be invalidated when one or more of the following
   occurs:

Cummings                  Expires 28 April 2027                [Page 16]
Internet-Draft                    TARE                      October 2026

   *  the fitted slope changes beyond a configured stability threshold;
      o residuals show significant curvature or systematic structure; o
      packet-size groups have inconsistent delay or offset behavior; o
      the route, interface, encapsulation, timestamping mode, network
      correction usage, or relevant link configuration changes; o there
      are insufficient fresh samples; o the correction uncertainty
      exceeds the configured limit; o the correction exceeds its
      configured bound (Section 9.2); or o a detected discontinuity
      indicates that the model no longer describes the measurements.

   Implementations SHOULD bound the magnitude of applied corrections and
   SHOULD impose a maximum calibration lifetime as a secondary
   safeguard.  A lifetime limit alone is not a substitute for detecting
   changes.  Thresholds should be established through testing and
   documented; this document does not prescribe universal values.

   When invalidated, the client MUST stop applying the stale correction
   and SHOULD fall back to ordinary NTP measurement processing while
   gathering new calibration data.  A TARE client SHOULD fall back to
   its non-TARE estimate when any validity check fails, and MUST report
   that it did.  The validity checks have limited power: in the
   2026-10-23 toy-model tests the illustrative gate missed most size-
   dependent shaper, curvature, and fragmentation steps (rejection 1.3%
   to 3.2%) and detected sequential-order drift only at large values.

8.  Compatibility and Operational Considerations

8.1.  Protocol Compatibility

   TARE is defined as a client-side measurement algorithm and adds no
   packet fields.  A TARE implementation MUST follow the wire-format,
   extension-field, padding, and anti-amplification requirements of the
   NTP version it uses.  It MUST NOT assume that a server supports
   arbitrary packet lengths or that a response will have a desired
   length unless the protocol and server behavior establish that fact.

   Implementations SHOULD test with the relevant NTP version and server
   implementations before deployment.  Calibration probes SHOULD be
   rate-limited, bounded, and disabled when the server or network
   signals congestion or imposes limits.

   The initial experiment does not define a new NTP extension, negotiate
   TARE support, or require the server to participate in calibration.  A
   future protocol extension, if justified by evidence, would require
   separate design and review.

Cummings                  Expires 28 April 2027                [Page 17]
Internet-Draft                    TARE                      October 2026

8.2.  Interaction with Network Corrections

   Two different extension fields carry delay corrections from network
   devices:

   *  NTP over PTP [RFC10030] defines a Network Correction Extension
      Field (type 0x010A).  Its value is the sum of the corrections made
      by PTP transparent clocks and the time taken to receive the
      packet, computed from packet length and link speed.  Per Section 3
      of [RFC10030], the extension field carries the correction for the
      request, while the correction for the response is in the PTP
      header of the response message itself.  A client that applies both
      therefore removes a length-dependent serialization term even when
      no transparent clock is on the path.

   *  NTPv5 [NTPv5] defines its own Correction Extension Field, added by
      forwarding devices, whose type code is not yet assigned in draft
      -09.  A forwarding device adds the time from the end of reception
      to the beginning of retransmission when link speed or packet
      length changes (Section 7.6 of -09).  The client's corrected delay
      also accounts for packet receive and transmit durations (Section 8
      of -09).

   The overlap with TARE's regression target therefore depends on which
   field is in use and how the client applies it, not only on whether
   transparent clocks are present.  This reading of the cited
   specifications has not been confirmed with their authors.  A client
   that applies a network correction before fitting records that fact in
   the calibration record (Section 5.4); the fitted slope then estimates
   only the residual length dependence.  Outside these mechanisms, TARE
   and network corrections address different terms.

9.  Security Considerations

   Incorrect time can affect authentication, logging, distributed
   coordination, and security policy.  Security requirements for time
   protocols are discussed in [RFC7384].  TARE introduces additional
   measurements and a model whose parameters can be influenced by
   network behavior.

9.1.  Length-Dependent Delay Manipulation

   The least-squares fit weights length groups unequally.  For the six-
   length reference design (90, 250, 500, 800, 1100, and 1400 bytes,
   equal group sizes) the weights of the zero-length intercept are
   approximately 0.49, 0.40, 0.27, 0.11, -0.06, and -0.22 (computed
   analytically, 2026-10-23; Appendix B, Table B-2); their absolute
   values sum to about 1.55.  If an attacker changes the measured offset

Cummings                  Expires 28 April 2027                [Page 18]
Internet-Draft                    TARE                      October 2026

   of each group by at most x, Output B can change by up to about 1.55
   x.  A one-way delay of d changes a measured offset by d/2, so the
   corresponding bound for one-way delay is about 0.77 d.

   In the Appendix C toy test, adding 200 us of one-way delay to
   1400-byte packets only moved Output B by -21.9 us and left the
   90-byte baseline unchanged, while adding the same delay to 90-byte
   packets only moved Output B by about +49 us and the baseline by +100
   us.  TARE therefore changes the attack surface relative to the non-
   TARE baseline rather than uniformly reducing or increasing it: it is
   less sensitive to delay confined to the length a single-length
   baseline uses, and it is sensitive to delay confined to other
   lengths.  A toy test of an adversary that knows the length schedule
   is in Appendix D, Section D.7.  Forward delay of s x (L - 90) bytes,
   which is zero at 90 bytes and linear in length, moved the fitted
   offset by about -22.5 us at s = 0.5 us/B (the longest packets delayed
   by about 655 us) without raising the fallback rate of the gate above
   its nominal level, while the 90-byte baseline did not move.  In this
   model a schedule-aware adversary can bias TARE by an amount it
   chooses, and no fit-quality gate in this document detects it
   (Section 11.2).

   An on-path attacker may delay packets as a function of packet length,
   manipulate queueing, or induce path changes to bias the estimated
   slope.  A good linear fit is not evidence that the path is
   trustworthy.

9.2.  Correction Bounds and Fit-Quality Behavior

   Implementations SHOULD define and enforce a bound on the absolute
   magnitude of applied TARE corrections.  The bound is a safeguard, not
   evidence that in-bound corrections are correct: a systematic error
   can remain well within any configured limit.  The selection of the
   bound is documented and justified by experimental data appropriate to
   the deployment environment.

   Exceeding the bound triggers invalidation and fallback to non-TARE
   measurement processing (Section 7), reported to the extent the
   implementation's observability permits.

   Unacceptable residual structure, goodness-of-fit, or reported
   uncertainty also triggers invalidation and fallback, even when the
   prospective correction is small.  Bounds constrain magnitude; fit
   checks constrain model validity.  They address different failure
   modes.

Cummings                  Expires 28 April 2027                [Page 19]
Internet-Draft                    TARE                      October 2026

   No universal numerical bound is specified by this document.  Any
   specific value requires empirical support from the evaluation program
   (Section 11).

9.3.  General Considerations

   Authentication of NTP messages, where available (for example NTS
   [RFC8915]), can establish message origin and integrity but does not
   prove that timing behavior is honest or symmetric.

   Implementations SHOULD:

   *  retain existing NTP source authentication and selection policies;
      o bound the magnitude of TARE corrections (Section 9.2); o monitor
      residuals, slope stability, and calibration age; o reject samples
      and calibrations that violate validity checks; o avoid letting
      TARE override source-selection or clock-discipline safeguards; and
      o compare independent sources where the deployment permits it.

   Calibration traffic can impose load on servers and networks.
   Implementations MUST rate-limit probes and MUST NOT use TARE as a
   reason to send unbounded traffic.  A client SHOULD fall back to
   ordinary NTP behavior if calibration is invalid or unavailable.

   TARE does not correct fixed path asymmetry.  An attacker or network
   condition that produces a constant directional delay difference may
   remain undetected by the length regression, and this limitation
   should be considered when interpreting the corrected offset.

10.  IANA Considerations

   This document has no IANA actions.  It defines no new NTP fields,
   protocol numbers, ports, or registry entries.  It refers to extension
   fields registered or requested by other documents ([RFC10030],
   [NTPv5]) and does not require changes to those registrations.

11.  Experimental Evaluation

11.1.  Evaluation Requirements

   TARE is experimental.  Evaluation SHOULD compare it with ordinary NTP
   measurement processing using matched measurement budgets and
   identical underlying network conditions.  Results SHOULD report bias,
   standard deviation, tail error, calibration convergence time, probe
   overhead, false-valid rate, invalidation latency, and the fraction of
   time for which calibration is valid.

   At minimum, evaluation SHOULD include:

Cummings                  Expires 28 April 2027                [Page 20]
Internet-Draft                    TARE                      October 2026

   *  analytically controlled fixed-rate asymmetry; o independent and
      correlated queueing in each direction; o different packet-length
      ranges and sample-selection policies; o clock-frequency error and
      time-varying offset; o path changes, encapsulation, and packet-
      size-dependent behavior; o outliers, packet loss, and server load;
      o adversarial delay manipulation, including an adversary that
      knows the length schedule; and o real hardware timestamping, where
      available.

   Comparisons SHOULD include ordinary NTP filtering, TARE with ordinary
   least squares, and any robust or validity-checking variant.
   Experiments MUST compare methods using the same number of candidate
   exchanges and MUST report error against the true offset, not only the
   spread of estimators that target different quantities.  Results with
   additional calibration traffic MAY be reported separately.

   A successful fit in a simulation is necessary but not sufficient
   evidence of practical accuracy.  A pooled-slope variant that was
   evaluated in the toy model, but is not specified by Sections 5
   through 7, is described in Appendix D.

11.2.  Candidate Deployment Conditions (Hypotheses)

   The following conditions are hypotheses to be tested by the
   evaluation program.  They are not established deployment criteria.

   H1: TARE provides measurable benefit when forward and reverse link
   rates are substantially asymmetric, no network correction already
   accounts for the length-dependent term, path delay varies linearly
   with length (no length-dependent scheduling or grant delay), and
   timestamp resolution is finer than the expected serialization effect.

   H2: TARE provides little or no benefit when forward and reverse rates
   are equal, where matched-budget averaging performs at least as well.

   H3: Under delay manipulation, TARE's error differs from the
   baseline's in a length-dependent way (Section 9.1).  The evaluation
   tests whether an adversary that knows the length schedule can cause a
   larger error against TARE than against the baseline for the same
   delay budget.

   H4: The achievable bias reduction on asymmetric access links is a
   function of the rate asymmetry and the effective length range, to be
   quantified by measurement.

   The evaluation program tests these hypotheses under matched
   measurement budgets and identical conditions, reporting error against
   independently established ground truth.

Cummings                  Expires 28 April 2027                [Page 21]
Internet-Draft                    TARE                      October 2026

11.3.  Bench Testbed

   All results in this document derive from a toy Monte Carlo model.  A
   physical testbed is needed to convert this section from a plan into
   evidence.  A suitable design is:

   *  Two hosts, back-to-back or through a switch, under experimenter
      control. o Asymmetric link rates imposed through traffic control
      (for example tc and netem shaping), with the configured rates as
      ground truth. o Hardware or driver timestamping, where NIC support
      permits. o An independent time reference at each end to establish
      ground truth and decompose one-way delays.

   The experiment documents a ground-truth uncertainty budget:

   *  GNSS-disciplined references at both endpoints are useful but are
      not automatically ground truth.  The experiment documents the
      references' own offset uncertainty, antenna and receiver delays,
      clock distribution paths, timestamping calibration, and the method
      used to compare the two time scales. o A second time server does
      not establish ground truth merely because it is trusted; its
      traceability and its path to the client are analyzed. o The
      experiment shows that the reference measurement is accurate enough
      to distinguish TARE's improvement from the reference's own
      measurement error.

   Measurements include TARE calibration bursts at the six-length
   reference design, a matched-budget baseline under identical
   conditions, deliberately induced path variation (encapsulation and
   MTU changes), and runs of day-scale duration to capture oscillator
   temperature effects.  Success criteria are defined in advance: bias
   reduction against the baseline under matched budgets, with
   uncertainty intervals, against independently established ground
   truth, with the reference uncertainty stated alongside every reported
   result.

11.4.  Reproducibility

   Simulation assumptions, random seeds, source code, and all parameter
   values SHOULD be published so that results can be reproduced.  The
   scripts named in Appendices A through E are reproduced in full in
   Appendix F, their output data in Appendix G, and SHA-256 checksums,
   dependency versions, random seeds, and command lines in Appendix H
   and Section E.2, so that this document is self-contained.  Later
   revisions and independent evaluations SHOULD also place scripts and
   data in a public repository with a version tag matching the draft
   revision.

Cummings                  Expires 28 April 2027                [Page 22]
Internet-Draft                    TARE                      October 2026

11.5.  Validation Venue

   The toy-model simulations in this document illustrate the behavior of
   the estimator under stated assumptions.  They are not evidence of
   benefit on real networks (see Appendix B).  Quantitative performance
   claims require independent validation on production-class testbeds
   and real-world deployments.

   This document is submitted with intended status Experimental, subject
   to the IETF process, to invite review and validation.  Organizations
   with diverse network paths, hardware timestamping, and controlled
   testbeds are encouraged to conduct the evaluation described in this
   section and to report results, including negative results, to the NTP
   working group mailing list.  Results from independent implementations
   and testbeds will inform future revisions or companion documents.

12.  Open Questions

   The following questions remain open and require further study:

   *  Which packet-length definition is most useful and reproducible
      across common operating systems, timestamping hardware, and
      encapsulated paths?

   *  Which timestamp reference points are used by deployed
      implementations, and how do they change the relation between the
      slope and the link-rate difference?

   *  Which sample-selection policy provides the most stable slope
      without introducing selection bias?

   *  How should calibration uncertainty be combined with existing NTP
      dispersion, delay, source-selection, and clock-discipline logic?

   *  What minimum length spread and sample count provide reliable
      estimates under realistic noise?

   *  Which validity thresholds generalize across path types, and which
      must be deployment-specific?

   *  How much delay on asymmetric access links depends on packet length
      through scheduling or grant mechanisms, and does it violate the
      linear model?

   *  How should length-varied calibration bursts coexist with the
      constant-length request guidance of NTPv5?

Cummings                  Expires 28 April 2027                [Page 23]
Internet-Draft                    TARE                      October 2026

   *  How much of the length-dependent term do the network correction
      fields of Section 8.2 already remove in practice?

   *  Do the readings of NTPv5 and NTP over PTP in Section 8.2 (what the
      correction fields carry, where the four timestamps are taken, and
      how much of the length-dependent term the corrections remove)
      match the intent of the specification authors?  This has not been
      confirmed with them.  Comments from the authors and implementers,
      or experiments with correction-enabled clients, would settle it.

   *  Does the method offer a measurable benefit over existing filtering
      and correction mechanisms under matched measurement budgets?

   *  What prior work addresses packet-size-based estimation of clock
      offset or serialization asymmetry, and how does TARE differ?
      Sources read for this version, from abstracts or project pages
      rather than full texts: Huygens [HUYGENS] filters probe
      contamination and uses support vector machines to estimate one-way
      propagation times, and the page reviewed does not discuss packet
      size; iHorology [IHOROLOGY] bounds the offset error caused by path
      asymmetry using multiple servers and does not mention packet
      length; the fault-tolerant time synchronization project of Mills
      and Monington [MILLS-FT] applies cyclic-consistency checks across
      hosts to detect asymmetric paths and describes no length variation
      (that page is undated, and a search of the publications page of
      Mills found no paper on it); and US patent 7,023,884 (Lucent,
      found incidentally) corrects the bias of minimum-delay offset
      estimates without using packet length.  NTP over PTP [RFC10030]
      removes a receive-duration term using known link speed
      (Section 8.2).  The ITU-T G.8275.2 telecom profile [G8275.2] was
      reviewed only through its table of contents, which lists no
      section on asymmetry estimation or packet size; the body text of
      G.8275.2, and the assisted partial timing support work that it
      relies on, have not been read.  Not yet examined: interleaved
      modes [RFC9769] and packet-size effects in IEEE 1588 simulation
      studies.  No systematic patent or literature search has been
      performed.  None of the items read estimates the length-dependent
      term by regression across varied packet lengths, but that absence
      is not established.

   Until these questions are answered, TARE SHOULD be treated as an
   experimental estimator rather than a general solution to NTP
   asymmetry.

13.  References

13.1.  Normative References

Cummings                  Expires 28 April 2027                [Page 24]
Internet-Draft                    TARE                      October 2026

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC5905]  Mills, D. L., Martin, J., Ed., Burbank, J., and W. Kasch,
              "Network Time Protocol Version 4: Protocol and Algorithms
              Specification", RFC 5905, June 2010,
              <https://www.rfc-editor.org/info/rfc5905>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, May 2017,
              <https://www.rfc-editor.org/info/rfc8174>.

13.2.  Informative References

   [NTPv5]    Lichvar, M. and T. Mizrahi, "Network Time Protocol Version
              5", Work in Progress, Internet-Draft, draft-ietf-ntp-
              ntpv5-09, July 2026,
              <https://datatracker.ietf.org/doc/draft-ietf-ntp-ntpv5/>.

   [RFC7384]  Mizrahi, T., "Security Requirements of Time Protocols in
              Packet Switched Networks", RFC 7384, October 2014,
              <https://www.rfc-editor.org/info/rfc7384>.

   [RFC8915]  Franke, D., Sibold, D., Teichel, K., Dansarie, M., and R.
              Sundblad, "Network Time Security for the Network Time
              Protocol", RFC 8915, September 2020,
              <https://www.rfc-editor.org/info/rfc8915>.

   [RFC9769]  Lichvar, M. and A. Malhotra, "NTP Interleaved Modes",
              RFC 9769, May 2025,
              <https://www.rfc-editor.org/info/rfc9769>.

   [RFC10030] Lichvar, M., "Network Time Protocol (NTP) over the
              Precision Time Protocol (PTP)", RFC 10030, August 2026,
              <https://www.rfc-editor.org/info/rfc10030>.

   [HUYGENS]  Geng, Y., Liu, S., Yin, Z., Naik, A., Prabhakar, B.,
              Rosenblum, M., and A. Vahdat, "Exploiting a Natural
              Network Effect for Scalable, Fine-grained Clock
              Synchronization", USENIX NSDI 15th, pages 81-94, April
              2018,
              <https://www.usenix.org/conference/nsdi18/presentation/
              geng>.

Cummings                  Expires 28 April 2027                [Page 25]
Internet-Draft                    TARE                      October 2026

   [IHOROLOGY]
              Mani, S., Cao, Y., Barford, P., and D. Veitch, "iHorology:
              Lowering the Barrier to Microsecond-level Internet Time",
              arXiv 2011.06713, November 2020,
              <https://arxiv.org/abs/2011.06713>.

   [MILLS-FT] Mills, D. and K. Monington, "Fault-Tolerant Time
              Synchronization", Web page University of Delaware; no date
              shown, <https://www.eecis.udel.edu/~mills/fault.html>.

   [G8275.2]  ITU-T, "Precision time protocol telecom profile for phase/
              time synchronization with partial timing support from the
              network", ITU-T Recommendation G.8275.2, February 2026,
              <https://www.itu.int/rec/T-REC-G.8275.2/en>.

   [G992.5]   ITU-T, "Asymmetric digital subscriber line (ADSL)
              transceivers - Extended bandwidth ADSL2 (ADSL2plus)",
              ITU-T Recommendation G.992.5, January 2009,
              <https://www.itu.int/rec/T-REC-G.992.5/en>.

   [G984.3]   ITU-T, "Gigabit-capable passive optical networks (G-PON):
              Transmission convergence layer specification", ITU-T
              Recommendation G.984.3, January 2014,
              <https://www.itu.int/rec/T-REC-G.984.3-201401-I/en>.

   [LLD]      White, G., Sundaresan, K., and B. Briscoe, "Low Latency
              DOCSIS - Technology Overview", Work in Progress, Internet-
              Draft, draft-white-tsvwg-lld-00, March 2019,
              <https://datatracker.ietf.org/doc/html/draft-white-tsvwg-
              lld>.

Appendix A.  Preliminary Monte Carlo Simulation

   This appendix reports the preliminary toy Monte Carlo run (test date
   2026-10-23).  It is illustrative only: it is not an NTP
   implementation, not a model of the public Internet, and not evidence
   of benefit on real networks (Section 11.5).

A.1.  Reproduction

   Script: tare_monte_carlo_2026-10-23.py.  The script is self-contained
   and does not use the shared core model of Appendices B through D.
   Seed: 20261022.  Trials: 10,000.  Command line: python3 -I
   tare_monte_carlo_2026-10-23.py, which writes
   tare_monte_carlo_results_2026-10-23.csv to the current directory.
   Dependencies: numpy and pandas.

Cummings                  Expires 28 April 2027                [Page 26]
Internet-Draft                    TARE                      October 2026

A.2.  Model

   *  True clock offset: 0 us.

   *  Fixed forward/reverse propagation-delay difference: 150 us, which
      gives a fixed offset bias of 75 us.

   *  One asymmetric access-link pair, forward 10 Mbit/s and reverse 100
      Mbit/s, equal packet lengths in each direction: length-dependent
      slope 0.36 us/B.

   *  Independent exponential queueing delays in each direction, mean 50
      us.

   *  Eight candidate exchanges per packet length; the candidate with
      the smallest sum of forward and reverse queueing delay is kept.

   *  TARE: six lengths (90, 250, 500, 800, 1100, and 1400 B) and an
      ordinary least-squares line through the six kept samples.
      Baseline: one group of eight candidates at 90 B.

   *  Not modeled: clock drift, packet loss, path changes, nonlinear
      size effects, and server processing effects.

A.3.  Results

   +==================+========+========+========+========+===========+
   | Metric           | Mean   | SD     | 5th    | 95th   | Reference |
   |                  |        |        | pct    | pct    |           |
   +==================+========+========+========+========+===========+
   | Ordinary NTP-    |  107.3 |    9.0 |   92.5 |  122.3 |     107.4 |
   | style 90-byte    |        |        |        |        |           |
   | sample           |        |        |        |        |           |
   +------------------+--------+--------+--------+--------+-----------+
   | TARE zero-length |   75.0 |    6.7 |   64.1 |   85.8 |        75 |
   | extrapolated     |        |        |        |        |           |
   | intercept        |        |        |        |        |           |
   +------------------+--------+--------+--------+--------+-----------+
   | TARE estimate    |  107.4 |    6.1 |   97.4 |  117.2 |     107.4 |
   | normalized to 90 |        |        |        |        |           |
   | bytes            |        |        |        |        |           |
   +------------------+--------+--------+--------+--------+-----------+
   | Estimated slope  | 0.3600 | 0.0080 | 0.3470 | 0.3731 |      0.36 |
   | (us/byte)        |        |        |        |        |           |
   +------------------+--------+--------+--------+--------+-----------+

      Table 1: Table A-1: Monte Carlo results (us, except the slope
                               row in us/B)

Cummings                  Expires 28 April 2027                [Page 27]
Internet-Draft                    TARE                      October 2026

   The ordinary 90 B sample averages 107.3 us (standard deviation 9.0
   us).  The zero-length intercept (Output B) averages 75.0 us (standard
   deviation 6.7 us), consistent with the 75 us fixed bias.  The fitted
   value normalized to 90 B (Output A) averages 107.4 us (standard
   deviation 6.1 us), the same expected value as the ordinary sample.
   The estimated slope averages 0.3600 us/B with standard deviation
   0.0080 us/B.

   The smaller spread of Output A than of the ordinary sample (6.1 us
   against 9.0 us) is not a like-for-like comparison: TARE was given 48
   candidate exchanges and the baseline 8.  Appendix B repeats the
   comparison at equal budget.

Appendix B.  Matched-Budget Comparison (Test date: 2026-10-23)

   This appendix reports the matched-budget comparison and the design
   sweeps (test date 2026-10-23).  The question is whether the
   regression beats an ordinary estimator that is given the same number
   of candidate exchanges.  All figures come from the toy model
   described in Section B.1 and are not evidence of benefit on real
   networks.

B.1.  Setup and Reproduction

   Script: tare_matched_budget_2026-10-23.py.  It imports the shared
   core model tare_core_2026-10-23.py, which MUST be in the same
   directory.  Seed: 20261023.  Trials: 10,000 per experiment.  Command
   line: python3 -I tare_matched_budget_2026-10-23.py OUTDIR.  Outputs,
   each with the suffix _2026-10-23.csv: tare_E1_matched_budget,
   tare_E1_analytic_checks, tare_E2_design_sweep, tare_E2b_budget_sweep,
   and tare_E4_length_zero_meaning.  Dependencies: numpy, scipy, and
   pandas.

   Core model.  The measured offset error of one candidate exchange is
   the fixed bias (75 us), plus one half of the forward serialization
   time minus the reverse serialization time (0.8 us/B forward and 0.08
   us/B reverse, which gives a slope of 0.36 us/B), plus one half of the
   difference of the forward and reverse queueing delays (independent
   exponentials, mean 50 us), plus any scenario-specific term.  The true
   clock offset is 0, so an estimate is its own error against the truth.
   For each length group the candidate with the smallest sum of queueing
   delays is kept.  Exchanges are sent in sequential order unless a
   scenario says otherwise.  The reference design is the six lengths 90,
   250, 500, 800, 1100, and 1400 B with 8 candidates each (48
   candidates).

Cummings                  Expires 28 April 2027                [Page 28]
Internet-Draft                    TARE                      October 2026

   The rows of Table B-1 target different quantities: the baselines and
   the OLS fitted value at 90 B target a 90 B sample (107.4 us expected
   value), and the zero-length rows target 75 us.  The two expected
   values differ by the length-dependent bias, so the final column
   reports root-mean-square error against the true offset (0 us) for
   every row.

B.2.  Matched-Budget Results (E1)

   +===================+========+=============+=======+======+=========+
   | Estimator         | Budget | Target      | Mean  | SD   | RMSE    |
   |                   |        |             |       |      | vs      |
   |                   |        |             |       |      | true    |
   +===================+========+=============+=======+======+=========+
   | baseline, 1 group |      8 | 90 B sample | 107.4 | 8.79 |   107.8 |
   | of 8 at 90 B (as  |        |     (107.4) |       |      |         |
   | in supplied sim)  |        |             |       |      |         |
   +-------------------+--------+-------------+-------+------+---------+
   | baseline, mean of |     48 | 90 B sample | 107.4 | 3.65 |   107.4 |
   | 6 groups of 8 at  |        |     (107.4) |       |      |         |
   | 90 B              |        |             |       |      |         |
   +-------------------+--------+-------------+-------+------+---------+
   | baseline, median  |     48 | 90 B sample | 107.3 | 3.58 |   107.4 |
   | of 6 groups of 8  |        |     (107.4) |       |      |         |
   | at 90 B           |        |             |       |      |         |
   +-------------------+--------+-------------+-------+------+---------+
   | baseline, 1 group |     48 | 90 B sample | 107.4 | 3.25 |   107.5 |
   | of 48 at 90 B     |        |     (107.4) |       |      |         |
   | (min-delay of 48) |        |             |       |      |         |
   +-------------------+--------+-------------+-------+------+---------+
   | TARE OLS, fitted  |     48 | 90 B sample | 107.4 | 6.00 |   107.6 |
   | value at 90 B     |        |     (107.4) |       |      |         |
   +-------------------+--------+-------------+-------+------+---------+
   | TARE OLS, zero-   |     48 | zero-length |  75.0 | 6.58 |    75.3 |
   | length intercept  |        |        (75) |       |      |         |
   +-------------------+--------+-------------+-------+------+---------+
   | TARE Theil-Sen,   |     48 | zero-length |  75.0 | 6.90 |    75.3 |
   | zero-length       |        |        (75) |       |      |         |
   | intercept         |        |             |       |      |         |
   +-------------------+--------+-------------+-------+------+---------+

        Table 2: Table B-1: Estimators at equal and unequal budgets,
                             nominal model (us)

   At the 48-candidate budget, the minimum-delay sample of 48 candidates
   at 90 B has a standard deviation of 3.25 us.  Output A (the OLS
   fitted value at 90 B) has 6.00 us, and Output B (the OLS zero-length
   intercept) has 6.58 us, about 2.0 times the baseline.  The Theil-Sen

Cummings                  Expires 28 April 2027                [Page 29]
Internet-Draft                    TARE                      October 2026

   intercept has 6.90 us.  In this toy model Output A therefore offers
   no variance advantage over a well-formed baseline, which agrees with
   Section 4.2.

   Output B averages 75.0 us against 107.4 us for the baseline: the
   regression removes about 32.4 us of length-dependent bias, at roughly
   twice the spread.  Against the true offset, root-mean-square error is
   75.3 us for Output B and 107.5 us for the baseline.  The remaining 75
   us is the fixed propagation asymmetry, which no row of the table
   removes.

B.3.  Analytic Checks

     +=====================================================+=========+
     | Quantity                                            | Value   |
     +=====================================================+=========+
     | sd of one selected 90 B sample (from simulation)    |  8.7922 |
     +-----------------------------------------------------+---------+
     | analytic sd, mean of 6 groups = s/sqrt(6)           |  3.5894 |
     +-----------------------------------------------------+---------+
     | analytic sd, OLS intercept = s*sqrt(1/6+Lbar^2/Sxx) |  6.4631 |
     +-----------------------------------------------------+---------+
     | analytic sd, OLS fitted at 90 B                     |  5.8930 |
     +-----------------------------------------------------+---------+
     | analytic sd, OLS slope = s/sqrt(Sxx) (us/B)         |  0.0078 |
     +-----------------------------------------------------+---------+
     | sum |weight| of OLS prediction at 0 B (worst-case   |  1.5465 |
     | per-group delay amplification)                      |         |
     +-----------------------------------------------------+---------+
     | weight of 90 B group in prediction at 0 B           |  0.4916 |
     +-----------------------------------------------------+---------+
     | weight of 250 B group in prediction at 0 B          |  0.4050 |
     +-----------------------------------------------------+---------+
     | weight of 500 B group in prediction at 0 B          |  0.2696 |
     +-----------------------------------------------------+---------+
     | weight of 800 B group in prediction at 0 B          |  0.1071 |
     +-----------------------------------------------------+---------+
     | weight of 1100 B group in prediction at 0 B         | -0.0554 |
     +-----------------------------------------------------+---------+
     | weight of 1400 B group in prediction at 0 B         | -0.2179 |
     +-----------------------------------------------------+---------+
     | sum |weight| of OLS prediction at 90 B (worst-case  |  1.3883 |
     | per-group delay amplification)                      |         |
     +-----------------------------------------------------+---------+
     | weight of 90 B group in prediction at 90 B          |  0.4492 |
     +-----------------------------------------------------+---------+
     | weight of 250 B group in prediction at 90 B         |  0.3739 |
     +-----------------------------------------------------+---------+

Cummings                  Expires 28 April 2027                [Page 30]
Internet-Draft                    TARE                      October 2026

     | weight of 500 B group in prediction at 90 B         |  0.2561 |
     +-----------------------------------------------------+---------+
     | weight of 800 B group in prediction at 90 B         |  0.1149 |
     +-----------------------------------------------------+---------+
     | weight of 1100 B group in prediction at 90 B        | -0.0264 |
     +-----------------------------------------------------+---------+
     | weight of 1400 B group in prediction at 90 B        | -0.1677 |
     +-----------------------------------------------------+---------+

       Table 3: Table B-2: Analytic standard deviations and leverage
                        weights (E1 analytic checks)

   Weights are for the six-length reference design with equal group
   sizes.  The first row is a simulation result; the standard deviations
   in rows two to five scale from it.

   The analytic standard deviations of the mean of six groups, the OLS
   intercept, and the OLS fitted value at 90 B are within about 2
   percent of the simulated values in Table B-1 (for example 6.46 us
   analytic against 6.58 us simulated for the intercept).  The weights
   of the zero-length intercept are 0.4916, 0.4050, 0.2696, 0.1071,
   -0.0554, and -0.2179, which round to the two-decimal figures quoted
   in Section 9.1; their absolute values sum to 1.5465.

B.4.  Design Sweep at a Budget of 48 (E2)

   Each row spreads 48 candidates over g groups of equal size, with
   lengths evenly spaced from 90 B to the stated maximum.  These lengths
   differ from the reference design, so the six-group row with a 1400 B
   maximum is not identical to Table B-1.  The test fit requires at
   least four groups, so three groups yield no fit.

Cummings                  Expires 28 April 2027                [Page 31]
Internet-Draft                    TARE                      October 2026

   +========+=======+========+===========+===========+========+=======+
   | Groups | Cand. | Max    | Intercept | Intercept | Slope  | Slope |
   |        | per   | length | mean (us) | SD (us)   | SD     | SE <= |
   |        | group | (B)    |           |           | (us/B) | 0.02  |
   |        |       |        |           |           |        | (%)   |
   +========+=======+========+===========+===========+========+=======+
   | 3      |    16 |    250 |    no fit |         - |      - |     - |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 3      |    16 |    500 |    no fit |         - |      - |     - |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 3      |    16 |   1400 |    no fit |         - |      - |     - |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 4      |    12 |    250 |      75.0 |      10.5 | 0.0584 |  14.0 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 4      |    12 |    500 |      74.9 |       7.7 | 0.0229 |  56.7 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 4      |    12 |   1400 |      75.0 |       6.4 | 0.0072 |  99.7 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 6      |     8 |    250 |      75.0 |      11.8 | 0.0662 |   2.6 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 6      |     8 |    500 |      74.9 |       8.5 | 0.0260 |  39.4 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 6      |     8 |   1400 |      75.0 |       7.0 | 0.0081 |  99.9 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 8      |     6 |    250 |      75.1 |      12.7 | 0.0717 |   0.4 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 8      |     6 |    500 |      74.9 |       9.0 | 0.0278 |  26.9 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 8      |     6 |   1400 |      75.0 |       7.4 | 0.0086 |  99.8 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 12     |     4 |    250 |      74.9 |      13.9 | 0.0783 |   0.0 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 12     |     4 |    500 |      75.0 |      10.0 | 0.0311 |  12.7 |
   +--------+-------+--------+-----------+-----------+--------+-------+
   | 12     |     4 |   1400 |      74.9 |       8.2 | 0.0097 |  99.9 |
   +--------+-------+--------+-----------+-----------+--------+-------+

         Table 4: Table B-3: Intercept and slope spread by design

   The intercept spread falls as the length range widens.  With six
   groups of eight it is 11.8 us for lengths 90 to 250 B, 8.5 us for 90
   to 500 B, and 7.0 us for 90 to 1400 B.  These are the figures quoted
   in Section 5.3 (7.0 us and 11.8 us).  Over a 90 to 250 B range only
   2.6 percent of fits meet the slope standard-error limit of 0.02 us/B
   used by the illustrative gate of Appendix C, against 99.9 percent
   over 90 to 1400 B.

Cummings                  Expires 28 April 2027                [Page 32]
Internet-Draft                    TARE                      October 2026

B.5.  Budget Sweep (E2b)

   Six lengths with K candidates per group; the baseline here is the
   mean of six groups of K candidates at 90 B, not the single
   48-candidate minimum of Table B-1.

   +=======+========+========+========+==========+=========+==========+
   | Cand. | Budget | Output | Fitted | Baseline | Output  | Baseline |
   | per   |        | B SD   | at 90  | SD       | B RMSE  | RMSE vs  |
   | group |        |        | B SD   |          | vs true | true     |
   +=======+========+========+========+==========+=========+==========+
   | 1     |      6 |   25.8 |   23.6 |     14.4 |    79.5 |    108.2 |
   +-------+--------+--------+--------+----------+---------+----------+
   | 2     |     12 |   15.8 |   14.4 |      8.9 |    76.3 |    107.8 |
   +-------+--------+--------+--------+----------+---------+----------+
   | 4     |     24 |   10.0 |    9.1 |      5.6 |    75.5 |    107.6 |
   +-------+--------+--------+--------+----------+---------+----------+
   | 8     |     48 |    6.5 |    5.9 |      3.6 |    75.4 |    107.4 |
   +-------+--------+--------+--------+----------+---------+----------+
   | 16    |     96 |    4.3 |    3.9 |      2.5 |    75.2 |    107.5 |
   +-------+--------+--------+--------+----------+---------+----------+
   | 32    |    192 |    3.0 |    2.7 |      1.6 |    75.1 |    107.4 |
   +-------+--------+--------+--------+----------+---------+----------+

              Table 5: Table B-4: Spread against budget (us)

   The intercept spread stays between 1.77 and 1.81 times the baseline
   spread at every budget from 6 to 192 candidates; more candidates
   narrow both without changing the ratio.  In every row the intercept
   has the smaller root-mean-square error against the true offset,
   because the baseline carries the 32.4 us length-dependent bias.

B.6.  Meaning of Zero Length (E4)

   Each row changes the layer at which the length variable is counted,
   by adding symmetric overhead that the length variable does not
   include.  The prediction is the slope (0.36 us/B) multiplied by the
   omitted overhead.

Cummings                  Expires 28 April 2027                [Page 33]
Internet-Draft                    TARE                      October 2026

   +===============================+================+=======+==========+
   | Case                          | Intercept      | Error | Slope x  |
   |                               | mean           | vs 75 | overhead |
   +===============================+================+=======+==========+
   | L is effective length (as     |           75.0 | -0.02 |     0.00 |
   | simulated)                    |                |       |          |
   +-------------------------------+----------------+-------+----------+
   | L = NTP payload; +28 B IPv4/  |           85.0 | 10.00 |    10.08 |
   | UDP both ways                 |                |       |          |
   +-------------------------------+----------------+-------+----------+
   | L = UDP payload; +66 B        |           98.8 | 23.84 |    23.76 |
   | IP+Ethernet framing both ways |                |       |          |
   +-------------------------------+----------------+-------+----------+
   | L = NTP payload; +100 B       |          110.9 | 35.93 |    36.00 |
   | tunnel+framing both ways      |                |       |          |
   +-------------------------------+----------------+-------+----------+

      Table 6: Table B-5: Zero-length intercept when the counted layer
                            omits overhead (us)

   The simulated errors match the prediction to within about 0.1 us,
   which supports Section 4.4: Output B is the intercept at zero of the
   documented layer, not at zero physical bytes.

Appendix C.  Stress Tests (Test date: 2026-10-23)

   This appendix reports the stress and sensitivity tests (test date
   2026-10-23).  Each scenario perturbs the nominal toy model in one way
   that Section 11.1 says an evaluation must cover.  The results are
   sensitivities of this toy model, not predictions, and each scenario
   is a single run with a fixed seed.

C.1.  Setup and Reproduction

   Script: tare_stress_2026-10-23.py.  It imports
   tare_core_2026-10-23.py from the same directory.  Seed: 20261023.
   Trials: 10,000 per scenario; 25 scenarios.  Command line: python3 -I
   tare_stress_2026-10-23.py OUTDIR.  Outputs:
   tare_stress_estimators_2026-10-23.csv (150 rows, six estimators per
   scenario) and tare_stress_validity_2026-10-23.csv (25 rows).
   Table C-1 reproduces four of the six estimators; the baseline of one
   group of eight and the OLS fitted value at 90 B are in the CSV only.

   *  base6: the matched baseline, the mean of six groups of eight
      candidates at 90 B (48 candidates).  Expected value 107.4 us.

Cummings                  Expires 28 April 2027                [Page 34]
Internet-Draft                    TARE                      October 2026

   *  Output B (OLS): the zero-length intercept of the OLS line through
      six length groups of eight candidates (48 candidates).  Expected
      value 75 us.

   *  Theil-Sen: the zero-length intercept of a Theil-Sen line through
      the same samples.  Expected value 75 us.

   *  OLS plus time term: the zero-length intercept of the model of
      Section 4.3 with a first-order time term.  Expected value 75 us.

   *  Illustrative validity gate (test settings, not recommendations):
      at least five accepted groups, slope standard error at most 0.02
      us/B, and a quadratic-term p-value of at least 0.01.

   *  A fit is bad when Output B is more than 25 us from 75 us, about
      3.8 nominal standard deviations.  The false-valid rate is the
      fraction of all trials in which the gate accepted a bad fit.

   *  Exchanges are in sequential order unless the scenario says
      randomized.

C.2.  Estimator Results

   +========================+========+=========+===========+===========+
   | Scenario               | base6  | Output  | Theil-Sen | OLS +     |
   |                        |        | B (OLS) |           | time term |
   +========================+========+=========+===========+===========+
   | nominal                |  107.4 |    75.0 |      75.0 |      75.0 |
   |                        |  (3.6) |   (6.6) |     (6.9) |    (45.4) |
   +------------------------+--------+---------+-----------+-----------+
   | drift 0.1 ppm,         |  107.4 |    73.0 |      72.9 |      74.3 |
   | sequential order       |  (3.7) |   (6.5) |     (6.8) |    (45.3) |
   +------------------------+--------+---------+-----------+-----------+
   | drift 1 ppm,           |  107.4 |    54.7 |      54.5 |      75.5 |
   | sequential order       |  (3.8) |   (6.8) |     (7.3) |    (45.1) |
   +------------------------+--------+---------+-----------+-----------+
   | drift 5 ppm,           |  107.4 |   -27.0 |     -27.7 |      75.2 |
   | sequential order       |  (5.9) |  (10.7) |    (12.7) |    (43.3) |
   +------------------------+--------+---------+-----------+-----------+
   | drift 1 ppm,           |  107.4 |    75.1 |      75.1 |      75.0 |
   | randomized order       |  (6.4) |  (12.0) |    (13.8) |     (8.3) |
   +------------------------+--------+---------+-----------+-----------+
   | drift 5 ppm,           |  107.3 |    75.4 |      75.3 |      75.1 |
   | randomized order       | (26.9) |  (51.0) |    (60.1) |     (8.2) |
   +------------------------+--------+---------+-----------+-----------+
   | path step +50 us mid-  |  132.9 |    79.0 |      82.3 |      98.3 |
   | window, sequential     | (15.3) |  (20.6) |    (22.4) |    (92.7) |
   +------------------------+--------+---------+-----------+-----------+

Cummings                  Expires 28 April 2027                [Page 35]
Internet-Draft                    TARE                      October 2026

   | path step +50 us mid-  |  133.1 |   100.5 |     100.8 |     100.6 |
   | window, randomized     | (17.0) |  (21.7) |    (24.2) |    (21.7) |
   +------------------------+--------+---------+-----------+-----------+
   | shaper: +40 us         |  107.5 |    69.6 |      70.5 |      56.1 |
   | forward for L>=1100 B  |  (3.6) |   (6.6) |     (7.4) |    (52.0) |
   +------------------------+--------+---------+-----------+-----------+
   | quadratic forward      |  107.4 |    72.4 |      72.6 |      66.5 |
   | term, +30 us at 1400   |  (3.7) |   (6.6) |     (6.9) |    (44.6) |
   | B                      |        |         |           |           |
   +------------------------+--------+---------+-----------+-----------+
   | fragmentation at       |  107.4 |    70.3 |      71.4 |      55.6 |
   | >=1300 B (+30 us, +20  |  (3.7) |   (6.5) |     (6.9) |    (56.6) |
   | B hdr)                 |        |         |           |           |
   +------------------------+--------+---------+-----------+-----------+
   | iid packet loss 20%    |  107.4 |    75.0 |      75.0 |      74.7 |
   |                        |  (4.3) |   (7.7) |     (7.9) |    (51.1) |
   +------------------------+--------+---------+-----------+-----------+
   | size-dependent loss    |  107.3 |    74.9 |      74.9 |      75.0 |
   | 2%..32%                |  (3.8) |   (7.1) |     (7.4) |    (50.4) |
   +------------------------+--------+---------+-----------+-----------+
   | length-label noise     |  107.4 |    96.1 |      79.7 |     174.0 |
   | 10%                    |  (3.7) |  (52.5) |    (28.2) |   (119.9) |
   +------------------------+--------+---------+-----------+-----------+
   | queue asymmetry fwd    |  112.6 |    80.2 |      79.4 |      80.2 |
   | 150 us / rev 20 us     |  (4.8) |   (8.8) |     (8.9) |    (57.3) |
   +------------------------+--------+---------+-----------+-----------+
   | length-dependent       |  107.6 |    74.9 |      74.9 |      74.3 |
   | forward queue (x2 at   |  (3.9) |   (8.1) |     (8.2) |    (62.1) |
   | 700 B)                 |        |         |           |           |
   +------------------------+--------+---------+-----------+-----------+
   | outliers 5% (mean +2   |  107.4 |    75.0 |      75.0 |      75.7 |
   | ms, one direction)     |  (3.8) |   (6.8) |     (7.1) |    (46.3) |
   +------------------------+--------+---------+-----------+-----------+
   | outliers 30%           |  107.4 |    75.0 |      75.0 |      74.7 |
   |                        |  (4.8) |   (8.7) |     (8.9) |    (57.4) |
   +------------------------+--------+---------+-----------+-----------+
   | symmetric              |  131.2 |    98.8 |      98.8 |      98.8 |
   | encapsulation +66 B    |  (3.6) |   (6.5) |     (6.9) |    (45.0) |
   | (L = payload)          |        |         |           |           |
   +------------------------+--------+---------+-----------+-----------+
   | forward-only tunnel    |  127.4 |    95.0 |      95.0 |      94.7 |
   | +50 B                  |  (3.6) |   (6.6) |     (6.9) |    (42.8) |
   +------------------------+--------+---------+-----------+-----------+
   | NTPv4-style fixed 90   |  107.4 |    71.3 |      71.4 |      71.0 |
   | B response             |  (3.6) |   (6.6) |     (6.9) |    (46.6) |
   +------------------------+--------+---------+-----------+-----------+
   | server rx timestamp    |  107.8 |    75.1 |      75.1 |      75.2 |
   | lag 0.01 us/B          |  (3.7) |   (6.6) |     (6.9) |    (44.3) |

Cummings                  Expires 28 April 2027                [Page 36]
Internet-Draft                    TARE                      October 2026

   +------------------------+--------+---------+-----------+-----------+
   | adversary: fwd delay   |  109.7 |    75.0 |      75.0 |      74.7 |
   | 0.05 us/B on every     |  (3.6) |   (6.5) |     (6.9) |    (45.4) |
   | packet                 |        |         |           |           |
   +------------------------+--------+---------+-----------+-----------+
   | adversary: +200 us     |  207.4 |   124.1 |      88.8 |     -24.3 |
   | fwd on 90 B packets    |  (3.6) |   (6.5) |    (12.4) |   (153.5) |
   | only                   |        |         |           |           |
   +------------------------+--------+---------+-----------+-----------+
   | adversary: +200 us     |  107.4 |    53.1 |      68.5 |      -8.8 |
   | fwd on 1400 B packets  |  (3.7) |   (6.6) |     (8.4) |   (156.6) |
   | only                   |        |         |           |           |
   +------------------------+--------+---------+-----------+-----------+

      Table 7: Table C-1: Mean (standard deviation) per scenario (us)

C.3.  Validity Gate Results

   +==================+==========+=======+=======+============+========+
   | Scenario         | Rejected | Bad   | False | Accepted   | Mean   |
   |                  | (%)      | fits  | valid | mean error | slope  |
   |                  |          | (%)   | (%)   | vs 75 (us) | (us/   |
   |                  |          |       |       |            | B)     |
   +==================+==========+=======+=======+============+========+
   | nominal          |      1.1 |   0.1 |   0.1 |       -0.0 |  0.360 |
   +------------------+----------+-------+-------+------------+--------+
   | drift 0.1 ppm,   |      0.9 |   0.1 |   0.1 |       -2.0 |  0.363 |
   | sequential order |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | drift 1 ppm,     |      1.4 |  22.9 |  22.5 |      -20.3 |  0.389 |
   | sequential order |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | drift 5 ppm,     |     12.3 | 100.0 |  87.6 |     -101.9 |  0.508 |
   | sequential order |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | drift 1 ppm,     |     11.1 |   3.4 |   3.1 |        0.1 |  0.360 |
   | randomized order |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | drift 5 ppm,     |     99.0 |  63.6 |   0.8 |       -2.1 |  0.359 |
   | randomized order |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | path step +50 us |     14.4 |  19.2 |  16.2 |        3.8 |  0.391 |
   | mid-window,      |          |       |       |            |        |
   | sequential       |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | path step +50 us |     48.6 |  51.7 |  27.2 |       26.2 |  0.360 |
   | mid-window,      |          |       |       |            |        |
   | randomized       |          |       |       |            |        |

Cummings                  Expires 28 April 2027                [Page 37]
Internet-Draft                    TARE                      October 2026

   +------------------+----------+-------+-------+------------+--------+
   | shaper: +40 us   |      1.6 |   0.3 |   0.3 |       -5.5 |  0.378 |
   | forward for      |          |       |       |            |        |
   | L>=1100 B        |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | quadratic        |      1.3 |   0.2 |   0.2 |       -2.6 |  0.371 |
   | forward term,    |          |       |       |            |        |
   | +30 us at 1400 B |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | fragmentation at |      3.2 |   0.2 |   0.2 |       -4.7 |  0.372 |
   | >=1300 B (+30    |          |       |       |            |        |
   | us, +20 B hdr)   |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | iid packet loss  |      1.8 |   0.4 |   0.3 |        0.0 |  0.360 |
   | 20%              |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | size-dependent   |      1.7 |   0.1 |   0.1 |       -0.1 |  0.360 |
   | loss 2%..32%     |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | length-label     |     45.5 |  31.4 |   0.6 |        0.1 |  0.330 |
   | noise 10%        |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | queue asymmetry  |      3.6 |   2.2 |   1.7 |        5.0 |  0.360 |
   | fwd 150 us / rev |          |       |       |            |        |
   | 20 us            |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | length-dependent |      4.6 |   0.4 |   0.4 |       -0.1 |  0.362 |
   | forward queue    |          |       |       |            |        |
   | (x2 at 700 B)    |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | outliers 5%      |      1.1 |   0.1 |   0.1 |        0.0 |  0.360 |
   | (mean +2 ms, one |          |       |       |            |        |
   | direction)       |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | outliers 30%     |      3.0 |   0.9 |   0.7 |       -0.0 |  0.360 |
   +------------------+----------+-------+-------+------------+--------+
   | symmetric        |      0.9 |  42.0 |  41.7 |       23.8 |  0.360 |
   | encapsulation    |          |       |       |            |        |
   | +66 B (L =       |          |       |       |            |        |
   | payload)         |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | forward-only     |      1.2 |  21.4 |  21.1 |       20.0 |  0.360 |
   | tunnel +50 B     |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | NTPv4-style      |      0.9 |   0.2 |   0.2 |       -3.7 |  0.400 |
   | fixed 90 B       |          |       |       |            |        |
   | response         |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+

Cummings                  Expires 28 April 2027                [Page 38]
Internet-Draft                    TARE                      October 2026

   | server rx        |      1.1 |   0.1 |   0.1 |        0.1 |  0.365 |
   | timestamp lag    |          |       |       |            |        |
   | 0.01 us/B        |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | adversary: fwd   |      1.1 |   0.1 |   0.1 |        0.0 |  0.385 |
   | delay 0.05 us/B  |          |       |       |            |        |
   | on every packet  |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | adversary: +200  |    99.96 | 99.98 |   0.0 |       41.8 |  0.313 |
   | us fwd on 90 B   |          |       |       |            |        |
   | packets only     |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+
   | adversary: +200  |     99.4 |  30.9 |   0.1 |      -20.5 |  0.416 |
   | us fwd on 1400 B |          |       |       |            |        |
   | packets only     |          |       |       |            |        |
   +------------------+----------+-------+-------+------------+--------+

           Table 8: Table C-2: Behaviour of the illustrative gate

C.4.  Observations

   *  Sequential-order drift.  A drift of 1 ppm moves Output B by -20.3
      us and the gate accepts a bad fit in 22.5 percent of trials; the
      gate rejects only 1.4 percent of fits (Sections 4.3 and 7).  At 5
      ppm the shift is -102.0 us.  The mean slope rises from 0.360 to
      0.389 us/B at 1 ppm.

   *  Randomized order removes that bias (Output B mean 75.1 us at 1
      ppm) but raises the spread from 6.6 us to 12.0 us.  At 5 ppm
      randomized the spread is 51.0 us and the gate rejects 99.0 percent
      of fits.

   *  The time-term model is unbiased under drift in both orders (means
      75.5 and 75.0 us at 1 ppm).  In sequential order the time term is
      nearly collinear with length and the spread is 45.4 us at nominal;
      in randomized order at 1 ppm it is 8.3 us.

   *  Path step.  A 50 us step in the middle of the window shifts every
      estimator by about 25 us in randomized order (Output B mean 100.5
      us, base6 133.1 us).  The gate rejects 48.6 percent of fits and
      the false-valid rate is 27.2 percent.

   *  Size-dependent behaviour.  A 40 us shaper step for lengths of 1100
      B and above, a 30 us quadratic term at 1400 B, and fragmentation
      at 1300 B and above move Output B by -5.4, -2.6, and -4.7 us.  The
      gate rejects 1.6, 1.3, and 3.2 percent of fits, so these steps are
      mostly undetected (Section 7).  The shifts are below the nominal
      spread of 6.6 us.

Cummings                  Expires 28 April 2027                [Page 39]
Internet-Draft                    TARE                      October 2026

   *  Packet loss.  Independent loss of 20 percent and size-dependent
      loss from 2 to 32 percent add no bias; Output B spread rises to
      7.7 and 7.1 us.

   *  Length-label noise.  With 10 percent of length labels wrong,
      Output B averages 96.1 us with spread 52.5 us.  Theil-Sen is less
      affected (79.7 us, spread 28.2 us).  The gate rejects 45.5 percent
      of fits.

   *  Queueing asymmetry and outliers.  Forward and reverse queue means
      of 150 and 20 us shift every estimator by about +5 us (Output B
      80.2 us).  Outliers at 5 and 30 percent add no bias (Output B
      spread 6.8 and 8.7 us).  A forward queue that grows with length
      (twice the mean at 700 B) leaves Output B at 74.9 us.

   *  Encapsulation.  A symmetric 66 B overhead outside the counted
      length shifts Output B, the baseline, and the fitted value alike
      by about 23.8 us, and a forward-only 50 B tunnel by about 20.0 us.
      The gate rejects about 0.9 and 1.2 percent, and the false-valid
      rates are 41.7 and 21.1 percent.

   *  Server behaviour.  When the response length is fixed at 90 B while
      the request length varies, the fitted slope is 0.400 us/B instead
      of 0.360 and Output B is 71.3 us (Section 4.1).  A receive-
      timestamp lag of 0.01 us/B moves the mean slope to 0.365 us/B and
      Output B to 75.1 us, against 107.8 us for base6.

   *  Adversarial delay.  Forward delay of 0.05 us/B on every packet
      leaves Output B at 75.0 us and moves base6 to 109.7 us.  Adding
      200 us of forward delay to 90 B packets only moves Output B by
      +49.1 us and base6 by +100.0 us.  Adding it to 1400 B packets only
      moves Output B by -21.9 us and leaves base6 at 107.4 us.  The gate
      rejects 99.96 and 99.4 percent of fits in those two cases
      (Section 9.1).  An adversary that knows the length schedule is
      evaluated in Section D.7.

C.5.  Gate Against Length Counted as Payload Only (Test date:
      2026-10-24)

   Section 4.4 states that the illustrative gate does not detect a
   length variable that omits overhead.  Tables C-1 and C-2 cover one
   case (66 B).  This section repeats the test for 28 B and 100 B and
   adds a control with no overhead.  Script:
   tare_supplement_2026-10-24.py (Section E.2).  Seed: 20261024.
   Trials: 10,000 per row.  The gate and the 25 us threshold for a bad
   fit are those of Section C.1.  The overhead is symmetric and lies
   outside the counted length.

Cummings                  Expires 28 April 2027                [Page 40]
Internet-Draft                    TARE                      October 2026

   +==========+===========+========+========+==========+=======+=======+
   | Overhead | Predicted | Output | Spread | Gate     | More  | False |
   | (B)      | shift     | B      | (us)   | rejected | than  | valid |
   |          | (us)      | error  |        | (%)      | 25    | (%)   |
   |          |           | vs 75  |        |          | us    |       |
   |          |           | (us)   |        |          | off   |       |
   |          |           |        |        |          | (%)   |       |
   +==========+===========+========+========+==========+=======+=======+
   | 0        |       0.0 |    0.0 |    6.5 |      1.1 |   0.1 |   0.1 |
   +----------+-----------+--------+--------+----------+-------+-------+
   | 28       |      10.1 |   10.1 |    6.6 |      0.9 |   1.6 |   1.6 |
   +----------+-----------+--------+--------+----------+-------+-------+
   | 66       |      23.8 |   23.7 |    6.6 |      1.0 |  41.8 |  41.4 |
   +----------+-----------+--------+--------+----------+-------+-------+
   | 100      |      36.0 |   35.9 |    6.5 |      1.0 |  95.3 |  94.4 |
   +----------+-----------+--------+--------+----------+-------+-------+

      Table 9: Table C-3: Illustrative gate against symmetric overhead
             outside the counted length (test date 2026-10-24)

   Predicted shift is the slope (0.36 us/B) times the overhead.  At 28 B
   the shift is below the 25 us threshold, so the false-valid rate says
   little there; the gate rejection rate is the informative column.

   *  The gate rejects 0.9, 1.0, and 1.0 percent of fits at 28, 66, and
      100 B, against 1.1 percent with no overhead.  The rejection rate
      does not respond to the overhead, because the added delay is
      linear in the counted length and so enters the intercept without
      changing the fit quality.

   *  The mean errors (10.1, 23.7, and 35.9 us) match the predicted
      shifts (10.1, 23.8, and 36.0 us), and the fitted slope is
      unchanged at 0.360 us/B.

Appendix D.  Pooled-Slope Variant (Test dates: 2026-10-23 and
             2026-10-24)

   This appendix reports a variant that the body of this document does
   not specify: the slope is estimated from many pooled calibration
   windows, and the offset is a single minimum-delay sample at 90 B
   corrected by that slope.  It is reported as an evaluated alternative
   to the single-window intercept of Section 5, so that its behaviour
   can be compared under the same toy model and the same impairments.
   Sections 5 through 7 do not require it.

Cummings                  Expires 28 April 2027                [Page 41]
Internet-Draft                    TARE                      October 2026

D.1.  Definition and Reproduction

   *  Calibration: M = 20 windows, pooled.  Each window has six lengths,
      two replicate groups per length, and four candidates per group (48
      candidates); the minimum-delay candidate of each group is kept.
      Order within a window is randomized unless a scenario says
      otherwise.

   *  Slope: the pooled OLS slope b_hat over all 12 x M selected points.

   *  Offset (hybrid): one minimum-delay sample of 48 candidates at 90
      B, minus b_hat x 90.  No intercept is extrapolated: slope error is
      multiplied by 90 B, not by the leverage of the fit.

   *  Gate: a pooled lack-of-fit F-test against the pure error of the
      replicates (reject when p < 0.01) AND slope significance, |b_hat|
      >= 3 standard errors.  When the gate fails the estimator falls
      back to the plain 90 B minimum-delay sample of 48 candidates.

   *  Budget accounting: the calibration costs 20 x 48 = 960 candidates,
      amortized over R = 96 offset estimates, which adds 10 candidates
      per estimate.  The fully loaded baseline is therefore a minimum-
      delay sample of 58 candidates (base58).

   *  Comparators: base58, and the single-window OLS intercept of
      Section 5 (48 candidates, with and without the illustrative gate
      of Appendix C).

   *  False valid: the gate passed and the estimate is more than 25 us
      from 75 us.  For the single-window comparator, the original gate
      accepted a fit that is more than 25 us from 75 us.

   *  Packet-loss, delay-confined-to-90 B, and schedule-aware adversary
      scenarios, which were not run on 2026-10-23, are reported in
      Section D.7.

   Script: tare_hybrid_2026-10-23.py.  It imports
   tare_core_2026-10-23.py from the same directory.  Seed: 20261023.
   Trials: 5,000 per scenario (2,500 for the pooling-depth experiment).
   Command line: python3 -I tare_hybrid_2026-10-23.py OUTDIR.  Outputs,
   each with the suffix _2026-10-23.csv: tare_hybrid_estimators (per-
   estimator distribution summaries, not reproduced here),
   tare_hybrid_validity, tare_hybrid_slope_sweep, tare_hybrid_power,
   tare_hybrid_pooling_depth, and tare_hybrid_leverage.  Dependencies:
   numpy, scipy, and pandas.

Cummings                  Expires 28 April 2027                [Page 42]
Internet-Draft                    TARE                      October 2026

   Error columns.  The base58 error is measured against 107.4 us, the
   expected value of a 90 B sample.  The hybrid and single-window OLS
   errors are measured against 75 us.  Against the true offset (0 us)
   the nominal values are 107.4 us for the baseline and 75 us for the
   other two; the fixed 75 us propagation asymmetry is not removed by
   any of them.

D.2.  Impairment Suite

      +==================+========+========+==========+=============+
      | Scenario         | base58 | Hybrid | Hybrid   | Hybrid      |
      |                  |        |        | fallback | false valid |
      +==================+========+========+==========+=============+
      | nominal          |   -0.0 |    0.1 |      0.9 |         0.0 |
      |                  |  (3.0) |  (3.2) |          |             |
      +------------------+--------+--------+----------+-------------+
      | drift 1 ppm,     |   -0.1 |   -1.4 |      0.1 |         3.8 |
      | sequential (neg. | (16.9) | (14.2) |          |             |
      | control)         |        |        |          |             |
      +------------------+--------+--------+----------+-------------+
      | drift 1 ppm,     |    0.1 |   -0.0 |      1.1 |         3.1 |
      | randomized       | (16.8) | (14.3) |          |             |
      +------------------+--------+--------+----------+-------------+
      | drift 5 ppm,     |   -0.8 |   -0.4 |      1.4 |        77.8 |
      | randomized       | (83.3) | (69.1) |          |             |
      +------------------+--------+--------+----------+-------------+
      | path step +50    |   25.4 |   25.2 |      0.1 |        50.3 |
      | us, randomized   | (25.2) | (25.2) |          |             |
      +------------------+--------+--------+----------+-------------+
      | path step +50    |   25.0 |   24.3 |      0.0 |        51.4 |
      | us, sequential   | (25.2) | (25.2) |          |             |
      | (neg. control)   |        |        |          |             |
      +------------------+--------+--------+----------+-------------+
      | shaper +10 us    |    0.0 |   -0.4 |      5.1 |         0.0 |
      | fwd for L>=1100  |  (3.0) |  (3.2) |          |             |
      +------------------+--------+--------+----------+-------------+
      | shaper +40 us    |    0.0 |   -1.5 |     97.9 |         0.0 |
      | fwd for L>=1100  |  (2.9) |  (3.2) |          |             |
      +------------------+--------+--------+----------+-------------+
      | quadratic fwd    |    0.0 |   -0.2 |      1.0 |         0.0 |
      | term +5 us at    |  (2.9) |  (3.2) |          |             |
      | 1400 B           |        |        |          |             |
      +------------------+--------+--------+----------+-------------+
      | quadratic fwd    |    0.0 |   -1.0 |      6.7 |         0.0 |
      | term +30 us at   |  (2.9) |  (3.2) |          |             |
      | 1400 B           |        |        |          |             |
      +------------------+--------+--------+----------+-------------+
      | fragmentation at |   -0.0 |   -1.1 |    99.96 |         0.0 |

Cummings                  Expires 28 April 2027                [Page 43]
Internet-Draft                    TARE                      October 2026

      | >=1300 B         |  (2.9) |  (3.2) |          |             |
      +------------------+--------+--------+----------+-------------+
      | length-label     |    0.0 |    3.5 |      0.5 |         0.0 |
      | noise 10%        |  (2.9) |  (3.4) |          |             |
      +------------------+--------+--------+----------+-------------+
      | symmetric +66 B  |   23.8 |   23.8 |      0.9 |        31.9 |
      | overhead         |  (2.9) |  (3.3) |          |             |
      | (L=payload)      |        |        |          |             |
      +------------------+--------+--------+----------+-------------+
      | forward-only     |   20.0 |   19.9 |      1.0 |         5.7 |
      | tunnel +50 B     |  (3.0) |  (3.2) |          |             |
      +------------------+--------+--------+----------+-------------+
      | NTPv4-style      |    0.0 |   -3.6 |      1.1 |         0.0 |
      | fixed 90 B       |  (2.9) |  (3.2) |          |             |
      | response         |        |        |          |             |
      +------------------+--------+--------+----------+-------------+
      | queue asymmetry  |    0.4 |    0.6 |      1.0 |         0.0 |
      | fwd150/rev20     |  (3.3) |  (3.8) |          |             |
      +------------------+--------+--------+----------+-------------+
      | length-dependent |    0.1 |   -0.5 |      1.4 |         0.0 |
      | fwd queue (x2 at |  (3.1) |  (3.4) |          |             |
      | 700 B)           |        |        |          |             |
      +------------------+--------+--------+----------+-------------+
      | outliers 5%      |   -0.0 |    0.0 |      0.8 |         0.0 |
      | (mean +2 ms)     |  (3.0) |  (3.3) |          |             |
      +------------------+--------+--------+----------+-------------+
      | adversary: fwd   |    2.4 |    0.0 |      1.2 |         0.0 |
      | delay 0.05 us/B, |  (2.9) |  (3.2) |          |             |
      | every packet     |        |        |          |             |
      +------------------+--------+--------+----------+-------------+
      | adversary: +20   |    0.0 |   -0.5 |     43.3 |         0.0 |
      | us fwd on 1400 B |  (2.9) |  (3.2) |          |             |
      | only             |        |        |          |             |
      +------------------+--------+--------+----------+-------------+
      | adversary: +200  |    0.0 |   -5.1 |    100.0 |         0.0 |
      | us fwd on 1400 B |  (2.9) |  (3.2) |          |             |
      | only             |        |        |          |             |
      +------------------+--------+--------+----------+-------------+

         Table 10: Table D-1: Hybrid error (standard deviation) and
         gate behaviour per scenario (us; fallback and false-valid
                                in percent)

   Hybrid fallback is the share of trials in which the lack-of-fit or
   slope test failed.

Cummings                  Expires 28 April 2027                [Page 44]
Internet-Draft                    TARE                      October 2026

    +===========================+===================+=================+
    | Scenario                  | OLS single window | OLS false valid |
    +===========================+===================+=================+
    | nominal                   |         0.0 (6.6) |             0.1 |
    +---------------------------+-------------------+-----------------+
    | drift 1 ppm, sequential   |       -20.4 (6.8) |            23.7 |
    | (neg. control)            |                   |                 |
    +---------------------------+-------------------+-----------------+
    | drift 1 ppm, randomized   |        0.0 (12.2) |             3.6 |
    +---------------------------+-------------------+-----------------+
    | drift 5 ppm, randomized   |       -0.4 (50.0) |             0.6 |
    +---------------------------+-------------------+-----------------+
    | path step +50 us,         |       25.6 (21.9) |            27.8 |
    | randomized                |                   |                 |
    +---------------------------+-------------------+-----------------+
    | path step +50 us,         |        4.2 (20.6) |            16.3 |
    | sequential (neg. control) |                   |                 |
    +---------------------------+-------------------+-----------------+
    | shaper +10 us fwd for     |        -1.4 (6.5) |             0.1 |
    | L>=1100                   |                   |                 |
    +---------------------------+-------------------+-----------------+
    | shaper +40 us fwd for     |        -5.4 (6.5) |             0.2 |
    | L>=1100                   |                   |                 |
    +---------------------------+-------------------+-----------------+
    | quadratic fwd term +5 us  |        -0.4 (6.6) |             0.1 |
    | at 1400 B                 |                   |                 |
    +---------------------------+-------------------+-----------------+
    | quadratic fwd term +30 us |        -2.6 (6.5) |             0.1 |
    | at 1400 B                 |                   |                 |
    +---------------------------+-------------------+-----------------+
    | fragmentation at >=1300 B |        -4.8 (6.3) |             0.1 |
    +---------------------------+-------------------+-----------------+
    | length-label noise 10%    |       22.4 (53.9) |             0.5 |
    +---------------------------+-------------------+-----------------+
    | symmetric +66 B overhead  |        23.8 (6.5) |            40.8 |
    | (L=payload)               |                   |                 |
    +---------------------------+-------------------+-----------------+
    | forward-only tunnel +50 B |        20.0 (6.7) |            21.2 |
    +---------------------------+-------------------+-----------------+
    | NTPv4-style fixed 90 B    |        -3.7 (6.7) |             0.2 |
    | response                  |                   |                 |
    +---------------------------+-------------------+-----------------+
    | queue asymmetry fwd150/   |         5.1 (8.6) |             1.6 |
    | rev20                     |                   |                 |
    +---------------------------+-------------------+-----------------+
    | length-dependent fwd      |        -0.0 (8.1) |             0.3 |
    | queue (x2 at 700 B)       |                   |                 |
    +---------------------------+-------------------+-----------------+

Cummings                  Expires 28 April 2027                [Page 45]
Internet-Draft                    TARE                      October 2026

    | outliers 5% (mean +2 ms)  |        -0.2 (6.7) |             0.0 |
    +---------------------------+-------------------+-----------------+
    | adversary: fwd delay 0.05 |        -0.0 (6.5) |             0.1 |
    | us/B, every packet        |                   |                 |
    +---------------------------+-------------------+-----------------+
    | adversary: +20 us fwd on  |        -2.2 (6.6) |             0.1 |
    | 1400 B only               |                   |                 |
    +---------------------------+-------------------+-----------------+
    | adversary: +200 us fwd on |       -21.8 (6.7) |             0.2 |
    | 1400 B only               |                   |                 |
    +---------------------------+-------------------+-----------------+

       Table 11: Table D-1b: Single-window OLS intercept in the same
                   scenarios (us; false-valid in percent)

   *  Nominal.  The hybrid error is +0.07 us with spread 3.21 us,
      against 2.99 us for the fully loaded baseline and 6.57 us for the
      single-window OLS intercept.  Relative to base58 the hybrid adds
      about 8 percent to the spread while removing the 32.4 us length-
      dependent bias.

   *  Drift.  In randomized order at 1 ppm the hybrid spread is 14.3 us,
      against 16.8 us for base58 and 12.2 us for the single-window OLS.
      The sequential-order scenario is not a like-for-like control for
      the hybrid: its 12-group layout repeats the six lengths twice per
      window, whereas the single-window comparator uses six groups in
      sequence, so the hybrid error there (-1.4 us), much smaller than
      the single-window error (-20.4 us), is not evidence that pooling
      removes the drift confound; the layout effect was not isolated.

   *  Path step.  A 50 us step is not removed: the hybrid error is +25.2
      us, the same as the baseline, and the false-valid rate is 50.3
      percent.

   *  Size-dependent behaviour.  The lack-of-fit test rejects 97.9
      percent of calibrations for a 40 us shaper step and 99.96 percent
      for fragmentation, where the single-window gate rejects 1.6 and
      2.9 percent.  A 30 us quadratic term is detected in only 6.7
      percent.

   *  Encapsulation.  Overhead outside the counted length is not
      detected by either gate: a symmetric 66 B overhead shifts the
      hybrid by +23.8 us (false-valid 31.9 percent, single window 40.8
      percent).  The shift is just below the 25 us threshold, so the
      false-valid rate reflects the spread of each estimator more than
      the size of its bias.

Cummings                  Expires 28 April 2027                [Page 46]
Internet-Draft                    TARE                      October 2026

   *  Length-label noise.  The hybrid error is +3.5 us with spread 3.4
      us, against +22.4 us and 53.9 us for the single-window OLS.

   *  Adversarial delay.  A forward delay of 0.05 us/B on every packet
      leaves the hybrid at +0.002 us and moves base58 by +2.35 us.
      Delay of 200 us confined to 1400 B packets is rejected by the
      lack-of-fit test in 100.0 percent of calibrations.

D.3.  Applicability Sweep

   The true slope is varied by changing the reverse-link serialization
   time; the forward link is unchanged.  The expected value of a 90 B
   sample is 75 us plus 90 B times the slope, which is the target of the
   baseline.  The hybrid targets 75 us at every slope.

    +============+=============+========+========+==========+========+
    | True slope | 90 B sample | base58 | Hybrid | Hybrid   | OLS    |
    | (us/B)     | target      |        |        | fallback | single |
    |            |             |        |        |          | window |
    +============+=============+========+========+==========+========+
    | 0.00       |        75.0 |    0.1 |   -0.0 |     99.8 |   -0.1 |
    |            |             |  (2.9) |  (3.2) |          |  (6.7) |
    +------------+-------------+--------+--------+----------+--------+
    | 0.02       |        76.8 |   -0.0 |   -0.0 |      0.8 |   -0.0 |
    |            |             |  (2.9) |  (3.2) |          |  (6.6) |
    +------------+-------------+--------+--------+----------+--------+
    | 0.05       |        79.5 |   -0.0 |    0.1 |      1.0 |   -0.1 |
    |            |             |  (2.9) |  (3.2) |          |  (6.5) |
    +------------+-------------+--------+--------+----------+--------+
    | 0.10       |        84.0 |    0.0 |    0.0 |      1.1 |    0.0 |
    |            |             |  (2.9) |  (3.3) |          |  (6.5) |
    +------------+-------------+--------+--------+----------+--------+
    | 0.20       |        93.0 |   -0.0 |   -0.0 |      1.0 |    0.0 |
    |            |             |  (2.9) |  (3.2) |          |  (6.4) |
    +------------+-------------+--------+--------+----------+--------+
    | 0.36       |       107.4 |   -0.0 |   -0.0 |      0.9 |    0.0 |
    |            |             |  (3.0) |  (3.2) |          |  (6.5) |
    +------------+-------------+--------+--------+----------+--------+

       Table 12: Table D-2: Error (standard deviation) against true
                     slope (us; fallback in percent)

Cummings                  Expires 28 April 2027                [Page 47]
Internet-Draft                    TARE                      October 2026

   At a true slope of zero the slope test fails in 99.8 percent of
   calibrations and the hybrid falls back to the plain baseline, which
   is the intended behaviour when there is nothing to correct.  At the
   smallest non-zero slope tested (0.02 us/B, a 1.8 us difference at 90
   B) the fallback rate is 0.8 percent, so the slope is detected.  As
   the slope grows the baseline target moves from 75 to 107.4 us while
   the hybrid stays at 75 us.

D.4.  Detection Power

      +================+=============+========+========+===========+
      | Impairment     | Lack-of-fit | Hybrid | OLS    | OLS gate  |
      |                | rejection   | error  | error  | rejection |
      +================+=============+========+========+===========+
      | shaper us at   |         1.0 |  -0.12 |  -0.38 |       1.1 |
      | >=1100 B = 2   |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | shaper us at   |         1.3 |  -0.15 |  -0.54 |       1.1 |
      | >=1100 B = 5   |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | shaper us at   |         5.2 |  -0.49 |  -1.42 |       0.9 |
      | >=1100 B = 10  |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | shaper us at   |        32.3 |  -0.74 |  -2.72 |       1.0 |
      | >=1100 B = 20  |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | shaper us at   |        98.0 |  -1.58 |  -5.35 |       1.9 |
      | >=1100 B = 40  |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | quadratic us   |         0.8 |  -0.03 |  -0.15 |       1.2 |
      | at 1400 B = 2  |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | quadratic us   |         1.0 |  -0.17 |  -0.34 |       0.9 |
      | at 1400 B = 5  |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | quadratic us   |         1.2 |  -0.31 |  -0.67 |       1.1 |
      | at 1400 B = 10 |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | quadratic us   |         5.7 |  -0.91 |  -2.62 |       1.2 |
      | at 1400 B = 30 |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | adv us on 1400 |         1.2 |  -0.05 |  -0.22 |       1.1 |
      | B only = 2     |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | adv us on 1400 |         1.8 |  -0.14 |  -0.49 |       1.3 |
      | B only = 5     |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | adv us on 1400 |         6.6 |  -0.33 |  -1.00 |       1.2 |

Cummings                  Expires 28 April 2027                [Page 48]
Internet-Draft                    TARE                      October 2026

      | B only = 10    |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | adv us on 1400 |        42.8 |  -0.57 |  -2.32 |       1.3 |
      | B only = 20    |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | adv us on 1400 |       100.0 |  -1.25 |  -5.56 |       3.4 |
      | B only = 50    |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+
      | adv us on 1400 |       100.0 |  -5.03 | -21.90 |      99.3 |
      | B only = 200   |             |        |        |           |
      +----------------+-------------+--------+--------+-----------+

           Table 13: Table D-3: Lack-of-fit rejection and error
            against impairment size (us; rejection in percent)

   The rejection rate with a 2 us impairment is 1.0 percent, close to
   the 1 percent test level.  Rejection reaches 32.3 percent for a 20 us
   shaper step and 98.0 percent for 40 us.  For delay confined to 1400 B
   it is 42.8 percent at 20 us and 100.0 percent at 50 us.  The
   quadratic term is the weakest case, at 5.7 percent for 30 us.  Where
   rejection is below roughly one half, the hybrid error is under one
   microsecond in magnitude and smaller than the single-window error in
   every row.

D.5.  Pooling Depth

   +====+=======+========+========+========+========+========+========+
   | M  | Cand. | Slope  | Slope  | Hybrid | Hybrid | base48 | False  |
   |    |       | mean   | SD     | mean   | SD     | SD     | reject |
   |    |       | (us/B) | (us/B) | (us)   | (us)   | (us)   | (%)    |
   +====+=======+========+========+========+========+========+========+
   | 5  |   240 | 0.3600 | 0.0039 |   75.0 |   3.21 |   3.19 |    0.8 |
   +----+-------+--------+--------+--------+--------+--------+--------+
   | 10 |   480 | 0.3600 | 0.0027 |   75.0 |   3.23 |   3.22 |    0.9 |
   +----+-------+--------+--------+--------+--------+--------+--------+
   | 20 |   960 | 0.3600 | 0.0020 |   75.1 |   3.26 |   3.26 |    0.7 |
   +----+-------+--------+--------+--------+--------+--------+--------+
   | 40 |  1920 | 0.3600 | 0.0014 |   75.0 |   3.30 |   3.29 |    1.0 |
   +----+-------+--------+--------+--------+--------+--------+--------+

      Table 14: Table D-4: Effect of the number of pooled windows M,
                              nominal model

   Cand. is the number of calibration candidates, 48 x M.

   The slope spread falls with the square root of M.  At M = 20 it is
   0.0020 us/B, which multiplied by 90 B adds about 0.18 us in
   quadrature; the hybrid spread (3.26 us) is therefore almost the

Cummings                  Expires 28 April 2027                [Page 49]
Internet-Draft                    TARE                      October 2026

   spread of the 48-candidate baseline (3.26 us).  The lack-of-fit test
   falsely rejects 0.7 to 1.0 percent of nominal calibrations at the 1
   percent level.

D.6.  Leverage

    +==================+=========================+===================+
    | Length (B)       | Single-window intercept | Hybrid correction |
    +==================+=========================+===================+
    | 90               |                  0.4916 |           -0.0424 |
    +------------------+-------------------------+-------------------+
    | 250              |                  0.4050 |           -0.0311 |
    +------------------+-------------------------+-------------------+
    | 500              |                  0.2696 |           -0.0134 |
    +------------------+-------------------------+-------------------+
    | 800              |                  0.1071 |            0.0078 |
    +------------------+-------------------------+-------------------+
    | 1100             |                 -0.0554 |            0.0290 |
    +------------------+-------------------------+-------------------+
    | 1400             |                 -0.2179 |            0.0502 |
    +------------------+-------------------------+-------------------+
    | sum of |weights| |                  1.5465 |            0.1738 |
    +------------------+-------------------------+-------------------+

         Table 15: Table D-5: Weight of each length class on the
                   output, six-length reference design

   If an attacker shifts the measured offset of one length class, the
   single-window intercept moves by up to 1.55 times the largest shift
   (Section 9.1).  The correction applied by the hybrid moves by up to
   0.17 times, because the slope error is multiplied by 90 B rather than
   by the leverage of the fit.  The hybrid output also carries a weight
   of one on its 90 B offset sample, so delay confined to 90 B packets
   affects it as it affects the baseline; that case is reported in
   Section D.7.

D.7.  Loss, Delay at 90 B, and a Schedule-Aware Adversary (Test date:
      2026-10-24)

   This section reports three cases that were not run on 2026-10-23:
   packet loss, delay confined to 90 B packets, and an adversary that
   knows the length schedule.  Script: tare_supplement_2026-10-24.py
   (Section E.2).  Seed: 20261024.  Trials: 5,000 per scenario.  The
   design is that of Section D.1, except that the pooled fit gives lost
   candidates zero weight, so loss can be modelled.  Errors are measured
   as in Table D-1.

Cummings                  Expires 28 April 2027                [Page 50]
Internet-Draft                    TARE                      October 2026

   The schedule-aware adversary adds forward delay s x (L - 90) to every
   packet of length L bytes, with s of 0.2, 0.5, and 1 us/B.  The added
   delay is zero at 90 B and exactly linear in length.  It changes a
   measured offset by half the one-way delay, so an estimator that takes
   its slope from the fit and its offset from the 90 B sample, or from
   the zero-length intercept, is predicted to shift by -45 x s us.  The
   predicted shift for the 90 B-only cases is half the added delay.

Cummings                  Expires 28 April 2027                [Page 51]
Internet-Draft                    TARE                      October 2026

    +=================+======+========+==========+========+===========+
    | Scenario        |base58| Hybrid | Hybrid   | Hybrid | Predicted |
    |                 |      |        | fallback | false  | shift     |
    |                 |      |        |          | valid  |           |
    +=================+======+========+==========+========+===========+
    | nominal         |  -0.0|   -0.0 |      0.8 |    0.0 |         - |
    | (control)       | (2.9)|  (3.2) |          |        |           |
    +-----------------+------+--------+----------+--------+-----------+
    | iid packet loss |  -0.0|    0.1 |      1.0 |    0.0 |         - |
    | 20%             | (3.3)|  (3.6) |          |        |           |
    +-----------------+------+--------+----------+--------+-----------+
    | size-dependent  |   0.0|    0.0 |      1.1 |    0.0 |         - |
    | loss 2%..32%    | (3.0)|  (3.3) |          |        |           |
    +-----------------+------+--------+----------+--------+-----------+
    | +5 us fwd on 90 |   2.5|    2.6 |      2.2 |    0.0 |       2.5 |
    | B packets only  | (2.9)|  (3.2) |          |        |           |
    +-----------------+------+--------+----------+--------+-----------+
    | +20 us fwd on   |  10.0|   10.4 |     56.8 |    0.0 |      10.0 |
    | 90 B packets    | (2.9)|  (3.2) |          |        |           |
    | only            |      |        |          |        |           |
    +-----------------+------+--------+----------+--------+-----------+
    | +200 us fwd on  | 100.0|  104.2 |    100.0 |    0.0 |     100.0 |
    | 90 B packets    | (2.9)|  (3.2) |          |        |           |
    | only            |      |        |          |        |           |
    +-----------------+------+--------+----------+--------+-----------+
    | schedule-aware: |  -0.1|   -9.0 |      0.5 |    0.0 |      -9.0 |
    | fwd delay 0.2   | (3.0)|  (3.3) |          |        |           |
    | us/B x (L-90)   |      |        |          |        |           |
    +-----------------+------+--------+----------+--------+-----------+
    | schedule-aware: |  -0.0|  -22.5 |      0.8 |   19.5 |     -22.5 |
    | fwd delay 0.5   | (3.0)|  (3.2) |          |        |           |
    | us/B x (L-90)   |      |        |          |        |           |
    +-----------------+------+--------+----------+--------+-----------+
    | schedule-aware: |   0.0|  -45.0 |      1.0 |   99.0 |     -45.0 |
    | fwd delay 1 us/ | (2.9)|  (3.2) |          |        |           |
    | B x (L-90)      |      |        |          |        |           |
    +-----------------+------+--------+----------+--------+-----------+

      Table 16: Table D-6: Hybrid error (standard deviation) and gate
         behaviour in the supplementary scenarios (us; fallback and
                          false-valid in percent)

   Predicted shift applies to the hybrid and to the single-window OLS
   intercept for the schedule-aware rows, and to the baseline and the
   hybrid before fallback for the 90 B-only rows.

Cummings                  Expires 28 April 2027                [Page 52]
Internet-Draft                    TARE                      October 2026

   +=============================+===================+=================+
   | Scenario                    | OLS single window | OLS false valid |
   +=============================+===================+=================+
   | nominal (control)           |         0.1 (6.7) |             0.1 |
   +-----------------------------+-------------------+-----------------+
   | iid packet loss 20%         |         0.1 (7.6) |             0.3 |
   +-----------------------------+-------------------+-----------------+
   | size-dependent loss         |        -0.1 (7.1) |             0.1 |
   | 2%..32%                     |                   |                 |
   +-----------------------------+-------------------+-----------------+
   | +5 us fwd on 90 B           |         1.3 (6.5) |             0.1 |
   | packets only                |                   |                 |
   +-----------------------------+-------------------+-----------------+
   | +20 us fwd on 90 B          |         5.1 (6.7) |             0.3 |
   | packets only                |                   |                 |
   +-----------------------------+-------------------+-----------------+
   | +200 us fwd on 90 B         |        49.2 (6.6) |             0.1 |
   | packets only                |                   |                 |
   +-----------------------------+-------------------+-----------------+
   | schedule-aware: fwd         |        -8.9 (6.5) |             0.9 |
   | delay 0.2 us/B x (L-90)     |                   |                 |
   +-----------------------------+-------------------+-----------------+
   | schedule-aware: fwd         |       -22.5 (6.6) |            34.3 |
   | delay 0.5 us/B x (L-90)     |                   |                 |
   +-----------------------------+-------------------+-----------------+
   | schedule-aware: fwd         |       -44.9 (6.5) |            98.7 |
   | delay 1 us/B x (L-90)       |                   |                 |
   +-----------------------------+-------------------+-----------------+

       Table 17: Table D-6b: Single-window OLS intercept in the same
                   scenarios (us; false-valid in percent)

   *  Packet loss.  With the loss-aware fit, 20 percent independent loss
      and size-dependent loss from 2 to 32 percent leave the hybrid
      error at +0.06 and +0.04 us, with spread 3.6 and 3.3 us against
      3.2 us in the nominal control.  The fallback rate is 1.0 and 1.1
      percent, against 0.8 percent.

   *  Delay confined to 90 B packets.  The hybrid takes its offset from
      a 90 B sample, so it inherits this delay as the baseline does.
      Forward delay of 5, 20, and 200 us on 90 B packets only moves
      base58 by +2.5, +10.0, and +100.0 us, and the hybrid before any
      fallback by +2.6, +10.4, and +104.2 us.  The lack-of-fit test
      rejects 2.2, 56.8, and 100.0 percent of calibrations.  When it
      rejects, the hybrid falls back to the plain 90 B sample, which
      carries the same shift as base58, so the gate flags the condition
      but does not remove the error.  The single-window OLS intercept
      moves by +1.3, +5.1, and +49.2 us.

Cummings                  Expires 28 April 2027                [Page 53]
Internet-Draft                    TARE                      October 2026

   *  Schedule-aware adversary.  The hybrid moves by -9.0, -22.5, and
      -45.0 us for s of 0.2, 0.5, and 1 us/B (predicted -9.0, -22.5, and
      -45.0 us), and the single-window OLS intercept by -8.9, -22.5, and
      -44.9 us.  The 90 B baseline moves by at most 0.05 us, which is
      within sampling noise.  The hybrid fallback rate is 0.5, 0.8, and
      1.0 percent, against 0.8 percent at nominal, so the gate does not
      respond.  The hybrid false-valid rate (more than 25 us from 75 us)
      is 0.0, 19.5, and 99.0 percent.

   *  Cost to the adversary.  For s = 0.5 us/B the longest packets (1400
      B) are delayed by about 655 us and the 90 B packets are not
      delayed.  A test for departure from linearity cannot separate
      delay of this form from a real length-dependent serialization
      effect, because the delay enters the fitted slope.  The hybrid and
      the single-window intercept share this weakness; the plain 90 B
      baseline does not have it, since it never uses the slope.
      Detecting it would need information outside the fit, such as a
      bound on a physically plausible slope for the path.

Appendix E.  Traceability of Figures Quoted in the Body

   This appendix lists every numerical result quoted in the body of this
   document and the table in this document that supports it, so that a
   reader can check each figure against the data.  Every row was checked
   against the CSV outputs when this revision was prepared.

E.1.  Figures Quoted in the Body

    +=========+=====================+======================+=========+
    | Section | Figure quoted in    | Supporting table     | Value   |
    |         | the text            |                      | in the  |
    |         |                     |                      | data    |
    +=========+=====================+======================+=========+
    | 4.1     |  request-only slope |           Table C-2, |   0.400 |
    |         | 0.400 against 0.360 | NTPv4-style fixed 90 |         |
    |         |                us/B |           B response |         |
    +---------+---------------------+----------------------+---------+
    | 4.1     | nominal slope 0.360 |   Table C-2, nominal |   0.360 |
    |         |                us/B |                      |         |
    +---------+---------------------+----------------------+---------+
    | 4.2     |        Output A and |        Table B-1 (48 |   107.4 |
    |         |     ordinary sample |          candidates) |     and |
    |         |            107.4 us |                      |   107.4 |
    +---------+---------------------+----------------------+---------+
    | 4.2     |    (second value of |        Table B-1 (48 |   107.4 |
    |         |           the pair) |          candidates) |         |
    +---------+---------------------+----------------------+---------+
    | 4.2     |   fixed propagation |  Table B-1, Output B |    75.0 |

Cummings                  Expires 28 April 2027                [Page 54]
Internet-Draft                    TARE                      October 2026

    |         |     asymmetry 75 us |                      |         |
    +---------+---------------------+----------------------+---------+
    | 4.3     |    1 ppm sequential |     Table C-1 / C-2, |   -20.3 |
    |         | drift shifts Output |          drift 1 ppm |         |
    |         |   B by about -20 us |           sequential |         |
    +---------+---------------------+----------------------+---------+
    | 4.3     |  gate rejected 1.4% |   Table C-2, drift 1 |    1.4% |
    |         |        of such fits |       ppm sequential |         |
    +---------+---------------------+----------------------+---------+
    | 4.4     |       overhead 28 B |            Table B-5 |    10.0 |
    |         |   retained as about |                      |         |
    |         |              +10 us |                      |         |
    +---------+---------------------+----------------------+---------+
    | 4.4     |       overhead 66 B |            Table B-5 |    23.8 |
    |         |   retained as about |                      |         |
    |         |              +24 us |                      |         |
    +---------+---------------------+----------------------+---------+
    | 4.4     |      overhead 100 B |            Table B-5 |    35.9 |
    |         |   retained as about |                      |         |
    |         |              +36 us |                      |         |
    +---------+---------------------+----------------------+---------+
    | 4.4     | gate did not detect | Table C-2, symmetric |    0.9% |
    |         |       the 66 B case |  encapsulation +66 B |         |
    |         |                     |           (rejected) |         |
    +---------+---------------------+----------------------+---------+
    | 4.4     | gate did not detect |            Table C-3 | 0.9% vs |
    |         |       28 B overhead |                      |    1.1% |
    |         | (rejection near the |                      |         |
    |         |   no-overhead rate) |                      |         |
    +---------+---------------------+----------------------+---------+
    | 4.4     | gate did not detect |            Table C-3 | 1.0% vs |
    |         |       66 B overhead |                      |    1.1% |
    |         | (rejection near the |                      |         |
    |         |   no-overhead rate) |                      |         |
    +---------+---------------------+----------------------+---------+
    | 4.4     | gate did not detect |            Table C-3 | 1.0% vs |
    |         |      100 B overhead |                      |    1.1% |
    |         | (rejection near the |                      |         |
    |         |   no-overhead rate) |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     |      schedule-aware |            Table D-6 |   -22.5 |
    |         |  delay s = 0.5 us/B |                      |         |
    |         | moves the hybrid by |                      |         |
    |         |      about -22.5 us |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     |     ...and the 90 B |    Table D-6, base58 |   -0.02 |
    |         |   baseline does not |                      |         |
    |         |                move |                      |         |

Cummings                  Expires 28 April 2027                [Page 55]
Internet-Draft                    TARE                      October 2026

    +---------+---------------------+----------------------+---------+
    | 9.1     |      ...without the |            Table D-6 | 0.8% vs |
    |         |       fallback rate |                      |    0.8% |
    |         |        rising above |                      |         |
    |         |             nominal |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     |     longest packets |    arithmetic: 0.5 x |     655 |
    |         |    delayed by about |          (1400 - 90) |         |
    |         |   655 us at s = 0.5 |                      |         |
    +---------+---------------------+----------------------+---------+
    | 5.3     |    intercept SD 7.0 | Table B-3, 6 groups, |     7.0 |
    |         |   us, 90-1400 B, 48 |           max 1400 B |         |
    |         |           exchanges |                      |         |
    +---------+---------------------+----------------------+---------+
    | 5.3     |   intercept SD 11.8 | Table B-3, 6 groups, |    11.8 |
    |         |        us, 90-250 B |            max 250 B |         |
    +---------+---------------------+----------------------+---------+
    | 7       |  gate rejection for |            Table C-2 |    1.6% |
    |         |  shaper within 1.3% |                      |         |
    |         |             to 3.2% |                      |         |
    +---------+---------------------+----------------------+---------+
    | 7       |  gate rejection for |            Table C-2 |    1.3% |
    |         |    curvature within |                      |         |
    |         |        1.3% to 3.2% |                      |         |
    +---------+---------------------+----------------------+---------+
    | 7       |  gate rejection for |            Table C-2 |    3.2% |
    |         |       fragmentation |                      |         |
    |         | within 1.3% to 3.2% |                      |         |
    +---------+---------------------+----------------------+---------+
    | 7       |    sequential-order |     Table C-2, drift |  0.9% / |
    |         | drift detected only |        0.1, 1, 5 ppm |  1.4% / |
    |         |     at large values |           sequential |   12.3% |
    +---------+---------------------+----------------------+---------+
    | 9.1     | intercept weight of |            Table B-2 | +0.4916 |
    |         |      the 90 B group |                      |         |
    |         |               +0.49 |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     | intercept weight of |            Table B-2 | +0.4050 |
    |         |     the 250 B group |                      |         |
    |         |               +0.40 |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     | intercept weight of |            Table B-2 | +0.2696 |
    |         |     the 500 B group |                      |         |
    |         |               +0.27 |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     | intercept weight of |            Table B-2 | +0.1071 |
    |         |     the 800 B group |                      |         |
    |         |               +0.11 |                      |         |

Cummings                  Expires 28 April 2027                [Page 56]
Internet-Draft                    TARE                      October 2026

    +---------+---------------------+----------------------+---------+
    | 9.1     | intercept weight of |            Table B-2 | -0.0554 |
    |         |    the 1100 B group |                      |         |
    |         |               -0.06 |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     | intercept weight of |            Table B-2 | -0.2179 |
    |         |    the 1400 B group |                      |         |
    |         |               -0.22 |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     |     sum of absolute |            Table B-2 |  1.5465 |
    |         |  weights about 1.55 |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     | one-way delay bound |  Table B-2 (1.5465 / |   0.773 |
    |         |        about 0.77 d |                   2) |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     |    200 us on 1400 B |            Table C-1 |   -21.9 |
    |         | only moves Output B |                      |         |
    |         |         by -21.9 us |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     |   ...and leaves the |     Table C-1, base6 |    -0.0 |
    |         |       90 B baseline |                      |         |
    |         |           unchanged |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     | 200 us on 90 B only |            Table C-1 |   +49.1 |
    |         |   moves Output B by |                      |         |
    |         |        about +49 us |                      |         |
    +---------+---------------------+----------------------+---------+
    | 9.1     | ...and the baseline |     Table C-1, base6 |  +100.0 |
    |         |          by +100 us |                      |         |
    +---------+---------------------+----------------------+---------+

      Table 18: Table E-1: Figures in Sections 4 through 9 and their
                                 sources

E.2.  Provenance of the Tables

   Scripts, seeds, and outputs.  Every output file name carries the test
   date of its script as a suffix (_2026-10-23.csv, or _2026-10-24.csv
   for the supplementary script), which is omitted below.

   *  tare_monte_carlo_2026-10-23.py: seed 20261022; 10,000 trials;
      output tare_monte_carlo_results.

   *  tare_matched_budget_2026-10-23.py: seed 20261023; 10,000 trials;
      outputs tare_E1_matched_budget, tare_E1_analytic_checks,
      tare_E2_design_sweep, tare_E2b_budget_sweep, and
      tare_E4_length_zero_meaning.

Cummings                  Expires 28 April 2027                [Page 57]
Internet-Draft                    TARE                      October 2026

   *  tare_stress_2026-10-23.py: seed 20261023; 10,000 trials per
      scenario; outputs tare_stress_estimators and tare_stress_validity.

   *  tare_hybrid_2026-10-23.py: seed 20261023; 5,000 trials per
      scenario; outputs tare_hybrid_estimators, tare_hybrid_validity,
      tare_hybrid_slope_sweep, tare_hybrid_power,
      tare_hybrid_pooling_depth, and tare_hybrid_leverage.

   *  tare_supplement_2026-10-24.py: seed 20261024; 10,000 trials per
      gate row and 5,000 per hybrid scenario; outputs
      tare_supplement_gate and tare_supplement_hybrid.

   *  tare_core_2026-10-23.py: the shared model imported by the matched-
      budget, stress, hybrid, and supplementary scripts; it has no seed
      and no output file.

   The tables in this document were produced from these CSV files.  When
   this revision was prepared, the Monte Carlo, matched-budget (E1),
   stress, and hybrid validity and power scripts were rerun with Python
   3.13.17, numpy 2.5.3, pandas 3.0.5, and SciPy 1.18.1, and reproduced
   the previously saved CSV files byte for byte.  The remaining output
   files (the E1 analytic checks, E2, E2b, E4, and the hybrid
   estimators, slope sweep, pooling depth, and leverage files) were
   generated in that rerun.

   The supplementary script of 2026-10-24 was run twice with the same
   seed and produced identical CSV files, using the same Python and
   package versions.

   The scripts are reproduced in Appendix F, the output files in
   Appendix G, and the SHA-256 checksum of every file, with the
   reproduction procedure, in Appendix H.

Appendix F.  Source Code (Test dates: 2026-10-23 and 2026-10-24)

   This appendix reproduces, without change, the scripts that produced
   every result in Appendices A through E, so that this document is
   self-contained.  The matched-budget, stress, hybrid, and
   supplementary scripts import tare_core_2026-10-23.py, which MUST be
   in the same directory as the script that imports it.  Lines longer
   than 69 characters are folded as described in RFC 8792 (the double-
   backslash form), and each block that was folded begins with the
   header line that RFC requires.  Appendix H gives the unfolding
   procedure and the SHA-256 checksum of each file.  Extract the files
   from the XML or HTML form of this document, not from paginated text,
   because page breaks in the text form interrupt the blocks.

Cummings                  Expires 28 April 2027                [Page 58]
Internet-Draft                    TARE                      October 2026

F.1.  tare_core_2026-10-23.py

   Shared toy model and estimators; imported by the matched-budget,
   stress, hybrid, and supplementary scripts (Appendices B through D).

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   #!/usr/bin/env python3
   # TARE review core model (toy) -- test date: 2026-10-23
   """TARE review core model (toy). Test date: 2026-10-23.

   Shared simulation and estimator code for the 2026-10-23 review tests\
   \ of
   draft-tare-offset-regression-00. This is a TOY model: it is not an N\
   \TP
   implementation and it is not real-network evidence.

   Model (same physics as the supplied tare_monte_carlo.py):
     measured offset error = BIAS0 + 0.5*(SER_F*Lf - SER_R*Lr) + 0.5*(q\
   \f - qr) + extras
     true clock offset     = 0 (so an estimate IS its own error against\
   \ the truth)
     forward link 10 Mbps, reverse link 100 Mbps -> slope 0.36 us/byte
     BIAS0 = 75 us (fixed propagation asymmetry of 150 us)
     qf, qr: exponential queueing delays, mean 50 us unless a scenario \
   \overrides
     per length group: K candidate exchanges, keep the one with minimum\
   \ qf+qr
   """
   import warnings
   import numpy as np
   from scipy import stats

   TEST_DATE = "2026-10-23"
   RF, RR = 10e6, 100e6                 # forward / reverse bottleneck \
   \rates (bit/s)
   SER_F = 8.0 / RF * 1e6               # us per byte, forward (0.8)
   SER_R = 8.0 / RR * 1e6               # us per byte, reverse (0.08)
   SLOPE = 0.5 * (SER_F - SER_R)        # 0.36 us/byte
   BIAS0 = 75.0                         # us, fixed propagation-asymmet\
   \ry offset
   LENGTHS = np.array([90., 250., 500., 800., 1100., 1400.])
   BASE_LEN = 90.0

   DEFAULT = dict(
       order="sequential", dt=1.0, drift_ppm=0.0, step_us=0.0,
       shaper_us=0.0, shaper_from=1100.0, quad_us=0.0,
       loss=0.0, loss_size=0.0, label_swap=0.0,

Cummings                  Expires 28 April 2027                [Page 59]
Internet-Draft                    TARE                      October 2026

       qf_mean=50.0, qr_mean=50.0, q_len_scale=0.0,
       outlier_p=0.0, outlier_mean=2000.0,
       frag_from=None, frag_delay=30.0,
       overhead_sym=0.0, overhead_f=0.0, overhead_r=0.0, resp_fixed=Non\
   \e,
       ts_lag=0.0, adv_slope=0.0, adv_len=None, adv_us=0.0,
   )

   def simulate(p, rng, lengths, k, trials):
       """One calibration window per trial: len(lengths) groups of k ca\
   \ndidate exchanges."""
       q = {**DEFAULT, **p}
       lengths = np.asarray(lengths, float)
       g = len(lengths)
       shape = (trials, g, k)
       Lx = lengths.reshape(1, g, 1)
       slots = np.arange(g * k) * q["dt"]
       if q["order"] == "sequential":
           t = np.broadcast_to(slots.reshape(1, g, k), shape)
       else:  # randomized interleaving of all exchanges
           perm = np.argsort(rng.random((trials, g * k)), axis=1)
           t = slots[perm].reshape(shape)
       tc = slots.mean()

       qf = rng.exponential(1.0, shape) * q["qf_mean"] * (1.0 + q["q_le\
   \n_scale"] * Lx / 700.0)
       qr = rng.exponential(1.0, shape) * q["qr_mean"]
       if q["outlier_p"] > 0:
           hit = rng.random(shape) < q["outlier_p"]
           side = rng.random(shape) < 0.5
           extra = rng.exponential(1.0, shape) * q["outlier_mean"] * hit
           qf = qf + extra * side
           qr = qr + extra * (~side)

       Lf = Lx + q["overhead_sym"] + q["overhead_f"]
       Lr = Lx + q["overhead_sym"] + q["overhead_r"]
       if q["resp_fixed"] is not None:           # NTPv4-style: respons\
   \e length does not mirror request
           Lr = np.zeros_like(Lx) + q["resp_fixed"] + q["overhead_sym"]\
   \ + q["overhead_r"]
       extra_f = np.zeros_like(Lx)
       if q["shaper_us"]:
           extra_f = extra_f + q["shaper_us"] * (Lx >= q["shaper_from"])
       if q["quad_us"]:
           extra_f = extra_f + q["quad_us"] * (Lx / 1400.0) ** 2
       if q["frag_from"] is not None:
           fr = (Lx >= q["frag_from"]).astype(float)

Cummings                  Expires 28 April 2027                [Page 60]
Internet-Draft                    TARE                      October 2026

           extra_f = extra_f + q["frag_delay"] * fr
           Lf = Lf + 20.0 * fr
           Lr = Lr + 20.0 * fr
       extra_f = extra_f + q["ts_lag"] * Lx + q["adv_slope"] * Lx
       if q["adv_len"] is not None:
           extra_f = extra_f + q["adv_us"] * (Lx == q["adv_len"])

       off = BIAS0 + 0.5 * (SER_F * Lf - SER_R * Lr) + 0.5 * (qf - qr) \
   \+ 0.5 * extra_f
       off = off + q["drift_ppm"] * (t - tc)          # 1 ppm == 1 us/s\
   \ of offset drift
       if q["step_us"]:
           tstep = slots[rng.integers(0, g * k, size=trials)].reshape(t\
   \rials, 1, 1)
           off = off + q["step_us"] * (t >= tstep)

       key = qf + qr                                  # what a min-dela\
   \y filter can observe
       p_lost = q["loss"] + q["loss_size"] * Lx / 1400.0
       if np.any(p_lost > 0):
           key = np.where(rng.random(shape) < p_lost, np.inf, key)
       idx = np.argmin(key, axis=2)[..., None]
       valid = np.isfinite(np.take_along_axis(key, idx, axis=2)[..., 0])
       y = np.take_along_axis(off, idx, axis=2)[..., 0]
       tsel = np.take_along_axis(np.broadcast_to(t, shape), idx, axis=2\
   \)[..., 0] - tc
       L = np.broadcast_to(lengths[None, :], (trials, g)).copy()
       if q["label_swap"] > 0:                        # recorded length\
   \ label wrong (errors-in-variables)
           swap = rng.random((trials, g)) < q["label_swap"]
           other = (np.arange(g)[None, :] + rng.integers(1, g, size=(tr\
   \ials, g))) % g
           L = np.where(swap, np.take_along_axis(L, other, axis=1), L)
       return dict(y=y, t=tsel, L=L, valid=valid)

   def wls(X, y, w):
       """Batched 0/1-weighted least squares. X (T,g,m), y (T,g), w (T,\
   \g)."""
       m = X.shape[2]
       Xw = X * w[..., None]
       A = np.einsum("tgi,tgj->tij", Xw, X) + 1e-9 * np.eye(m)[None]
       b = np.einsum("tgi,tg->ti", Xw, y)
       n = w.sum(1)
       ok = n >= m + 1
       A = np.where(ok[:, None, None], A, np.eye(m)[None])
       coef = np.linalg.solve(A, b[..., None])[..., 0]
       res = (y - np.einsum("tgi,ti->tg", X, coef)) * w

Cummings                  Expires 28 April 2027                [Page 61]
Internet-Draft                    TARE                      October 2026

       s2 = (res ** 2).sum(1) / np.maximum(n - m, 1)
       return coef, s2, np.linalg.inv(A), n, ok

   def theil_sen(L, y, v):
       g = L.shape[1]
       sl = []
       for i in range(g):
           for j in range(i + 1, g):
               ok = v[:, i] & v[:, j] & (L[:, i] != L[:, j])
               d = np.where(L[:, j] != L[:, i], L[:, j] - L[:, i], 1.0)
               sl.append(np.where(ok, (y[:, j] - y[:, i]) / d, np.nan))
       S = np.stack(sl, 1)
       with warnings.catch_warnings():
           warnings.simplefilter("ignore", RuntimeWarning)
           b1 = np.nanmedian(S, axis=1)
           b0 = np.nanmedian(np.where(v, y - b1[:, None] * L, np.nan), \
   \axis=1)
       return b1, b0

   def run_estimators(p, rng, lengths=LENGTHS, k=8, trials=10000):
       lengths = np.asarray(lengths, float)
       g = len(lengths)
       s = simulate(p, rng, lengths, k, trials)
       b = simulate(p, rng, np.full(g, BASE_LEN), k, trials)      # bas\
   \eline: every group at 90 B
       y, L, v, t = s["y"], s["L"], s["valid"], s["t"]
       w = v.astype(float)
       one = np.ones_like(L)
       c2, s2, A2, n, ok2 = wls(np.stack([one, L], 2), y, w)
       ok2 = ok2 & (n >= 4)
       out = dict(n_groups=n)
       out["tare0"] = np.where(ok2, c2[:, 0], np.nan)
       out["tare90"] = np.where(ok2, c2[:, 0] + BASE_LEN * c2[:, 1], np\
   \.nan)
       out["slope"] = np.where(ok2, c2[:, 1], np.nan)
       out["slope_se"] = np.where(ok2, np.sqrt(s2 * A2[:, 1, 1]), np.na\
   \n)
       c3, _, _, n3, ok3 = wls(np.stack([one, L, t], 2), y, w)
       out["tare_t0"] = np.where(ok3 & (n3 >= 5), c3[:, 0], np.nan)
       Lk = L / 1000.0
       cq, s2q, Aq, nq, okq = wls(np.stack([one, Lk, Lk ** 2], 2), y, w)
       tq = cq[:, 2] / np.sqrt(np.maximum(s2q * Aq[:, 2, 2], 1e-30))
       dfq = nq - 3
       out["p_curv"] = np.where(okq & (dfq >= 1), 2 * stats.t.sf(np.abs\
   \(tq), np.maximum(dfq, 1)), np.nan)
       _, b0 = theil_sen(L, y, v)

Cummings                  Expires 28 April 2027                [Page 62]
Internet-Draft                    TARE                      October 2026

       out["ts0"] = np.where(n >= 4, b0, np.nan)
       yb, vb = b["y"], b["valid"]
       out["base1"] = np.where(vb[:, 0], yb[:, 0], np.nan)
       with warnings.catch_warnings():
           warnings.simplefilter("ignore", RuntimeWarning)
           out["base6"] = np.nanmean(np.where(vb, yb, np.nan), axis=1)
       return out

   def accept(out, se_max=0.02, p_min=0.01, n_min=5):
       """Illustrative validity gate used ONLY for these tests (thresho\
   \lds are not recommendations)."""
       with np.errstate(invalid="ignore"):
           return (out["n_groups"] >= n_min) & (out["slope_se"] <= se_m\
   \ax) & (out["p_curv"] >= p_min)

   def summarize(scenario, estimator, est, target):
       e = est[np.isfinite(est)]
       if len(e) < 2:
           return dict(test_date=TEST_DATE, scenario=scenario, estimato\
   \r=estimator, n=len(e))
       return dict(test_date=TEST_DATE, scenario=scenario, estimator=es\
   \timator, n=len(e),
                   mean=e.mean(), sd=e.std(ddof=1), bias_vs_nominal_tar\
   \get=e.mean() - target,
                   rmse_vs_true_offset=float(np.sqrt(np.mean(e ** 2))),
                   p95_abs_err_vs_true=float(np.quantile(np.abs(e), 0.9\
   \5)))

                     Figure 1: tare_core_2026-10-23.py

F.2.  tare_monte_carlo_2026-10-23.py

   Self-contained preliminary Monte Carlo run (Appendix A).

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   #!/usr/bin/env python3
   # TARE toy Monte Carlo -- test date: 2026-10-23
   """Reproducible toy Monte Carlo simulation for TARE. Test date: 2026\
   \-10-23.

   This is an illustrative model, not a complete NTP implementation or a
   validated model of the public Internet. It assumes:
   - true clock offset = 0 us
   - fixed forward/reverse propagation-delay difference = 150 us
   - one asymmetric access-link pair: 10 Mbps vs 100 Mbps

Cummings                  Expires 28 April 2027                [Page 63]
Internet-Draft                    TARE                      October 2026

   - packet-length-dependent offset slope = 360 ns/byte = 0.36 us/byte
   - independent exponential queueing delays in both directions, mean 5\
   \0 us
   - 8 candidate exchanges per packet length, retaining the candidate w\
   \ith
     minimum sum of queueing delays
   - six packet lengths for TARE, ordinary baseline uses 90 bytes
   - 10,000 Monte Carlo trials

   Symmetric core serialization cancels from the offset equation. No dr\
   \ift,
   packet loss, path changes, nonlinear size effects, or server process\
   \ing
   effects are modeled.
   """
   import numpy as np
   import pandas as pd

   TEST_DATE = "2026-10-23"  # date of this test run; stamped into the \
   \CSV and the printed output

   SEED = 20261022
   N_TRIALS = 10_000
   N_CANDIDATES = 8
   QUEUE_MEAN_US = 50.0
   LENGTHS_BYTES = np.array([90, 250, 500, 800, 1100, 1400], dtype=floa\
   \t)
   TRUE_OFFSET_US = 0.0
   PROPAGATION_DIFFERENCE_US = 150.0
   FIXED_OFFSET_BIAS_US = PROPAGATION_DIFFERENCE_US / 2.0
   SLOPE_US_PER_BYTE = 0.36  # half of 8*(1/10 Mbps - 1/100 Mbps)
   BASELINE_LENGTH_BYTES = 90.0

   def selected_offset(length_bytes, rng):
       q_forward = rng.exponential(QUEUE_MEAN_US, N_CANDIDATES)
       q_reverse = rng.exponential(QUEUE_MEAN_US, N_CANDIDATES)
       selected = np.argmin(q_forward + q_reverse)
       return (
           TRUE_OFFSET_US
           + FIXED_OFFSET_BIAS_US
           + SLOPE_US_PER_BYTE * length_bytes
           + 0.5 * (q_forward[selected] - q_reverse[selected])
       )

   def main():
       rng = np.random.default_rng(SEED)
       baseline = np.empty(N_TRIALS)
       tare_zero_intercept = np.empty(N_TRIALS)

Cummings                  Expires 28 April 2027                [Page 64]
Internet-Draft                    TARE                      October 2026

       tare_at_90_bytes = np.empty(N_TRIALS)
       estimated_slope = np.empty(N_TRIALS)

       for trial in range(N_TRIALS):
           baseline[trial] = selected_offset(BASELINE_LENGTH_BYTES, rng)
           y = np.array([selected_offset(L, rng) for L in LENGTHS_BYTES\
   \])
           slope, intercept = np.polyfit(LENGTHS_BYTES, y, 1)
           estimated_slope[trial] = slope
           tare_zero_intercept[trial] = intercept
           tare_at_90_bytes[trial] = intercept + slope * BASELINE_LENGT\
   \H_BYTES

       records = []
       for name, values, expected in [
           ("Ordinary NTP-style 90-byte sample", baseline, 107.4),
           ("TARE zero-length extrapolated intercept", tare_zero_interc\
   \ept, 75.0),
           ("TARE estimate normalized to 90 bytes", tare_at_90_bytes, 1\
   \07.4),
           ("Estimated slope (us/byte)", estimated_slope, 0.36),
       ]:
           records.append({
               "metric": name,
               "mean": values.mean(),
               "standard_deviation": values.std(ddof=1),
               "5th_percentile": np.quantile(values, 0.05),
               "95th_percentile": np.quantile(values, 0.95),
               "theoretical_reference": expected,
           })
       df = pd.DataFrame(records)
       df.insert(0, "test_date", TEST_DATE)
       df.to_csv(f"tare_monte_carlo_results_{TEST_DATE}.csv", index=Fal\
   \se)
       print(f"TARE toy Monte Carlo -- test date: {TEST_DATE}  seed={SE\
   \ED} trials={N_TRIALS}")
       print(df.to_string(index=False))

   if __name__ == "__main__":
       main()

                  Figure 2: tare_monte_carlo_2026-10-23.py

F.3.  tare_matched_budget_2026-10-23.py

   Matched-budget comparison, analytic checks, design sweeps, and the
   zero-length experiment (Appendix B).

Cummings                  Expires 28 April 2027                [Page 65]
Internet-Draft                    TARE                      October 2026

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   #!/usr/bin/env python3
   # TARE matched-budget and design-sweep tests -- test date: 2026-10-23
   """TARE matched-budget comparison and design sweeps (toy model). Tes\
   \t date: 2026-10-23.

   Usage: python3 -I tare_matched_budget_2026-10-23.py OUTDIR

   Question: does the regression beat an ordinary estimator given the S\
   \AME number of
   candidate exchanges? The supplied simulation gives TARE 48 candidate\
   \s (6 groups x 8)
   and the baseline 8. This script gives every estimator a 48-candidate\
   \ budget.
   Toy model only; not an NTP implementation; not real-network evidence.
   """
   import importlib.util
   import os
   import sys
   import numpy as np
   import pandas as pd

   _here = os.path.dirname(os.path.abspath(__file__))
   _spec = importlib.util.spec_from_file_location("tare_core", os.path.\
   \join(_here, "tare_core_2026-10-23.py"))
   core = importlib.util.module_from_spec(_spec)
   _spec.loader.exec_module(core)

   OUT = sys.argv[1] if len(sys.argv) > 1 else "."
   SEED = 20261023
   TRIALS = 10_000
   T1 = core.BASE_LEN * core.SLOPE + core.BIAS0      # 107.4 us: nomina\
   \l value of a 90 B sample
   T0 = core.BIAS0                                   # 75 us: nominal z\
   \ero-length intercept
   print(f"TARE matched-budget tests -- test date: {core.TEST_DATE}  se\
   \ed={SEED} trials={TRIALS}")

   rng = np.random.default_rng(SEED)
   L = core.LENGTHS
   Lb = L.mean()
   Sxx = ((L - Lb) ** 2).sum()

   def row(exp, name, budget, target_label, est, target):
       e = est[np.isfinite(est)]
       return dict(test_date=core.TEST_DATE, experiment=exp, estimator=\

Cummings                  Expires 28 April 2027                [Page 66]
Internet-Draft                    TARE                      October 2026

   \name, budget_candidates=budget,
                   target=target_label, n=len(e), mean=e.mean(), sd=e.s\
   \td(ddof=1),
                   bias_vs_own_target=e.mean() - target,
                   rmse_vs_true_offset=float(np.sqrt(np.mean(e ** 2))))

   # ---------------- E1: matched budget, nominal model ----------------
   rows = []
   r = core.run_estimators({}, rng, trials=TRIALS)                    #\
   \ TARE: 6 groups x 8 = 48 candidates
   rows.append(row("E1", "baseline, 1 group of 8 at 90 B (as in supplie\
   \d sim)", 8, "90 B sample (107.4)", r["base1"], T1))
   b6 = core.simulate({}, rng, np.full(6, 90.0), 8, TRIALS)
   rows.append(row("E1", "baseline, mean of 6 groups of 8 at 90 B", 48,\
   \ "90 B sample (107.4)", np.mean(b6["y"], 1), T1))
   rows.append(row("E1", "baseline, median of 6 groups of 8 at 90 B", 4\
   \8, "90 B sample (107.4)", np.median(b6["y"], 1), T1))
   b48 = core.simulate({}, rng, np.array([90.0]), 48, TRIALS)
   rows.append(row("E1", "baseline, 1 group of 48 at 90 B (min-delay of\
   \ 48)", 48, "90 B sample (107.4)", b48["y"][:, 0], T1))
   rows.append(row("E1", "TARE OLS, fitted value at 90 B", 48, "90 B sa\
   \mple (107.4)", r["tare90"], T1))
   rows.append(row("E1", "TARE OLS, zero-length intercept", 48, "zero-l\
   \ength (75)", r["tare0"], T0))
   rows.append(row("E1", "TARE Theil-Sen, zero-length intercept", 48, "\
   \zero-length (75)", r["ts0"], T0))
   e1 = pd.DataFrame(rows)

   s = e1.loc[0, "sd"]
   analytic = pd.DataFrame([
       dict(test_date=core.TEST_DATE, quantity="sd of one selected 90 B\
   \ sample (from simulation)", value=s),
       dict(test_date=core.TEST_DATE, quantity="analytic sd, mean of 6 \
   \groups = s/sqrt(6)", value=s / np.sqrt(6)),
       dict(test_date=core.TEST_DATE, quantity="analytic sd, OLS interc\
   \ept = s*sqrt(1/6+Lbar^2/Sxx)", value=s * np.sqrt(1 / 6 + Lb ** 2 / \
   \Sxx)),
       dict(test_date=core.TEST_DATE, quantity="analytic sd, OLS fitted\
   \ at 90 B", value=s * np.sqrt(1 / 6 + (90 - Lb) ** 2 / Sxx)),
       dict(test_date=core.TEST_DATE, quantity="analytic sd, OLS slope \
   \= s/sqrt(Sxx) (us/B)", value=s / np.sqrt(Sxx)),
   ])
   # attack amplification: weights of each length group in the OLS pred\
   \iction at x0
   for x0 in (0.0, 90.0):
       w = 1 / len(L) + (x0 - Lb) * (L - Lb) / Sxx
       analytic.loc[len(analytic)] = dict(test_date=core.TEST_DATE,

Cummings                  Expires 28 April 2027                [Page 67]
Internet-Draft                    TARE                      October 2026

           quantity=f"sum |weight| of OLS prediction at {x0:.0f} B (wor\
   \st-case per-group delay amplification)", value=np.abs(w).sum())
       for Li, wi in zip(L, w):
           analytic.loc[len(analytic)] = dict(test_date=core.TEST_DATE,\
   \ quantity=f"  weight of {Li:.0f} B group in prediction at {x0:.0f} \
   \B", value=wi)

   # ---------------- E2: design sweeps at budget 48 ----------------
   rows = []
   for (g, k) in [(3, 16), (4, 12), (6, 8), (8, 6), (12, 4)]:
       for lmax in (250, 500, 1400):
           lens = np.linspace(90, lmax, g)
           o = core.run_estimators({}, rng, lengths=lens, k=k, trials=T\
   \RIALS)
           e0 = o["tare0"][np.isfinite(o["tare0"])]
           if e0.size < 2:   # the test fit gate requires >= 4 groups, \
   \so 3 groups yields no fit
               rows.append(dict(test_date=core.TEST_DATE, groups=g, can\
   \didates_per_group=k, max_length_B=lmax,
                                note="no fit: gate requires >= 4 accept\
   \ed groups"))
               continue
           rows.append(dict(test_date=core.TEST_DATE, groups=g, candida\
   \tes_per_group=k, max_length_B=lmax,
                            intercept_mean=e0.mean(), intercept_sd=e0.s\
   \td(ddof=1),
                            slope_mean=np.nanmean(o["slope"]), slope_sd\
   \=np.nanstd(o["slope"], ddof=1),
                            frac_slope_se_le_0p02=float(np.mean(o["slop\
   \e_se"][np.isfinite(o["slope_se"])] <= 0.02))))
   e2 = pd.DataFrame(rows)

   # ---------------- E2b: budget sweep, 6 lengths, K per group; baseli\
   \ne matched at 6K ----------------
   rows = []
   for k in (1, 2, 4, 8, 16, 32):
       o = core.run_estimators({}, rng, k=k, trials=TRIALS)
       rows.append(dict(test_date=core.TEST_DATE, candidates_per_group=\
   \k, budget_candidates=6 * k,
                        tare_intercept_sd=np.nanstd(o["tare0"], ddof=1)\
   \, tare_at_90_sd=np.nanstd(o["tare90"], ddof=1),
                        baseline_mean_of_6_groups_sd=np.nanstd(o["base6\
   \"], ddof=1),
                        tare_intercept_rmse_vs_true=float(np.sqrt(np.na\
   \nmean(o["tare0"] ** 2))),
                        baseline_rmse_vs_true=float(np.sqrt(np.nanmean(\
   \o["base6"] ** 2)))))
   e2b = pd.DataFrame(rows)

Cummings                  Expires 28 April 2027                [Page 68]
Internet-Draft                    TARE                      October 2026

   # ---------------- E4: what "length zero" means (encapsulation / lay\
   \er of L) ----------------
   rows = []
   for name, p, pred in [("L is effective length (as simulated)", {}, 0\
   \.0),
                         ("L = NTP payload; +28 B IPv4/UDP both ways", \
   \dict(overhead_sym=28.0), core.SLOPE * 28),
                         ("L = UDP payload; +66 B IP+Ethernet framing b\
   \oth ways", dict(overhead_sym=66.0), core.SLOPE * 66),
                         ("L = NTP payload; +100 B tunnel+framing both \
   \ways", dict(overhead_sym=100.0), core.SLOPE * 100)]:
       o = core.run_estimators(p, rng, trials=TRIALS)
       rows.append(dict(test_date=core.TEST_DATE, case=name, intercept_\
   \mean=np.nanmean(o["tare0"]),
                        intercept_error_vs_75=np.nanmean(o["tare0"]) - \
   \T0, predicted_error_slope_x_overhead=pred))
   e4 = pd.DataFrame(rows)

   for nm, df in [("E1_matched_budget", e1), ("E1_analytic_checks", ana\
   \lytic), ("E2_design_sweep", e2),
                  ("E2b_budget_sweep", e2b), ("E4_length_zero_meaning",\
   \ e4)]:
       df.to_csv(os.path.join(OUT, f"tare_{nm}_{core.TEST_DATE}.csv"), \
   \index=False)
       print(f"\n== {nm} (test date {core.TEST_DATE}) ==")
       print(df.drop(columns=["test_date"]).to_string(index=False, floa\
   \t_format=lambda x: f"{x:.4f}"))

                Figure 3: tare_matched_budget_2026-10-23.py

F.4.  tare_stress_2026-10-23.py

   Stress and sensitivity scenarios and the illustrative validity gate
   (Appendix C).  A comment near its false-valid column still says more
   than 10 us; the threshold actually used is 25 us (BAD_US).

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   #!/usr/bin/env python3
   # TARE stress and sensitivity tests -- test date: 2026-10-23
   """TARE stress and sensitivity tests (toy model). Test date: 2026-10\
   \-23.

   Usage: python3 -I tare_stress_2026-10-23.py OUTDIR

   Each scenario perturbs the nominal toy model (see tare_core_2026-10-\
   \23.py) in one way the
   draft says must be tested: clock drift, path change, nonlinear size \

Cummings                  Expires 28 April 2027                [Page 69]
Internet-Draft                    TARE                      October 2026

   \effects, packet loss,
   label noise, queueing asymmetry, outliers, MTU/fragmentation, encaps\
   \ulation, server
   behaviour, adversarial delay. For each scenario we report matched-bu\
   \dget baselines
   (48 candidates) and TARE variants, plus an illustrative validity gat\
   \e.

   Toy model only. Not an NTP implementation. Not real-network evidence\
   \. The validity-gate
   thresholds are test settings, not recommendations. Results for scena\
   \rios are one run per
   scenario with a fixed seed; they are sensitivities of this toy, not \
   \predictions.
   """
   import importlib.util
   import os
   import sys
   import numpy as np
   import pandas as pd

   _here = os.path.dirname(os.path.abspath(__file__))
   _spec = importlib.util.spec_from_file_location("tare_core", os.path.\
   \join(_here, "tare_core_2026-10-23.py"))
   core = importlib.util.module_from_spec(_spec)
   _spec.loader.exec_module(core)

   OUT = sys.argv[1] if len(sys.argv) > 1 else "."
   SEED = 20261023
   TRIALS = 10_000
   T1 = core.BASE_LEN * core.SLOPE + core.BIAS0
   T0 = core.BIAS0
   BAD_US = 25.0   # "bad" = intercept more than 25 us (~3.8 nominal sd\
   \) from 75 us; 10 us was inside the noise
   print(f"TARE stress tests -- test date: {core.TEST_DATE}  seed={SEED\
   \} trials={TRIALS}")

   SCENARIOS = [
       ("nominal", {}),
       ("drift 0.1 ppm, sequential order", dict(drift_ppm=0.1)),
       ("drift 1 ppm, sequential order", dict(drift_ppm=1.0)),
       ("drift 5 ppm, sequential order", dict(drift_ppm=5.0)),
       ("drift 1 ppm, randomized order", dict(drift_ppm=1.0, order="ran\
   \dom")),
       ("drift 5 ppm, randomized order", dict(drift_ppm=5.0, order="ran\
   \dom")),
       ("path step +50 us mid-window, sequential", dict(step_us=50.0)),
       ("path step +50 us mid-window, randomized", dict(step_us=50.0, o\

Cummings                  Expires 28 April 2027                [Page 70]
Internet-Draft                    TARE                      October 2026

   \rder="random")),
       ("shaper: +40 us forward for L>=1100 B", dict(shaper_us=40.0, sh\
   \aper_from=1100.0)),
       ("quadratic forward term, +30 us at 1400 B", dict(quad_us=30.0)),
       ("fragmentation at >=1300 B (+30 us, +20 B hdr)", dict(frag_from\
   \=1300.0)),
       ("iid packet loss 20%", dict(loss=0.2)),
       ("size-dependent loss 2%..32%", dict(loss=0.02, loss_size=0.30)),
       ("length-label noise 10%", dict(label_swap=0.1)),
       ("queue asymmetry fwd 150 us / rev 20 us", dict(qf_mean=150.0, q\
   \r_mean=20.0)),
       ("length-dependent forward queue (x2 at 700 B)", dict(q_len_scal\
   \e=1.0)),
       ("outliers 5% (mean +2 ms, one direction)", dict(outlier_p=0.05)\
   \),
       ("outliers 30%", dict(outlier_p=0.30)),
       ("symmetric encapsulation +66 B (L = payload)", dict(overhead_sy\
   \m=66.0)),
       ("forward-only tunnel +50 B", dict(overhead_f=50.0)),
       ("NTPv4-style fixed 90 B response", dict(resp_fixed=90.0)),
       ("server rx timestamp lag 0.01 us/B", dict(ts_lag=0.01)),
       ("adversary: fwd delay 0.05 us/B on every packet", dict(adv_slop\
   \e=0.05)),
       ("adversary: +200 us fwd on 90 B packets only", dict(adv_len=90.\
   \0, adv_us=200.0)),
       ("adversary: +200 us fwd on 1400 B packets only", dict(adv_len=1\
   \400.0, adv_us=200.0)),
   ]

   rng = np.random.default_rng(SEED)
   est_rows, val_rows = [], []
   for name, p in SCENARIOS:
       o = core.run_estimators(p, rng, trials=TRIALS)
       for en, target in [("base1", T1), ("base6", T1), ("tare90", T1),\
   \ ("tare0", T0), ("ts0", T0), ("tare_t0", T0)]:
           est_rows.append(core.summarize(name, en, o[en], target))
       acc = core.accept(o)
       t0 = o["tare0"]
       with np.errstate(invalid="ignore"):
           bad = np.abs(t0 - T0) > BAD_US                     # interce\
   \pt more than BAD_US off the nominal 75 us
       fin = np.isfinite(t0)
       a = acc & fin
       val_rows.append(dict(test_date=core.TEST_DATE, scenario=name,
                            frac_rejected_by_gate=1.0 - a.mean(),
                            frac_fit_available=fin.mean(),
                            frac_bad_among_all=float(np.mean(bad & fin)\
   \),

Cummings                  Expires 28 April 2027                [Page 71]
Internet-Draft                    TARE                      October 2026

                            false_valid_rate=float(np.mean(a & bad)),  \
   \      # accepted AND >10 us off
                            accepted_mean_err_vs_75=float(np.mean(t0[a]\
   \ - T0)) if a.any() else np.nan,
                            accepted_sd=float(np.std(t0[a], ddof=1)) if\
   \ a.sum() > 1 else np.nan,
                            mean_slope=float(np.nanmean(o["slope"])), n\
   \ominal_slope=core.SLOPE,
                            median_p_curv=float(np.nanmedian(o["p_curv"\
   \])) if np.isfinite(o["p_curv"]).any() else np.nan))

   est = pd.DataFrame(est_rows)
   val = pd.DataFrame(val_rows)
   est.to_csv(os.path.join(OUT, f"tare_stress_estimators_{core.TEST_DAT\
   \E}.csv"), index=False)
   val.to_csv(os.path.join(OUT, f"tare_stress_validity_{core.TEST_DATE}\
   \.csv"), index=False)

   pd.set_option("display.width", 250)
   print(f"\n== intercept (tare0) and matched baseline (base6) per scen\
   \ario, test date {core.TEST_DATE} ==")
   pivot = est[est.estimator.isin(["base6", "tare0", "ts0", "tare_t0"])\
   \].pivot(index="scenario", columns="estimator",
                                                                       \
   \         values="rmse_vs_true_offset")
   print(pivot.reindex([s for s, _ in SCENARIOS]).to_string(float_forma\
   \t=lambda x: f"{x:.1f}"))
   print(f"\n== validity gate (illustrative), test date {core.TEST_DATE\
   \} ==")
   print(val.drop(columns=["test_date"]).to_string(index=False, float_f\
   \ormat=lambda x: f"{x:.3f}"))

                    Figure 4: tare_stress_2026-10-23.py

F.5.  tare_hybrid_2026-10-23.py

   Pooled-slope hybrid estimator and lack-of-fit gate (Appendix D).

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   #!/usr/bin/env python3
   # TARE hybrid estimator and lack-of-fit gate tests -- test date: 202\
   \6-10-23
   """TARE hybrid estimator + replicate lack-of-fit gate (toy model). T\
   \est date: 2026-10-23.

   Usage: python3 -I tare_hybrid_2026-10-23.py OUTDIR

Cummings                  Expires 28 April 2027                [Page 72]
Internet-Draft                    TARE                      October 2026

   Proposal under test (fixes 1 and 3 from the review):
     * Calibration = M windows pooled. Each window: 6 lengths x 2 repli\
   \cate groups x 4 candidates
       = 48 candidates (min-delay kept per group). Randomized order.
     * Slope b_hat = pooled OLS slope over all M*12 selected points.
     * Offset = one min-delay sample of 48 candidates at 90 B, minus b_\
   \hat * 90   ("hybrid").
       No extrapolation of an intercept: slope error is multiplied by 9\
   \0 B, not by the fit leverage.
     * Gate: pooled lack-of-fit F-test against pure error from the repl\
   \icates (reject if p < 0.01)
       AND slope significance |b_hat| >= 3 se(b_hat). If the gate fails\
   \, fall back to the plain
       90 B min-delay sample.
   Budget accounting: calibration costs M*48 = 960 candidates, amortize\
   \d over R = 96 offset
   estimates = +10 per estimate, so the fully loaded baseline is a 58-c\
   \andidate min-delay sample.
   Comparators: plain baselines (48 and 58 candidates), the original si\
   \ngle-window OLS intercept
   with the original illustrative gate (core.accept).

   Toy model only. Not an NTP implementation. Not real-network evidence\
   \. Gate thresholds are
   test settings. Packet loss scenarios are not run here (loss handling\
   \ is not implemented in
   the pooled fit). One run per scenario, fixed seed; sd of a reported \
   \mean is about sd/sqrt(n).
   """
   import importlib.util
   import os
   import sys
   import numpy as np
   import pandas as pd
   from scipy import stats

   _here = os.path.dirname(os.path.abspath(__file__))
   _spec = importlib.util.spec_from_file_location("tare_core", os.path.\
   \join(_here, "tare_core_2026-10-23.py"))
   core = importlib.util.module_from_spec(_spec)
   _spec.loader.exec_module(core)

   TEST_DATE = "2026-10-23"
   OUT = sys.argv[1] if len(sys.argv) > 1 else "."
   SEED = 20261023
   TRIALS = 5000
   M = 20
   R = 96

Cummings                  Expires 28 April 2027                [Page 73]
Internet-Draft                    TARE                      October 2026

   BAD_US = 25.0
   LENS12 = np.tile(core.LENGTHS, 2)
   SER_R_NOMINAL = core.SER_R
   print(f"TARE hybrid tests -- test date: {TEST_DATE}  seed={SEED} tri\
   \als={TRIALS} M={M} R={R}")

   def true_slope():
       return 0.5 * (core.SER_F - core.SER_R)

   def calibrate(p, rng, m, trials):
       s = core.simulate(p, rng, LENS12, 4, trials * m)
       n = 12 * m
       y = s["y"].reshape(trials, n)
       L = s["L"].reshape(trials, n)
       Lb = L.mean(1, keepdims=True)
       sxx = ((L - Lb) ** 2).sum(1)
       b = ((L - Lb) * (y - y.mean(1, keepdims=True))).sum(1) / sxx
       a = y.mean(1) - b * Lb[:, 0]
       sse = ((y - a[:, None] - b[:, None] * L) ** 2).sum(1)
       pe = np.zeros(trials)
       for Lj in core.LENGTHS:
           mk = (L == Lj)
           cnt = np.maximum(mk.sum(1), 1)
           mu = (y * mk).sum(1) / cnt
           pe += (((y - mu[:, None]) ** 2) * mk).sum(1)
       df_pe = n - len(core.LENGTHS)
       lof = np.maximum(sse - pe, 0.0)
       f = (lof / 4.0) / (pe / df_pe)
       return dict(b=b, p_lof=stats.f.sf(f, 4, df_pe), se_b=np.sqrt((pe\
   \ / df_pe) / sxx))

   def offs(p, rng, k, trials):
       q = {**p, "label_swap": 0.0}   # single known-length group: labe\
   \l noise cannot apply
       return core.simulate(q, rng, np.array([core.BASE_LEN]), k, trial\
   \s)["y"][:, 0]

   def summ(scen, name, est):
       e = est[np.isfinite(est)]
       return dict(test_date=TEST_DATE, scenario=scen, estimator=name, \
   \n=len(e), mean=e.mean(),
                   sd=e.std(ddof=1), mean_err_vs_75=e.mean() - core.BIA\
   \S0,
                   rmse_vs_75=float(np.sqrt(np.mean((e - core.BIAS0) **\

Cummings                  Expires 28 April 2027                [Page 74]
Internet-Draft                    TARE                      October 2026

   \ 2))),
                   p95_abs_err_vs_75=float(np.quantile(np.abs(e - core.\
   \BIAS0), 0.95)),
                   rmse_vs_true_offset=float(np.sqrt(np.mean(e ** 2))))

   def run(scen, p, rng):
       p = {"order": "random", **p}
       cal = calibrate(p, rng, M, TRIALS)
       y48 = offs(p, rng, 48, TRIALS)
       y58 = offs(p, rng, 58, TRIALS)
       o = core.run_estimators(p, rng, trials=TRIALS)
       b = cal["b"]
       hyb_raw = y48 - b * core.BASE_LEN
       sig = np.abs(b) >= 3.0 * cal["se_b"]
       lof_ok = cal["p_lof"] >= 0.01
       ok = lof_ok & sig
       hyb = np.where(ok, hyb_raw, y48)
       acc = core.accept(o) & np.isfinite(o["tare0"])
       ols = np.where(acc, o["tare0"], y48)
       t1 = core.BIAS0 + true_slope() * core.BASE_LEN
       hyb_bad = ok & (np.abs(hyb - core.BIAS0) > BAD_US)
       ols_bad = acc & (np.abs(ols - core.BIAS0) > BAD_US)
       est = [summ(scen, "base48", y48), summ(scen, "base58 (fully load\
   \ed)", y58),
              summ(scen, "ols_intercept_raw (orig, 1 window)", o["tare0\
   \"]), summ(scen, "ols_gated (orig gate)", ols),
              summ(scen, "hybrid_raw", hyb_raw), summ(scen, "hybrid_gat\
   \ed", hyb)]
       e_h = hyb_raw[np.isfinite(hyb_raw)]
       e_o = o["tare0"][np.isfinite(o["tare0"])]
       val = dict(test_date=TEST_DATE, scenario=scen, nominal_baseline_\
   \us=t1,
                  base58_err=y58.mean() - t1, base58_sd=y58.std(ddof=1),
                  hyb_raw_err=e_h.mean() - core.BIAS0, hyb_raw_sd=e_h.s\
   \td(ddof=1),
                  hyb_lof_reject=1.0 - lof_ok.mean(), hyb_slope_not_sig\
   \=1.0 - sig.mean(),
                  hyb_fallback=1.0 - ok.mean(), hyb_false_valid=float(h\
   \yb_bad.mean()),
                  hyb_applied_err=(hyb_raw[ok].mean() - core.BIAS0) if \
   \ok.any() else np.nan,
                  ols_raw_err=e_o.mean() - core.BIAS0, ols_raw_sd=e_o.s\
   \td(ddof=1),
                  ols_fallback=1.0 - acc.mean(), ols_false_valid=float(\
   \ols_bad.mean()))
       return est, val

Cummings                  Expires 28 April 2027                [Page 75]
Internet-Draft                    TARE                      October 2026

   # ---------------- E1/E3: impairment suite at nominal slope --------\
   \--------
   SCEN = [
       ("nominal", {}),
       ("drift 1 ppm, sequential (neg. control)", dict(order="sequentia\
   \l", drift_ppm=1.0)),
       ("drift 1 ppm, randomized", dict(drift_ppm=1.0)),
       ("drift 5 ppm, randomized", dict(drift_ppm=5.0)),
       ("path step +50 us, randomized", dict(step_us=50.0)),
       ("path step +50 us, sequential (neg. control)", dict(order="sequ\
   \ential", step_us=50.0)),
       ("shaper +10 us fwd for L>=1100", dict(shaper_us=10.0)),
       ("shaper +40 us fwd for L>=1100", dict(shaper_us=40.0)),
       ("quadratic fwd term +5 us at 1400 B", dict(quad_us=5.0)),
       ("quadratic fwd term +30 us at 1400 B", dict(quad_us=30.0)),
       ("fragmentation at >=1300 B", dict(frag_from=1300.0)),
       ("length-label noise 10%", dict(label_swap=0.1)),
       ("symmetric +66 B overhead (L=payload)", dict(overhead_sym=66.0)\
   \),
       ("forward-only tunnel +50 B", dict(overhead_f=50.0)),
       ("NTPv4-style fixed 90 B response", dict(resp_fixed=90.0)),
       ("queue asymmetry fwd150/rev20", dict(qf_mean=150.0, qr_mean=20.\
   \0)),
       ("length-dependent fwd queue (x2 at 700 B)", dict(q_len_scale=1.\
   \0)),
       ("outliers 5% (mean +2 ms)", dict(outlier_p=0.05)),
       ("adversary: fwd delay 0.05 us/B, every packet", dict(adv_slope=\
   \0.05)),
       ("adversary: +20 us fwd on 1400 B only", dict(adv_len=1400.0, ad\
   \v_us=20.0)),
       ("adversary: +200 us fwd on 1400 B only", dict(adv_len=1400.0, a\
   \dv_us=200.0)),
   ]
   rng = np.random.default_rng(SEED)
   est_rows, val_rows = [], []
   for name, p in SCEN:
       e, v = run(name, p, rng)
       est_rows += e
       val_rows.append(v)
   val = pd.DataFrame(val_rows)

   # ---------------- E2: true-slope sweep (applicability) ------------\
   \----
   sweep_rows = []
   for s in (0.0, 0.02, 0.05, 0.1, 0.2, 0.36):
       core.SER_R = core.SER_F - 2.0 * s
       e, v = run(f"true slope {s:.2f} us/B", {}, rng)
       est_rows += e

Cummings                  Expires 28 April 2027                [Page 76]
Internet-Draft                    TARE                      October 2026

       sweep_rows.append(v)
   core.SER_R = SER_R_NOMINAL
   sweep = pd.DataFrame(sweep_rows)

   # ---------------- E4: detection power vs size of impairment -------\
   \---------
   pw_rows = []
   for label, key, vals_, extra in [("shaper us at >=1100 B", "shaper_u\
   \s", (2, 5, 10, 20, 40), {}),
                                    ("quadratic us at 1400 B", "quad_us\
   \", (2, 5, 10, 30), {}),
                                    ("adv us on 1400 B only", "adv_us",\
   \ (2, 5, 10, 20, 50, 200), dict(adv_len=1400.0))]:
       for v_ in vals_:
           _, v = run(f"{label} = {v_}", {key: float(v_), **extra}, rng)
           pw_rows.append(v)
   power = pd.DataFrame(pw_rows)

   # ---------------- E5: pooling depth (nominal) ----------------
   m_rows = []
   T5 = 2500
   for m in (5, 10, 20, 40):
       p = {"order": "random"}
       cal = calibrate(p, rng, m, T5)
       y48 = offs(p, rng, 48, T5)
       hy = y48 - cal["b"] * core.BASE_LEN
       m_rows.append(dict(test_date=TEST_DATE, M=m, calibration_candida\
   \tes=48 * m,
                          slope_mean=cal["b"].mean(), slope_sd=cal["b"]\
   \.std(ddof=1),
                          hybrid_mean=hy.mean(), hybrid_sd=hy.std(ddof=\
   \1), base48_sd=y48.std(ddof=1),
                          lof_false_reject_at_p01=float(np.mean(cal["p_\
   \lof"] < 0.01)),
                          mean_se_b=cal["se_b"].mean()))
   mdf = pd.DataFrame(m_rows)

   # ---------------- E6: analytic leverage of one length group on the \
   \output ----------------
   L = core.LENGTHS
   sxx = ((L - L.mean()) ** 2).sum()
   w_ols0 = 1.0 / len(L) + (0.0 - L.mean()) * (L - L.mean()) / sxx
   w_hyb = core.BASE_LEN * (L - L.mean()) / sxx
   lev = pd.DataFrame(dict(test_date=TEST_DATE, length_B=L, weight_ols_\
   \intercept=w_ols0,
                           weight_hybrid_output=w_hyb))
   lev.loc[len(lev)] = dict(test_date=TEST_DATE, length_B=np.nan, weigh\
   \t_ols_intercept=np.abs(w_ols0).sum(),

Cummings                  Expires 28 April 2027                [Page 77]
Internet-Draft                    TARE                      October 2026

                            weight_hybrid_output=np.abs(w_hyb).sum())

   est = pd.DataFrame(est_rows)
   for nm, df in [("estimators", est), ("validity", val), ("slope_sweep\
   \", sweep), ("power", power),
                  ("pooling_depth", mdf), ("leverage", lev)]:
       df.to_csv(os.path.join(OUT, f"tare_hybrid_{nm}_{TEST_DATE}.csv")\
   \, index=False)

   pd.set_option("display.width", 250)
   pd.set_option("display.max_columns", 30)
   fmt = lambda x: f"{x:.3f}"
   cols = ["scenario", "base58_err", "base58_sd", "hyb_raw_err", "hyb_r\
   \aw_sd", "hyb_lof_reject",
           "hyb_fallback", "hyb_false_valid", "ols_raw_err", "ols_raw_s\
   \d", "ols_fallback", "ols_false_valid"]
   print(f"\n== E1/E3 impairment suite, errors vs the nominal target, t\
   \est date {TEST_DATE} ==")
   print(val[cols].to_string(index=False, float_format=fmt))
   print(f"\n== E2 true-slope sweep (hybrid should track the compensate\
   \d target; base58_err ~ slope*90), test date {TEST_DATE} ==")
   print(sweep[cols].to_string(index=False, float_format=fmt))
   print(f"\n== E4 detection power vs impairment size, test date {TEST_\
   \DATE} ==")
   print(power[["scenario", "hyb_raw_err", "hyb_lof_reject", "hyb_fallb\
   \ack", "hyb_applied_err", "hyb_false_valid",
                "ols_raw_err", "ols_fallback"]].to_string(index=False, \
   \float_format=fmt))
   print(f"\n== E5 pooling depth, nominal, test date {TEST_DATE} ==")
   print(mdf.drop(columns=["test_date"]).to_string(index=False, float_f\
   \ormat=lambda x: f"{x:.4f}"))
   print(f"\n== E6 analytic leverage per length group (last row = sum o\
   \f |weights|), test date {TEST_DATE} ==")
   print(lev.drop(columns=["test_date"]).to_string(index=False, float_f\
   \ormat=lambda x: f"{x:.4f}"))

                    Figure 5: tare_hybrid_2026-10-23.py

F.6.  tare_supplement_2026-10-24.py

   Gate against payload-only length counting, and hybrid with loss,
   delay at 90 B, and a schedule-aware adversary (Table C-3 and
   Section D.7).

Cummings                  Expires 28 April 2027                [Page 78]
Internet-Draft                    TARE                      October 2026

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   #!/usr/bin/env python3
   # TARE supplementary tests (gate vs payload-only overhead; hybrid wi\
   \th loss, 90 B-only delay, schedule-aware adversary) -- test date: 2\
   \026-10-24
   """TARE supplementary tests (toy model). Test date: 2026-10-24.

   Usage: python3 -I tare_supplement_2026-10-24.py OUTDIR

   Closes gaps listed after the 2026-10-23 runs. Uses the unmodified co\
   \re model
   (tare_core_2026-10-23.py) and the same hybrid design as tare_hybrid_\
   \2026-10-23.py
   (M = 20 pooled windows, 12 groups x 4 candidates, lack-of-fit F-test\
   \ p < 0.01 and
   |slope| >= 3 se gate, fallback to the plain 90 B sample), with one c\
   \hange: the pooled
   fit here is loss-aware (lost candidates get zero weight), so packet-\
   \loss scenarios can run.

     S1  Illustrative gate (core.accept) against payload-only length co\
   \unting: symmetric
         overhead of 28, 66 and 100 B (Section 4.4 of the draft), plus \
   \a no-overhead control.
     S2  Hybrid with packet loss (iid 20 percent; size-dependent 2..32 \
   \percent).
     S3  Hybrid with forward delay confined to 90 B packets (5, 20, 200\
   \ us).
     S4  Hybrid and original OLS against a schedule-aware adversary tha\
   \t adds forward delay
         d(L) = s (L - 90) to every packet (zero at 90 B). The delay is\
   \ exactly linear in L, so
         it passes any lack-of-fit gate. Predicted hybrid shift: -45 s \
   \us (s in us/B of forward delay).

   Toy model only. Not an NTP implementation. Not real-network evidence\
   \. Thresholds are test
   settings, not recommendations. One run per scenario, fixed seed.
   """
   import importlib.util
   import os
   import sys
   import numpy as np
   import pandas as pd
   from scipy import stats

   _here = os.path.dirname(os.path.abspath(__file__))

Cummings                  Expires 28 April 2027                [Page 79]
Internet-Draft                    TARE                      October 2026

   _spec = importlib.util.spec_from_file_location("tare_core", os.path.\
   \join(_here, "tare_core_2026-10-23.py"))
   core = importlib.util.module_from_spec(_spec)
   _spec.loader.exec_module(core)

   TEST_DATE = "2026-10-24"
   OUT = sys.argv[1] if len(sys.argv) > 1 else "."
   SEED = 20261024
   TRIALS_GATE = 10_000
   TRIALS_HYB = 5_000
   M = 20
   BAD_US = 25.0
   LENS12 = np.tile(core.LENGTHS, 2)
   T0, T1 = core.BIAS0, core.BIAS0 + core.SLOPE * core.BASE_LEN
   print(f"TARE supplementary tests -- test date: {TEST_DATE}  seed={SE\
   \ED} trials gate={TRIALS_GATE} hybrid={TRIALS_HYB} M={M}")

   def calibrate(p, rng, m, trials):
       """Pooled OLS slope with lack-of-fit F-test; lost candidates (va\
   \lid == False) get zero weight."""
       s = core.simulate(p, rng, LENS12, 4, trials * m)
       n = 12 * m
       v = s["valid"].reshape(trials, n).astype(float)
       y = np.where(v > 0, s["y"].reshape(trials, n), 0.0)
       L = s["L"].reshape(trials, n)
       nv = v.sum(1)
       Lb = (v * L).sum(1, keepdims=True) / nv[:, None]
       yb = (v * y).sum(1, keepdims=True) / nv[:, None]
       sxx = (v * (L - Lb) ** 2).sum(1)
       b = (v * (L - Lb) * (y - yb)).sum(1) / sxx
       a = yb[:, 0] - b * Lb[:, 0]
       sse = (v * (y - a[:, None] - b[:, None] * L) ** 2).sum(1)
       pe = np.zeros(trials)
       nlen = np.zeros(trials)
       for Lj in core.LENGTHS:
           mk = (L == Lj) * v
           cnt = mk.sum(1)
           mu = (y * mk).sum(1) / np.maximum(cnt, 1)
           pe += (mk * (y - mu[:, None]) ** 2).sum(1)
           nlen += cnt > 0
       df_pe = nv - nlen
       lof = np.maximum(sse - pe, 0.0)
       f = (lof / (nlen - 2)) / (pe / df_pe)
       return dict(b=b, p_lof=stats.f.sf(f, nlen - 2, df_pe), se_b=np.s\
   \qrt((pe / df_pe) / sxx))

Cummings                  Expires 28 April 2027                [Page 80]
Internet-Draft                    TARE                      October 2026

   def offs(p, rng, k, trials):
       q = {**p, "label_swap": 0.0}
       s = core.simulate(q, rng, np.array([core.BASE_LEN]), k, trials)
       return np.where(s["valid"][:, 0], s["y"][:, 0], np.nan)

   def run_hybrid(scen, p, rng, predicted_shift=np.nan):
       p = {"order": "random", **p}
       cal = calibrate(p, rng, M, TRIALS_HYB)
       y48, y58 = offs(p, rng, 48, TRIALS_HYB), offs(p, rng, 58, TRIALS\
   \_HYB)
       o = core.run_estimators(p, rng, trials=TRIALS_HYB)
       hyb_raw = y48 - cal["b"] * core.BASE_LEN
       ok = (cal["p_lof"] >= 0.01) & (np.abs(cal["b"]) >= 3.0 * cal["se\
   \_b"])
       hyb = np.where(ok, hyb_raw, y48)
       acc = core.accept(o) & np.isfinite(o["tare0"])
       ols = np.where(acc, o["tare0"], y48)
       fin = lambda x: x[np.isfinite(x)]
       return dict(test_date=TEST_DATE, scenario=scen,
                   base58_err=np.nanmean(y58) - T1, base58_sd=np.nanstd\
   \(y58, ddof=1),
                   hyb_raw_err=np.nanmean(hyb_raw) - T0, hyb_raw_sd=np.\
   \nanstd(hyb_raw, ddof=1),
                   hyb_lof_reject=float(np.mean(cal["p_lof"] < 0.01)), \
   \hyb_fallback=1.0 - ok.mean(),
                   hyb_false_valid=float(np.mean(ok & (np.abs(hyb - T0)\
   \ > BAD_US))),
                   hyb_applied_err=(np.nanmean(hyb_raw[ok]) - T0) if ok\
   \.any() else np.nan,
                   ols_raw_err=fin(o["tare0"]).mean() - T0, ols_raw_sd=\
   \fin(o["tare0"]).std(ddof=1),
                   ols_fallback=1.0 - acc.mean(),
                   ols_false_valid=float(np.mean(acc & (np.abs(ols - T0\
   \) > BAD_US))),
                   predicted_hybrid_shift=predicted_shift)

   rng = np.random.default_rng(SEED)

   # ---- S1: gate against payload-only length counting ---------------\
   \----------------------------
   g_rows = []
   for name, p, oh in [("no overhead (control)", {}, 0.0),
                       ("payload-only, symmetric overhead 28 B", dict(o\
   \verhead_sym=28.0), 28.0),
                       ("payload-only, symmetric overhead 66 B", dict(o\
   \verhead_sym=66.0), 66.0),

Cummings                  Expires 28 April 2027                [Page 81]
Internet-Draft                    TARE                      October 2026

                       ("payload-only, symmetric overhead 100 B", dict(\
   \overhead_sym=100.0), 100.0)]:
       o = core.run_estimators(p, rng, trials=TRIALS_GATE)
       t0 = o["tare0"]
       fin = np.isfinite(t0)
       acc = core.accept(o) & fin
       g_rows.append(dict(test_date=TEST_DATE, scenario=name, overhead_\
   \B=oh,
                          predicted_shift_us=core.SLOPE * oh,
                          mean_err_vs_75=float(np.nanmean(t0) - T0), sd\
   \=float(np.nanstd(t0, ddof=1)),
                          frac_rejected_by_gate=1.0 - acc.mean(),
                          frac_beyond_25us=float(np.mean(fin & (np.abs(\
   \t0 - T0) > BAD_US))),
                          false_valid_rate=float(np.mean(acc & (np.abs(\
   \t0 - T0) > BAD_US))),
                          accepted_mean_err_vs_75=float(np.mean(t0[acc]\
   \ - T0)) if acc.any() else np.nan,
                          mean_slope=float(np.nanmean(o["slope"])), med\
   \ian_p_curv=float(np.nanmedian(o["p_curv"]))))
   gate = pd.DataFrame(g_rows)

   # ---- S2-S4: hybrid supplements -----------------------------------\
   \------------------------------
   h_rows = []
   for name, p in [("nominal (control)", {}),
                   ("iid packet loss 20%", dict(loss=0.2)),
                   ("size-dependent loss 2%..32%", dict(loss=0.02, loss\
   \_size=0.30))]:
       h_rows.append(dict(group="S2 loss", **run_hybrid(name, p, rng)))
   for us in (5.0, 20.0, 200.0):
       h_rows.append(dict(group="S3 90 B-only delay", **run_hybrid(f"+{\
   \us:g} us fwd on 90 B packets only", dict(adv_len=90.0, adv_us=us), \
   \rng,
                                                                    pre\
   \dicted_shift=0.5 * us)))
   for s_ in (0.2, 0.5, 1.0):
       # d(L) = s (L - 90): adv_slope * L plus a constant -90 s on ever\
   \y packet (shaper_from = 0)
       h_rows.append(dict(group="S4 schedule-aware", **run_hybrid(f"sch\
   \edule-aware: fwd delay {s_:g} us/B x (L-90)",
                                                                  dict(\
   \adv_slope=s_, shaper_us=-90.0 * s_, shaper_from=0.0), rng,
                                                                  predi\
   \cted_shift=-45.0 * s_)))
   hyb = pd.DataFrame(h_rows)

   gate.to_csv(os.path.join(OUT, f"tare_supplement_gate_{TEST_DATE}.csv\

Cummings                  Expires 28 April 2027                [Page 82]
Internet-Draft                    TARE                      October 2026

   \"), index=False)
   hyb.to_csv(os.path.join(OUT, f"tare_supplement_hybrid_{TEST_DATE}.cs\
   \v"), index=False)

   pd.set_option("display.width", 250)
   pd.set_option("display.max_columns", 30)
   print(f"\n== S1 gate vs payload-only overhead, test date {TEST_DATE}\
   \ ==")
   print(gate.drop(columns=["test_date"]).to_string(index=False, float_\
   \format=lambda x: f"{x:.3f}"))
   print(f"\n== S2-S4 hybrid supplements (errors vs 75 us; base58 vs 10\
   \7.4 us), test date {TEST_DATE} ==")
   print(hyb.drop(columns=["test_date"]).to_string(index=False, float_f\
   \ormat=lambda x: f"{x:.3f}"))

                  Figure 6: tare_supplement_2026-10-24.py

Appendix G.  Output Data (Test dates: 2026-10-23 and 2026-10-24)

   This appendix reproduces the output file of every script run, as
   written by the scripts.  Each file is comma-separated text with a
   header row.  Appendix H gives the SHA-256 checksum of each.  The
   scripts are deterministic for a given seed and package versions
   (Section E.2), so each file can also be regenerated from Appendix F.

G.1.  tare_monte_carlo_results_2026-10-23.csv

   Produced by the script of Section F.2.  Reproduced in: Table A-1.

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,metric,mean,standard_deviation,5th_percentile,95th_percent\
   \ile,theoretical_reference
   2026-10-23,Ordinary NTP-style 90-byte sample,107.33962195974443,8.99\
   \2870289528778,92.51076525023129,122.28756229399,107.4
   2026-10-23,TARE zero-length extrapolated intercept,74.98589817579087\
   \,6.656938652636782,64.07429573071184,85.79669972725456,75.0
   2026-10-23,TARE estimate normalized to 90 bytes,107.38319240765254,6\
   \.0688879676666785,97.42630101598706,117.22316034134255,107.4
   2026-10-23,Estimated slope (us/byte),0.35996993590957443,0.007976981\
   \620170328,0.3470351606821014,0.3731109467649705,0.36

             Figure 7: tare_monte_carlo_results_2026-10-23.csv

G.2.  tare_E1_matched_budget_2026-10-23.csv

   Produced by the script of Section F.3.  Reproduced in: Table B-1.

Cummings                  Expires 28 April 2027                [Page 83]
Internet-Draft                    TARE                      October 2026

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,experiment,estimator,budget_candidates,target,n,mean,sd,bi\
   \as_vs_own_target,rmse_vs_true_offset
   2026-10-23,E1,"baseline, 1 group of 8 at 90 B (as in supplied sim)",\
   \8,90 B sample (107.4),10000,107.39128437358303,8.792161830826513,-0\
   \.0087156264169721,107.75055609534577
   2026-10-23,E1,"baseline, mean of 6 groups of 8 at 90 B",48,90 B samp\
   \le (107.4),10000,107.37393339629611,3.646228067620041,-0.0260666037\
   \03895908,107.43581908570074
   2026-10-23,E1,"baseline, median of 6 groups of 8 at 90 B",48,90 B sa\
   \mple (107.4),10000,107.34277640312114,3.5806229978181734,-0.0572235\
   \9687887035,107.40247308557124
   2026-10-23,E1,"baseline, 1 group of 48 at 90 B (min-delay of 48)",48\
   \,90 B sample (107.4),10000,107.40936023588553,3.253133928596892,0.0\
   \09360235885523593,107.45860825616337
   2026-10-23,E1,"TARE OLS, fitted value at 90 B",48,90 B sample (107.4\
   \),10000,107.39876628147222,5.999187038315719,-0.0012337185277857543\
   \,107.56617333008772
   2026-10-23,E1,"TARE OLS, zero-length intercept",48,zero-length (75),\
   \10000,74.99523487274244,6.575559924569044,-0.004765127257556401,75.\
   \28292580752007
   2026-10-23,E1,"TARE Theil-Sen, zero-length intercept",48,zero-length\
   \ (75),10000,74.97565867258736,6.898471026325922,-0.0243413274126425\
   \,75.29232057121848

              Figure 8: tare_E1_matched_budget_2026-10-23.csv

G.3.  tare_E1_analytic_checks_2026-10-23.csv

   Produced by the script of Section F.3.  Reproduced in: Table B-2.

Cummings                  Expires 28 April 2027                [Page 84]
Internet-Draft                    TARE                      October 2026

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,quantity,value
   2026-10-23,sd of one selected 90 B sample (from simulation),8.792161\
   \830826513
   2026-10-23,"analytic sd, mean of 6 groups = s/sqrt(6)",3.58938503691\
   \65525
   2026-10-23,"analytic sd, OLS intercept = s*sqrt(1/6+Lbar^2/Sxx)",6.4\
   \63115310628789
   2026-10-23,"analytic sd, OLS fitted at 90 B",5.892986951290075
   2026-10-23,"analytic sd, OLS slope = s/sqrt(Sxx) (us/B)",0.007789524\
   \7082281115
   2026-10-23,sum |weight| of OLS prediction at 0 B (worst-case per-gro\
   \up delay amplification),1.5465201465201466
   2026-10-23,  weight of 90 B group in prediction at 0 B,0.49162742019\
   \884875
   2026-10-23,  weight of 250 B group in prediction at 0 B,0.4049712192\
   \569335
   2026-10-23,  weight of 500 B group in prediction at 0 B,0.2695709052\
   \85191
   2026-10-23,  weight of 800 B group in prediction at 0 B,0.1070905285\
   \1909995
   2026-10-23,  weight of 1100 B group in prediction at 0 B,-0.05538984\
   \8246991114
   2026-10-23,  weight of 1400 B group in prediction at 0 B,-0.21787022\
   \501308215
   2026-10-23,sum |weight| of OLS prediction at 90 B (worst-case per-gr\
   \oup delay amplification),1.3882783882783882
   2026-10-23,  weight of 90 B group in prediction at 90 B,0.4492412349\
   \555207
   2026-10-23,  weight of 250 B group in prediction at 90 B,0.373888016\
   \7451596
   2026-10-23,  weight of 500 B group in prediction at 90 B,0.256148613\
   \29147043
   2026-10-23,  weight of 800 B group in prediction at 90 B,0.114861329\
   \14704342
   2026-10-23,  weight of 1100 B group in prediction at 90 B,-0.0264259\
   \54997383566
   2026-10-23,  weight of 1400 B group in prediction at 90 B,-0.1677132\
   \391418106

              Figure 9: tare_E1_analytic_checks_2026-10-23.csv

G.4.  tare_E2_design_sweep_2026-10-23.csv

   Produced by the script of Section F.3.  Reproduced in: Table B-3.

Cummings                  Expires 28 April 2027                [Page 85]
Internet-Draft                    TARE                      October 2026

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,groups,candidates_per_group,max_length_B,note,intercept_me\
   \an,intercept_sd,slope_mean,slope_sd,frac_slope_se_le_0p02
   2026-10-23,3,16,250,no fit: gate requires >= 4 accepted groups,,,,,
   2026-10-23,3,16,500,no fit: gate requires >= 4 accepted groups,,,,,
   2026-10-23,3,16,1400,no fit: gate requires >= 4 accepted groups,,,,,
   2026-10-23,4,12,250,,74.99682648142885,10.527299962249701,0.35960405\
   \95060146,0.05839893557667127,0.1404
   2026-10-23,4,12,500,,74.86772863316033,7.655861311813244,0.360373423\
   \96762223,0.022922038302779602,0.5674
   2026-10-23,4,12,1400,,75.0083468581195,6.406832697549918,0.359921686\
   \34312705,0.007215731655096678,0.9972
   2026-10-23,6,8,250,,74.98160583747881,11.846584240185212,0.360021133\
   \43939773,0.06622693142029053,0.0261
   2026-10-23,6,8,500,,74.93567450867461,8.472317767419304,0.3600962159\
   \8340247,0.02597714276914016,0.3942
   2026-10-23,6,8,1400,,75.01594463078585,7.0187421058006185,0.35997940\
   \64925287,0.008092866445680235,0.9991
   2026-10-23,8,6,250,,75.14552899026265,12.720874448073335,0.358840680\
   \01300595,0.07170224062297169,0.0044
   2026-10-23,8,6,500,,74.93414744749957,9.045437649982128,0.3604027433\
   \442678,0.027803049407872094,0.2689
   2026-10-23,8,6,1400,,75.00268047346935,7.384565765231218,0.360060838\
   \9739125,0.008616879296525728,0.9984
   2026-10-23,12,4,250,,74.94581927725058,13.858516599434923,0.36052689\
   \740666993,0.07829710184760974,0.0002
   2026-10-23,12,4,500,,75.0427012340892,9.99006723454537,0.35985273854\
   \30255,0.031078115831584686,0.1271
   2026-10-23,12,4,1400,,74.91274003411462,8.246192009815982,0.36006834\
   \91298452,0.009660763597394657,0.9988

               Figure 10: tare_E2_design_sweep_2026-10-23.csv

G.5.  tare_E2b_budget_sweep_2026-10-23.csv

   Produced by the script of Section F.3.  Reproduced in: Table B-4.

Cummings                  Expires 28 April 2027                [Page 86]
Internet-Draft                    TARE                      October 2026

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,candidates_per_group,budget_candidates,tare_intercept_sd,t\
   \are_at_90_sd,baseline_mean_of_6_groups_sd,tare_intercept_rmse_vs_tr\
   \ue,baseline_rmse_vs_true
   2026-10-23,1,6,25.848462162958874,23.554891707197932,14.419150704205\
   \602,79.47183910783815,108.2280098695189
   2026-10-23,2,12,15.828486446387288,14.4378434874567,8.92515654745364\
   \3,76.26615253747143,107.78384634866255
   2026-10-23,4,24,9.985193918496869,9.107497166266445,5.63817239840396\
   \6,75.48944815075222,107.55699375502572
   2026-10-23,8,48,6.523620378888386,5.948086672265669,3.61713972293805\
   \9,75.36311143159789,107.44501200049835
   2026-10-23,16,96,4.32944578589779,3.9485435854293054,2.4519741700715\
   \096,75.16661470056732,107.47132391430411
   2026-10-23,32,192,2.979860247095177,2.718459483886751,1.646694297663\
   \7653,75.07802847238908,107.40821684645637

              Figure 11: tare_E2b_budget_sweep_2026-10-23.csv

G.6.  tare_E4_length_zero_meaning_2026-10-23.csv

   Produced by the script of Section F.3.  Reproduced in: Table B-5.

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,case,intercept_mean,intercept_error_vs_75,predicted_error_\
   \slope_x_overhead
   2026-10-23,L is effective length (as simulated),74.98135657960727,-0\
   \.01864342039273481,0.0
   2026-10-23,L = NTP payload; +28 B IPv4/UDP both ways,84.998256529396\
   \43,9.998256529396429,10.08
   2026-10-23,L = UDP payload; +66 B IP+Ethernet framing both ways,98.8\
   \356185996677,23.835618599667697,23.759999999999998
   2026-10-23,L = NTP payload; +100 B tunnel+framing both ways,110.9257\
   \0919129197,35.92570919129197,36.0

           Figure 12: tare_E4_length_zero_meaning_2026-10-23.csv

G.7.  tare_stress_estimators_2026-10-23.csv

   Produced by the script of Section F.4.  Reproduced in: Table C-1
   reproduces four of the six estimators; the other two are only here.

Cummings                  Expires 28 April 2027                [Page 87]
Internet-Draft                    TARE                      October 2026

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,scenario,estimator,n,mean,sd,bias_vs_nominal_target,rmse_v\
   \s_true_offset,p95_abs_err_vs_true
   2026-10-23,nominal,base1,10000,107.39128437358303,8.792161830826513,\
   \-0.0087156264169721,107.75055609534577,121.83238788894438
   2026-10-23,nominal,base6,10000,107.35793066737342,3.6301301116303843\
   \,-0.04206933262658197,107.41928041102983,113.36994553024049
   2026-10-23,nominal,tare90,10000,107.39876628147222,5.999187038315719\
   \,-0.0012337185277857543,107.56617333008772,117.14816871875605
   2026-10-23,nominal,tare0,10000,74.99523487274244,6.575559924569044,-\
   \0.004765127257556401,75.28292580752007,85.6377620445779
   2026-10-23,nominal,ts0,10000,74.97565867258736,6.898471026325922,-0.\
   \0243413274126425,75.29232057121848,86.22422952918939
   2026-10-23,nominal,tare_t0,10000,75.02992585143228,45.40383458046601\
   \,0.029925851432281547,87.69715968640197,142.58260032336293
   2026-10-23,"drift 0.1 ppm, sequential order",base1,10000,105.4680810\
   \3422643,8.97255427428841,-1.9319189657735762,105.84901887393279,120\
   \.38978429821964
   2026-10-23,"drift 0.1 ppm, sequential order",base6,10000,107.4343174\
   \3600657,3.6625919902208146,0.03431743600656034,107.49672460856398,1\
   \13.51734179047979
   2026-10-23,"drift 0.1 ppm, sequential order",tare90,10000,105.642030\
   \85590282,5.961811984409265,-1.7579691440971885,105.81010505229051,1\
   \15.44734976659208
   2026-10-23,"drift 0.1 ppm, sequential order",tare0,10000,72.98204347\
   \666837,6.536114195569005,-2.017956523331634,73.27410993474403,83.75\
   \072138781687
   2026-10-23,"drift 0.1 ppm, sequential order",ts0,10000,72.9213736904\
   \8497,6.848207386938218,-2.0786263095150304,73.24220091946601,84.082\
   \588469154
   2026-10-23,"drift 0.1 ppm, sequential order",tare_t0,10000,74.289887\
   \22330892,45.301274239484314,-0.7101127766910764,87.01142207106004,1\
   \44.5111059527595
   2026-10-23,"drift 1 ppm, sequential order",base1,10000,87.3495154450\
   \0777,9.146555301312995,-20.050484554992238,87.82704000710851,102.15\
   \736299465063
   2026-10-23,"drift 1 ppm, sequential order",base6,10000,107.368729234\
   \72151,3.751380393745859,-0.03127076527849226,107.43423786229435,113\
   \.49582394671278
   2026-10-23,"drift 1 ppm, sequential order",tare90,10000,89.737357230\
   \2883,6.1669359615080825,-17.66264276971171,89.94898875873925,99.802\
   \34356959727
   2026-10-23,"drift 1 ppm, sequential order",tare0,10000,54.6914371407\
   \6866,6.7671178227071564,-20.308562859231337,55.10846215202061,65.66\
   \835426376657
   2026-10-23,"drift 1 ppm, sequential order",ts0,10000,54.471301697128\
   \2,7.313529461292046,-20.528698302871803,54.96003159560073,66.430209\

Cummings                  Expires 28 April 2027                [Page 88]
Internet-Draft                    TARE                      October 2026

   \25358651
   2026-10-23,"drift 1 ppm, sequential order",tare_t0,10000,75.52196418\
   \391782,45.07188865598309,0.5219641839178166,87.94793387965177,140.3\
   \120832397408
   2026-10-23,"drift 5 ppm, sequential order",base1,10000,7.45505877613\
   \2406,14.681597397417752,-99.9449412238676,16.465286167122592,31.018\
   \07828368379
   2026-10-23,"drift 5 ppm, sequential order",base6,10000,107.404445391\
   \62694,5.8581625070897845,0.004445391626930473,107.5640717248824,116\
   \.94195627988077
   2026-10-23,"drift 5 ppm, sequential order",tare90,10000,18.740493307\
   \672335,9.729470172394374,-88.65950669232767,21.11537858982026,34.87\
   \186430682102
   2026-10-23,"drift 5 ppm, sequential order",tare0,10000,-26.950841664\
   \256714,10.679243634033284,-101.95084166425671,28.989355052888236,44\
   \.43949211627997
   2026-10-23,"drift 5 ppm, sequential order",ts0,10000,-27.65696845135\
   \158,12.70984479877511,-102.65696845135159,30.437343916848704,48.084\
   \641498642426
   2026-10-23,"drift 5 ppm, sequential order",tare_t0,10000,75.16217359\
   \27848,43.25346171032368,0.16217359278479648,86.71809040173427,140.5\
   \7543685826874
   2026-10-23,"drift 1 ppm, randomized order",base1,10000,107.320449975\
   \00644,16.59942808843529,-0.07955002499356567,108.596466064047,133.5\
   \687638495818
   2026-10-23,"drift 1 ppm, randomized order",base6,10000,107.357257894\
   \2108,6.396691104917148,-0.0427421057892019,107.54763776062262,117.9\
   \3535254617031
   2026-10-23,"drift 1 ppm, randomized order",tare90,10000,107.52210419\
   \833507,10.892922530451527,0.12210419833506592,108.07241455115138,12\
   \5.26415732437714
   2026-10-23,"drift 1 ppm, randomized order",tare0,10000,75.1310441661\
   \4286,11.9793620246121,0.13104416614285697,76.07998791732406,94.7053\
   \1864072693
   2026-10-23,"drift 1 ppm, randomized order",ts0,10000,75.126903949336\
   \45,13.777652798630424,0.12690394933645166,76.37968598574341,97.5076\
   \1281212831
   2026-10-23,"drift 1 ppm, randomized order",tare_t0,10000,75.04449677\
   \796254,8.293904124043067,0.044496777962535816,75.50138053964237,87.\
   \5757067610097
   2026-10-23,"drift 5 ppm, randomized order",base1,10000,107.560287710\
   \69867,69.1134211513356,0.1602877106986682,127.84914082289264,214.93\
   \26475137432
   2026-10-23,"drift 5 ppm, randomized order",base6,10000,107.346992658\
   \56673,26.936514779197243,-0.053007341433271904,110.67465881449759,1\
   \51.7216114539863
   2026-10-23,"drift 5 ppm, randomized order",tare90,10000,107.79001040\
   \985175,46.29650385997894,0.3900104098517403,117.31086171870882,184.\

Cummings                  Expires 28 April 2027                [Page 89]
Internet-Draft                    TARE                      October 2026

   \69266740323977
   2026-10-23,"drift 5 ppm, randomized order",tare0,10000,75.4433995435\
   \3828,50.979331271905366,0.44339954353827693,91.0512979720494,159.89\
   \228795771217
   2026-10-23,"drift 5 ppm, randomized order",ts0,10000,75.341087038689\
   \55,60.12757254283643,0.34108703868955104,96.3910931754976,173.87065\
   \616241603
   2026-10-23,"drift 5 ppm, randomized order",tare_t0,10000,75.14384178\
   \876436,8.161874190828872,0.14384178876436238,75.58575585031043,88.0\
   \0195251906217
   2026-10-23,"path step +50 us mid-window, sequential",base1,10000,111\
   \.9720203353208,17.085397018430676,4.572020335320801,113.26789014620\
   \059,156.79138812874024
   2026-10-23,"path step +50 us mid-window, sequential",base6,10000,132\
   \.8951632417654,15.265528677198335,25.495163241765397,133.7689705246\
   \0728,157.2568577512812
   2026-10-23,"path step +50 us mid-window, sequential",tare90,10000,11\
   \4.21577200762813,19.57114043451596,6.8157720076281265,115.880256343\
   \57322,156.3442540948604
   2026-10-23,"path step +50 us mid-window, sequential",tare0,10000,79.\
   \02001723237532,20.64439482598379,4.020017232375324,81.6719752548707\
   \9,123.71063703833104
   2026-10-23,"path step +50 us mid-window, sequential",ts0,10000,82.30\
   \064867299824,22.3645386874593,7.300648672998236,85.28493035372708,1\
   \26.08493426323285
   2026-10-23,"path step +50 us mid-window, sequential",tare_t0,10000,9\
   \8.29561392187853,92.7282151574516,23.295613921878527,135.1284194770\
   \9228,239.7521271165904
   2026-10-23,"path step +50 us mid-window, randomized",base1,10000,133\
   \.13834233678398,26.4759357218637,25.738342336783973,135.74506722167\
   \737,168.12294170914777
   2026-10-23,"path step +50 us mid-window, randomized",base6,10000,133\
   \.12855273628202,16.96328217679465,25.728552736282012,134.2048274860\
   \9442,159.0876012236855
   2026-10-23,"path step +50 us mid-window, randomized",tare90,10000,13\
   \2.9150174867677,20.59952429843814,25.515017486767704,134.5016722601\
   \9747,164.21406031644014
   2026-10-23,"path step +50 us mid-window, randomized",tare0,10000,100\
   \.50024256820386,21.682980562506874,25.50024256820386,102.8124670804\
   \9203,133.83239344337724
   2026-10-23,"path step +50 us mid-window, randomized",ts0,10000,100.7\
   \5247537076034,24.178567157838007,25.752475370760337,103.61276920742\
   \331,134.25224308668473
   2026-10-23,"path step +50 us mid-window, randomized",tare_t0,10000,1\
   \00.61605494437771,21.69900577539814,25.61605494437771,102.929054593\
   \56766,133.5704870526017
   2026-10-23,shaper: +40 us forward for L>=1100 B,base1,10000,107.4902\
   \0288714878,8.857422779982945,0.09020288714877722,107.85448442058374\

Cummings                  Expires 28 April 2027                [Page 90]
Internet-Draft                    TARE                      October 2026

   \,122.54629482991535
   2026-10-23,shaper: +40 us forward for L>=1100 B,base6,10000,107.4593\
   \4323654548,3.629870496051695,0.05934323654547313,107.5206263516532,\
   \113.4170631557675
   2026-10-23,shaper: +40 us forward for L>=1100 B,tare90,10000,103.530\
   \87090040853,5.974282758599966,-3.8691290995914756,103.7030844028822\
   \3,113.3734152534337
   2026-10-23,shaper: +40 us forward for L>=1100 B,tare0,10000,69.55496\
   \532493109,6.554883475443652,-5.445034675068911,69.86311904058729,80\
   \.44481766948037
   2026-10-23,shaper: +40 us forward for L>=1100 B,ts0,10000,70.4741011\
   \5339623,7.3502520957216095,-4.525898846603766,70.8563316622389,82.1\
   \2058878956057
   2026-10-23,shaper: +40 us forward for L>=1100 B,tare_t0,10000,56.122\
   \07859017205,52.000192616861185,-18.877921409827948,76.5077599689658\
   \4,135.6155180364307
   2026-10-23,"quadratic forward term, +30 us at 1400 B",base1,10000,10\
   \7.40184304166394,8.825717921536546,0.0018430416639318992,107.763822\
   \29787075,122.03270328171797
   2026-10-23,"quadratic forward term, +30 us at 1400 B",base6,10000,10\
   \7.42745327379541,3.6796215253837077,0.027453273795401856,107.490445\
   \98243186,113.39601414470326
   2026-10-23,"quadratic forward term, +30 us at 1400 B",tare90,10000,1\
   \05.81169373061252,5.983265064578664,-1.5883062693874876,105.9807077\
   \3035944,115.75294391153614
   2026-10-23,"quadratic forward term, +30 us at 1400 B",tare0,10000,72\
   \.38924707235698,6.5655719540845645,-2.61075292764302,72.68635027371\
   \714,83.31516380291136
   2026-10-23,"quadratic forward term, +30 us at 1400 B",ts0,10000,72.5\
   \5320857917452,6.938946130257995,-2.446791420825477,72.8842385817021\
   \9,83.74432482616882
   2026-10-23,"quadratic forward term, +30 us at 1400 B",tare_t0,10000,\
   \66.53219421378982,44.60768989297689,-8.467805786210178,80.101060416\
   \76154,135.48511543836398
   2026-10-23,"fragmentation at >=1300 B (+30 us, +20 B hdr)",base1,100\
   \00,107.3231077617425,9.002564109762847,-0.07689223825749991,107.699\
   \98846598325,122.00100552219531
   2026-10-23,"fragmentation at >=1300 B (+30 us, +20 B hdr)",base6,100\
   \00,107.42118778477548,3.687246769300956,0.02118778477547778,107.484\
   \44545259022,113.42568809770917
   2026-10-23,"fragmentation at >=1300 B (+30 us, +20 B hdr)",tare90,10\
   \000,103.83859082770982,5.89197094841486,-3.5614091722901833,104.005\
   \59982620813,113.36960115711936
   2026-10-23,"fragmentation at >=1300 B (+30 us, +20 B hdr)",tare0,100\
   \00,70.34551460505813,6.460757062370396,-4.654485394941872,70.641550\
   \32791419,80.7224288133247
   2026-10-23,"fragmentation at >=1300 B (+30 us, +20 B hdr)",ts0,10000\
   \,71.3951850854967,6.935086163395787,-3.6048149145032937,71.73118613\

Cummings                  Expires 28 April 2027                [Page 91]
Internet-Draft                    TARE                      October 2026

   \228172,82.35480991415153
   2026-10-23,"fragmentation at >=1300 B (+30 us, +20 B hdr)",tare_t0,1\
   \0000,55.64693746414525,56.58192423318647,-19.353062535854747,79.358\
   \52599219288,141.31658182231175
   2026-10-23,iid packet loss 20%,base1,10000,107.31046367224008,10.711\
   \809772411806,-0.08953632775993015,107.84371566236315,124.3852629470\
   \7921
   2026-10-23,iid packet loss 20%,base6,10000,107.38837995374973,4.3124\
   \66228054635,-0.011620046250271798,107.47492570047457,114.4646165886\
   \3291
   2026-10-23,iid packet loss 20%,tare90,10000,107.37877989530251,7.054\
   \966157438488,-0.021220104697491138,107.61026875736198,118.893852823\
   \00368
   2026-10-23,iid packet loss 20%,tare0,10000,74.97422083654746,7.73717\
   \6582370022,-0.025779163452540388,75.37235371888035,87.59472042471418
   2026-10-23,iid packet loss 20%,ts0,10000,74.97895679423895,7.9320796\
   \45735273,-0.021043205761046124,75.39731797398294,87.90996670143198
   2026-10-23,iid packet loss 20%,tare_t0,10000,74.70072059459562,51.12\
   \934085901623,-0.29927940540437703,90.52152082836238,154.09287107398\
   \765
   2026-10-23,size-dependent loss 2%..32%,base1,10000,107.4514949590377\
   \,9.203191967716991,0.051494959037697186,107.84486098768228,122.6839\
   \6227274638
   2026-10-23,size-dependent loss 2%..32%,base6,10000,107.3414258539636\
   \6,3.7708137423037873,-0.05857414603634936,107.40763156655815,113.62\
   \819150751318
   2026-10-23,size-dependent loss 2%..32%,tare90,10000,107.348493296101\
   \6,6.439574396063519,-0.05150670389841139,107.54144775170998,118.041\
   \42339445714
   2026-10-23,size-dependent loss 2%..32%,tare0,10000,74.93178057012753\
   \,7.1137833644263475,-0.06821942987247098,75.26866939553506,86.82353\
   \611143745
   2026-10-23,size-dependent loss 2%..32%,ts0,10000,74.92054590047516,7\
   \.420326866207989,-0.07945409952483828,75.28707686383828,87.12159662\
   \228184
   2026-10-23,size-dependent loss 2%..32%,tare_t0,10000,74.985032582182\
   \58,50.38782366703389,-0.014967417817416617,90.34065525539259,150.90\
   \398740898357
   2026-10-23,length-label noise 10%,base1,10000,107.47719983393307,8.8\
   \4107021109682,0.07719983393306507,107.84018355960119,121.7199546663\
   \1036
   2026-10-23,length-label noise 10%,base6,10000,107.3643310979557,3.67\
   \9514717760834,-0.03566890204430706,107.42735716188321,113.409509965\
   \06885
   2026-10-23,length-label noise 10%,tare90,10000,125.84086998037,46.90\
   \122420443474,18.440869980369996,134.2960513820412,230.21552526613982
   2026-10-23,length-label noise 10%,tare0,10000,96.12156851268313,52.4\
   \8361233625839,21.121568512683126,109.5153415930604,210.932609580902\

Cummings                  Expires 28 April 2027                [Page 92]
Internet-Draft                    TARE                      October 2026

   \44
   2026-10-23,length-label noise 10%,ts0,10000,79.70242930422776,28.201\
   \44676026799,4.702429304227763,84.54418551389396,96.06698894351213
   2026-10-23,length-label noise 10%,tare_t0,10000,174.01200975239024,1\
   \19.92051276305703,99.01200975239024,211.32834837399915,355.77123500\
   \683837
   2026-10-23,queue asymmetry fwd 150 us / rev 20 us,base1,10000,112.46\
   \511894783866,11.62407011018761,5.065118947838656,113.06417856234336\
   \,133.39391284634692
   2026-10-23,queue asymmetry fwd 150 us / rev 20 us,base6,10000,112.62\
   \577876410928,4.811047685257853,5.225778764109279,112.72847868854585\
   \,120.88104590675934
   2026-10-23,queue asymmetry fwd 150 us / rev 20 us,tare90,10000,112.6\
   \3812378776628,8.000662225849123,5.23812378776627,112.92188063179204\
   \,126.62717511901069
   2026-10-23,queue asymmetry fwd 150 us / rev 20 us,tare0,10000,80.242\
   \14889546032,8.782827297606028,5.242148895460318,80.72132804219255,9\
   \5.49808215173785
   2026-10-23,queue asymmetry fwd 150 us / rev 20 us,ts0,10000,79.43947\
   \979062125,8.936554003644119,4.439479790621249,79.94050888419979,95.\
   \59559062227903
   2026-10-23,queue asymmetry fwd 150 us / rev 20 us,tare_t0,10000,80.1\
   \7184429065529,57.26711426306298,5.171844290655287,98.52268287428122\
   \,169.5517144528911
   2026-10-23,length-dependent forward queue (x2 at 700 B),base1,10000,\
   \107.48002751507508,9.535572673710542,0.08002751507507355,107.902151\
   \82350299,123.01495917850325
   2026-10-23,length-dependent forward queue (x2 at 700 B),base6,10000,\
   \107.59909378511901,3.871877246298984,0.199093785119004,107.66872766\
   \799979,113.9590944218608
   2026-10-23,length-dependent forward queue (x2 at 700 B),tare90,10000\
   \,107.56649141139663,7.296997094301871,0.1664914113966205,107.813686\
   \12813334,119.37769045621634
   2026-10-23,length-dependent forward queue (x2 at 700 B),tare0,10000,\
   \74.94995470326515,8.112828979684785,-0.05004529673485081,75.3877120\
   \1114747,87.97545788654323
   2026-10-23,length-dependent forward queue (x2 at 700 B),ts0,10000,74\
   \.87587656234865,8.24060734082144,-0.12412343765134892,75.3279344570\
   \4414,88.1958022650552
   2026-10-23,length-dependent forward queue (x2 at 700 B),tare_t0,1000\
   \0,74.33465333603843,62.10462494688878,-0.6653466639615715,96.861960\
   \68601312,169.80150520776283
   2026-10-23,"outliers 5% (mean +2 ms, one direction)",base1,10000,107\
   \.27037182645822,9.22474431023683,-0.12962817354178924,107.666243873\
   \30081,122.649011819113
   2026-10-23,"outliers 5% (mean +2 ms, one direction)",base6,10000,107\
   \.36662740976976,3.797355600071082,-0.033372590230243304,107.4337523\
   \7284955,113.55877757342698

Cummings                  Expires 28 April 2027                [Page 93]
Internet-Draft                    TARE                      October 2026

   2026-10-23,"outliers 5% (mean +2 ms, one direction)",tare90,10000,10\
   \7.42628950014912,6.217776656591957,0.026289500149118794,107.6060618\
   \935869,117.39500839838122
   2026-10-23,"outliers 5% (mean +2 ms, one direction)",tare0,10000,75.\
   \02666411754016,6.818532091685181,0.02666411754016451,75.33583515999\
   \236,85.95173985201274
   2026-10-23,"outliers 5% (mean +2 ms, one direction)",ts0,10000,75.00\
   \162263615142,7.102856320125174,0.0016226361514242171,75.33716825646\
   \697,86.49228679381335
   2026-10-23,"outliers 5% (mean +2 ms, one direction)",tare_t0,10000,7\
   \5.71687117584304,46.264862991669865,0.716871175843039,88.7314379717\
   \9458,146.9324472720637
   2026-10-23,outliers 30%,base1,10000,107.31667626788199,12.1924617488\
   \68384,-0.0833237321180178,108.00699173234415,126.45097456622874
   2026-10-23,outliers 30%,base6,10000,107.42999805819153,4.81941381912\
   \4463,0.02999805819152357,107.53803471176161,115.15462906621364
   2026-10-23,outliers 30%,tare90,10000,107.3711799843587,7.90211686293\
   \0065,-0.02882001564130121,107.66154140547991,120.25151629029783
   2026-10-23,outliers 30%,tare0,10000,74.97935815589001,8.656009061826\
   \511,-0.020641844109988483,75.47730221529095,89.11395300903834
   2026-10-23,outliers 30%,ts0,10000,74.9520692382415,8.872631289561616\
   \,-0.047930761758493645,75.47534959664684,89.34811448088035
   2026-10-23,outliers 30%,tare_t0,10000,74.73777634571724,57.373874765\
   \283425,-0.2622236542827636,94.21872182604855,162.32493564945338
   2026-10-23,symmetric encapsulation +66 B (L = payload),base1,10000,1\
   \31.07763821916816,8.819470977744194,23.67763821916816,131.373979657\
   \82864,145.4613901157737
   2026-10-23,symmetric encapsulation +66 B (L = payload),base6,10000,1\
   \31.16699840350915,3.6229785578651894,23.76699840350915,131.21701921\
   \328483,137.0985726707178
   2026-10-23,symmetric encapsulation +66 B (L = payload),tare90,10000,\
   \131.18801557216105,5.967838936867949,23.788015572161044,131.3236725\
   \416549,140.9750831270424
   2026-10-23,symmetric encapsulation +66 B (L = payload),tare0,10000,9\
   \8.79576905740502,6.539617528856273,23.795769057405025,99.0119503111\
   \0178,109.53581314728673
   2026-10-23,symmetric encapsulation +66 B (L = payload),ts0,10000,98.\
   \81624184733644,6.864496643113834,23.816241847336443,99.054360100215\
   \65,110.06054668849127
   2026-10-23,symmetric encapsulation +66 B (L = payload),tare_t0,10000\
   \,98.77486536084808,44.950101354518075,23.774865360848082,108.520890\
   \0980541,168.27988033466278
   2026-10-23,forward-only tunnel +50 B,base1,10000,127.40480482190563,\
   \8.831265817028074,20.004804821905623,127.71048409787382,142.2010736\
   \3436603
   2026-10-23,forward-only tunnel +50 B,base6,10000,127.42973085805647,\
   \3.643375886258205,20.029730858056467,127.48179935577664,133.3745876\
   \489423

Cummings                  Expires 28 April 2027                [Page 94]
Internet-Draft                    TARE                      October 2026

   2026-10-23,forward-only tunnel +50 B,tare90,10000,127.39086721741164\
   \,5.9787960684828665,19.990867217411633,127.53107651953881,137.11130\
   \70719768
   2026-10-23,forward-only tunnel +50 B,tare0,10000,94.98851911424349,6\
   \.555588944630524,19.988519114243488,95.21444329697738,105.625153279\
   \67158
   2026-10-23,forward-only tunnel +50 B,ts0,10000,94.95486319394824,6.8\
   \93207453832256,19.954863193948242,95.20471417714616,106.31364921605\
   \554
   2026-10-23,forward-only tunnel +50 B,tare_t0,10000,94.65300425217072\
   \,42.80917514995776,19.653004252170717,103.88278696893681,160.624361\
   \69756756
   2026-10-23,NTPv4-style fixed 90 B response,base1,10000,107.379592248\
   \41617,9.0167222352235,-0.020407751583832123,107.75745905121977,122.\
   \40318606250635
   2026-10-23,NTPv4-style fixed 90 B response,base6,10000,107.366253097\
   \60794,3.6295612494835403,-0.03374690239206757,107.4275788692637,113\
   \.30013671944906
   2026-10-23,NTPv4-style fixed 90 B response,tare90,10000,107.33969952\
   \785196,5.986218828851729,-0.06030047214804313,107.50647574502128,11\
   \7.24110043464331
   2026-10-23,NTPv4-style fixed 90 B response,tare0,10000,71.3367893129\
   \4679,6.572237676419196,-3.6632106870532084,71.63886862677478,82.218\
   \62831794897
   2026-10-23,NTPv4-style fixed 90 B response,ts0,10000,71.379108468134\
   \33,6.866160163691823,-3.6208915318656665,71.70855295349095,82.67879\
   \913749093
   2026-10-23,NTPv4-style fixed 90 B response,tare_t0,10000,70.96159627\
   \207027,46.5985959476657,-4.038403727929733,84.8926389439018,137.106\
   \3910737971
   2026-10-23,server rx timestamp lag 0.01 us/B,base1,10000,107.8361781\
   \7313242,8.903715077409084,0.4361781731324186,108.20309393706367,122\
   \.54445730132485
   2026-10-23,server rx timestamp lag 0.01 us/B,base6,10000,107.8371219\
   \6352323,3.6995906502705433,0.4371219635232251,107.9005582731538,113\
   \.83131296343885
   2026-10-23,server rx timestamp lag 0.01 us/B,tare90,10000,107.965805\
   \77342289,5.975346469871526,0.5658057734228805,108.13101502928258,11\
   \7.82428641898096
   2026-10-23,server rx timestamp lag 0.01 us/B,tare0,10000,75.12254341\
   \76746,6.550382721609414,0.1225434176746063,75.40755766227007,85.834\
   \13358241897
   2026-10-23,server rx timestamp lag 0.01 us/B,ts0,10000,75.1135577315\
   \117,6.853316034232664,0.11355773151170467,75.42552485038567,86.2468\
   \6213713227
   2026-10-23,server rx timestamp lag 0.01 us/B,tare_t0,10000,75.219426\
   \49527253,44.26531637750409,0.2194264952725291,87.27648259671581,143\
   \.1533638104711

Cummings                  Expires 28 April 2027                [Page 95]
Internet-Draft                    TARE                      October 2026

   2026-10-23,adversary: fwd delay 0.05 us/B on every packet,base1,1000\
   \0,109.66156034312232,8.948480118863568,2.261560343122312,110.026020\
   \13067776,124.40975079343846
   2026-10-23,adversary: fwd delay 0.05 us/B on every packet,base6,1000\
   \0,109.66777952048622,3.638691606305587,2.267779520486215,109.728121\
   \36162777,115.64813381723187
   2026-10-23,adversary: fwd delay 0.05 us/B on every packet,tare90,100\
   \00,109.65543400181271,5.9575197254644126,2.255434001812702,109.8171\
   \3299026285,119.43074900980193
   2026-10-23,adversary: fwd delay 0.05 us/B on every packet,tare0,1000\
   \0,75.00432084946102,6.531628170745785,0.004320849461024068,75.28815\
   \342690454,85.68727865662245
   2026-10-23,adversary: fwd delay 0.05 us/B on every packet,ts0,10000,\
   \75.00029809370533,6.864354766908759,0.0002980937053251864,75.313739\
   \57369269,86.15298598177802
   2026-10-23,adversary: fwd delay 0.05 us/B on every packet,tare_t0,10\
   \000,74.74297869951941,45.37561822031554,-0.2570213004805879,87.4371\
   \4141644703,143.57338203030673
   2026-10-23,adversary: +200 us fwd on 90 B packets only,base1,10000,2\
   \07.3447011223797,8.79096893274928,99.94470112237968,207.53095790795\
   \177,221.6672421611448
   2026-10-23,adversary: +200 us fwd on 90 B packets only,base6,10000,2\
   \07.35614981264933,3.590969033645961,99.95614981264933,207.387238359\
   \11557,213.33903173287882
   2026-10-23,adversary: +200 us fwd on 90 B packets only,tare90,10000,\
   \152.29873266030657,5.961055214796842,44.898732660306564,152.4153358\
   \287527,162.0888125759671
   2026-10-23,adversary: +200 us fwd on 90 B packets only,tare0,10000,1\
   \24.13859082246859,6.533307910337464,49.138590822468586,124.31037597\
   \573396,134.82856369340442
   2026-10-23,adversary: +200 us fwd on 90 B packets only,ts0,10000,88.\
   \80578906058017,12.385939920232648,13.805789060580167,89.66529059356\
   \861,111.70181485667615
   2026-10-23,adversary: +200 us fwd on 90 B packets only,tare_t0,10000\
   \,-24.265944807723937,153.46629538686963,-99.26594480772394,155.3653\
   \2659122963,316.73899500522253
   2026-10-23,adversary: +200 us fwd on 1400 B packets only,base1,10000\
   \,107.2013665038702,8.919436632836964,-0.1986334961298013,107.571749\
   \89052338,121.85137641283792
   2026-10-23,adversary: +200 us fwd on 1400 B packets only,base6,10000\
   \,107.35571442664015,3.6564793386018137,-0.04428557335985772,107.417\
   \9590395564,113.28485985030635
   2026-10-23,adversary: +200 us fwd on 1400 B packets only,tare90,1000\
   \0,90.53843305071119,5.977383855085858,-16.861566949288814,90.735513\
   \4669848,100.35759235509434
   2026-10-23,adversary: +200 us fwd on 1400 B packets only,tare0,10000\
   \,53.10725852711643,6.557632184288793,-21.89274147288357,53.51055174\
   \333763,63.8115471030983

Cummings                  Expires 28 April 2027                [Page 96]
Internet-Draft                    TARE                      October 2026

   2026-10-23,adversary: +200 us fwd on 1400 B packets only,ts0,10000,6\
   \8.54501364580511,8.382708841892214,-6.454986354194887,69.0556418857\
   \3439,80.9780266043166
   2026-10-23,adversary: +200 us fwd on 1400 B packets only,tare_t0,100\
   \00,-8.76228531104771,156.6200642910472,-83.7622853110477,156.857161\
   \76811982,308.57555873428083

              Figure 13: tare_stress_estimators_2026-10-23.csv

G.8.  tare_stress_validity_2026-10-23.csv

   Produced by the script of Section F.4.  Reproduced in: Table C-2.

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,scenario,frac_rejected_by_gate,frac_fit_available,frac_bad\
   \_among_all,false_valid_rate,accepted_mean_err_vs_75,accepted_sd,mea\
   \n_slope,nominal_slope,median_p_curv
   2026-10-23,nominal,0.011199999999999988,1.0,0.0007,0.0007,-0.0069040\
   \0147930916,6.5689845824742665,0.36003923787477515,0.36,0.4905423392\
   \0969736
   2026-10-23,"drift 0.1 ppm, sequential order",0.009000000000000008,1.\
   \0,0.0011,0.0011,-2.0253242414116657,6.535189316613825,0.36288874865\
   \81604,0.36,0.49260972032053496
   2026-10-23,"drift 1 ppm, sequential order",0.01419999999999999,1.0,0\
   \.2287,0.2251,-20.3043423317903,6.768408056107253,0.3893991121057736\
   \,0.36,0.4824083889575322
   2026-10-23,"drift 5 ppm, sequential order",0.12350000000000005,1.0,1\
   \.0,0.8765,-101.88742781875878,10.801204319803015,0.5076814996881006\
   \,0.36,0.3791380216182796
   2026-10-23,"drift 1 ppm, randomized order",0.11050000000000004,1.0,0\
   \.034,0.0311,0.14447866597171263,12.098786869429427,0.35990066702435\
   \797,0.36,0.5061246466612312
   2026-10-23,"drift 5 ppm, randomized order",0.9904,1.0,0.6363,0.0075,\
   \-2.1202396697999077,75.63849341222092,0.35940678740348303,0.36,0.50\
   \90241318780732
   2026-10-23,"path step +50 us mid-window, sequential",0.1435999999999\
   \9995,1.0,0.1917,0.1623,3.814778825031893,21.06727457320795,0.391063\
   \94194725347,0.36,0.2872586565694124
   2026-10-23,"path step +50 us mid-window, randomized",0.486,1.0,0.516\
   \8,0.272,26.172401849090793,25.360841864591308,0.36016416576182053,0\
   \.36,0.4892236600363379
   2026-10-23,shaper: +40 us forward for L>=1100 B,0.015599999999999947\
   \,1.0,0.0026,0.0026,-5.452873526481344,6.546933716794406,0.377510061\
   \94974934,0.36,0.4400188313560851
   2026-10-23,"quadratic forward term, +30 us at 1400 B",0.013499999999\
   \999956,1.0,0.0016,0.0016,-2.610548702367001,6.565459334575394,0.371\
   \36051842506146,0.36,0.46368594532465085

Cummings                  Expires 28 April 2027                [Page 97]
Internet-Draft                    TARE                      October 2026

   2026-10-23,"fragmentation at >=1300 B (+30 us, +20 B hdr)",0.0322000\
   \00000000006,1.0,0.002,0.0018,-4.676623201731776,6.431286887352099,0\
   \.3721452913627967,0.36,0.2559573178795847
   2026-10-23,iid packet loss 20%,0.018299999999999983,1.0,0.0035,0.003\
   \,0.008968904728534103,7.669945088189061,0.3600506562083894,0.36,0.4\
   \946962284512907
   2026-10-23,size-dependent loss 2%..32%,0.016700000000000048,1.0,0.00\
   \12,0.0011,-0.075744543029013,7.091580139085991,0.36018569695526736,\
   \0.36,0.4833686182777541
   2026-10-23,length-label noise 10%,0.4548,1.0,0.3145,0.0057,0.0985442\
   \0153770511,7.40469527138702,0.3302144607520764,0.36,0.5348010766339\
   \137
   2026-10-23,queue asymmetry fwd 150 us / rev 20 us,0.0362000000000000\
   \1,1.0,0.0223,0.0167,5.029838268141658,8.539051113297777,0.359955276\
   \5811776,0.36,0.5009255093568354
   2026-10-23,length-dependent forward queue (x2 at 700 B),0.0456999999\
   \9999996,1.0,0.0045,0.0036,-0.08854436925912554,7.981382975559291,0.\
   \3624059634236828,0.36,0.45973949701964856
   2026-10-23,"outliers 5% (mean +2 ms, one direction)",0.0113999999999\
   \99966,1.0,0.0009,0.0009,0.028442752806790986,6.80995066185115,0.359\
   \995837584544,0.36,0.4911255331655068
   2026-10-23,outliers 30%,0.030299999999999994,1.0,0.0088,0.0067,-0.01\
   \578147641986134,8.48273894050102,0.3599091314274301,0.36,0.48756980\
   \918753123
   2026-10-23,symmetric encapsulation +66 B (L = payload),0.00919999999\
   \9999986,1.0,0.42,0.4166,23.789875730076844,6.534443603694672,0.3599\
   \138501639558,0.36,0.49292535852856334
   2026-10-23,forward-only tunnel +50 B,0.012299999999999978,1.0,0.2136\
   \,0.2111,19.987264529983847,6.551517150254236,0.36002609003520164,0.\
   \36,0.491344368407889
   2026-10-23,NTPv4-style fixed 90 B response,0.008600000000000052,1.0,\
   \0.0017,0.0016,-3.6528035552276963,6.563182262640934,0.4000323357211\
   \6825,0.36,0.4920555156894102
   2026-10-23,server rx timestamp lag 0.01 us/B,0.010800000000000032,1.\
   \0,0.0008,0.0008,0.13173175727891126,6.545196828746784,0.36492513728\
   \6092,0.36,0.4943305202449827
   2026-10-23,adversary: fwd delay 0.05 us/B on every packet,0.01090000\
   \000000002,1.0,0.0009,0.0008,0.00643319229954513,6.511101731326142,0\
   \.3850123683594632,0.36,0.5013585720542335
   2026-10-23,adversary: +200 us fwd on 90 B packets only,0.9996,1.0,0.\
   \9998,0.0004,41.81128985217287,9.66202657761693,0.31289046486486666,\
   \0.36,0.2236482382373992
   2026-10-23,adversary: +200 us fwd on 1400 B packets only,0.9936,1.0,\
   \0.3087,0.0015,-20.509410888943346,6.215262218852488,0.4159019391510\
   \5284,0.36,0.09331799367643742

               Figure 14: tare_stress_validity_2026-10-23.csv

Cummings                  Expires 28 April 2027                [Page 98]
Internet-Draft                    TARE                      October 2026

G.9.  tare_supplement_gate_2026-10-24.csv

   Produced by the script of Section F.6.  Reproduced in: Table C-3.

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,scenario,overhead_B,predicted_shift_us,mean_err_vs_75,sd,f\
   \rac_rejected_by_gate,frac_beyond_25us,false_valid_rate,accepted_mea\
   \n_err_vs_75,mean_slope,median_p_curv
   2026-10-24,no overhead (control),0.0,0.0,0.035394557258442205,6.5413\
   \14462072287,0.011299999999999977,0.0006,0.0006,0.045617406490953354\
   \,0.3599022131509252,0.49249343407002355
   2026-10-24,"payload-only, symmetric overhead 28 B",28.0,10.08,10.133\
   \604177197014,6.6093632568998695,0.009099999999999997,0.0157,0.0155,\
   \10.129214658375998,0.35992265832363174,0.49433484795555127
   2026-10-24,"payload-only, symmetric overhead 66 B",66.0,23.759999999\
   \999998,23.744592399535847,6.584711978727442,0.010000000000000009,0.\
   \4178,0.4139,23.744810109956845,0.36001195531160946,0.493352113673002
   2026-10-24,"payload-only, symmetric overhead 100 B",100.0,36.0,35.90\
   \016708754753,6.515753553377028,0.010299999999999976,0.9532,0.9436,3\
   \5.90491283338781,0.360052851087162,0.5046912354071931

               Figure 15: tare_supplement_gate_2026-10-24.csv

G.10.  tare_hybrid_estimators_2026-10-23.csv

   Produced by the script of Section F.5.  Reproduced in: Per-estimator
   distribution summaries for the hybrid scenarios; not tabulated
   elsewhere.

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,scenario,estimator,n,mean,sd,mean_err_vs_75,rmse_vs_75,p95\
   \_abs_err_vs_75,rmse_vs_true_offset
   2026-10-23,nominal,base48,5000,107.47207388438466,3.2106415810739732\
   \,32.472073884384656,32.630380630191645,37.823443665098985,107.52001\
   \126640978
   2026-10-23,nominal,base58 (fully loaded),5000,107.39418718194175,2.9\
   \88052019572123,32.394187181941746,32.53167736774995,37.354385647512\
   \984,107.43573944293695
   2026-10-23,nominal,"ols_intercept_raw (orig, 1 window)",5000,75.0464\
   \0163682264,6.567761044491434,0.04640163682263676,6.567268165105756,\
   \13.004402726773607,75.33318828163192
   2026-10-23,nominal,ols_gated (orig gate),5000,75.49600667119374,7.50\
   \4786984342197,0.4960066711937401,7.520411287468571,14.0636934395952\
   \16,75.86802743324586
   2026-10-23,nominal,hybrid_raw,5000,75.07170217557301,3.2129513526577\
   \376,0.07170217557300873,3.213430096524301,6.727123498134083,75.1404\

Cummings                  Expires 28 April 2027                [Page 99]
Internet-Draft                    TARE                      October 2026

   \116259766
   2026-10-23,nominal,hybrid_gated,5000,75.37597789912806,4.47982559604\
   \8762,0.3759778991280598,4.495128806182554,7.06308282918277,75.50895\
   \885822675
   2026-10-23,"drift 1 ppm, sequential (neg. control)",base48,5000,107.\
   \33106199933968,14.228450081145045,32.33106199933968,35.322880289671\
   \19,54.487571174794134,108.26987194903019
   2026-10-23,"drift 1 ppm, sequential (neg. control)",base58 (fully lo\
   \aded),5000,107.3411828825811,16.887862979454802,32.341182882581094,\
   \36.484174463377855,58.979829716440605,108.6612737761773
   2026-10-23,"drift 1 ppm, sequential (neg. control)","ols_intercept_r\
   \aw (orig, 1 window)",5000,54.596806309899385,6.792692355773483,-20.\
   \403193690100615,21.50399390955217,31.425557352718112,55.01765807944\
   \723
   2026-10-23,"drift 1 ppm, sequential (neg. control)",ols_gated (orig \
   \gate),5000,55.26037174392515,9.104710204848413,-19.73962825607485,2\
   \1.737803303294395,31.93291352566301,56.00524845085047
   2026-10-23,"drift 1 ppm, sequential (neg. control)",hybrid_raw,5000,\
   \73.6012817455373,14.228153160352974,-1.3987182544626933,14.29532325\
   \767272,24.27190683535942,74.96364804938428
   2026-10-23,"drift 1 ppm, sequential (neg. control)",hybrid_gated,500\
   \0,73.62148727120959,14.241113217933378,-1.3785127287904118,14.30625\
   \8811034308,24.27190683535942,74.98594622894169
   2026-10-23,"drift 1 ppm, randomized",base48,5000,107.36962065873519,\
   \14.267477045983545,32.36962065873519,35.3738961759633,54.5758264634\
   \6167,108.31322924499163
   2026-10-23,"drift 1 ppm, randomized",base58 (fully loaded),5000,107.\
   \51782691249173,16.782879285318757,32.51782691249173,36.592591753098\
   \48,58.66770675581011,108.81953780494884
   2026-10-23,"drift 1 ppm, randomized","ols_intercept_raw (orig, 1 win\
   \dow)",5000,75.03711642656788,12.150431465773751,0.03711642656787717\
   \,12.14927305794981,23.827664637152715,76.01429010272875
   2026-10-23,"drift 1 ppm, randomized",ols_gated (orig gate),5000,78.4\
   \8940610068713,16.06522134851812,3.489406100687134,16.43823815513693\
   \,35.29538224309208,80.11633159817086
   2026-10-23,"drift 1 ppm, randomized",hybrid_raw,5000,74.968398896143\
   \82,14.27580109775702,-0.03160110385617543,14.27440842602904,23.9774\
   \4388647323,76.31525778201016
   2026-10-23,"drift 1 ppm, randomized",hybrid_gated,5000,75.3245359335\
   \3078,14.709977665188344,0.32453593353078247,14.71208652074581,24.36\
   \3938662119637,76.74715551617226
   2026-10-23,"drift 5 ppm, randomized",base48,5000,107.0361119208365,6\
   \9.06513245619675,32.036111920836504,76.12720269189015,139.849351536\
   \85413,127.38040578447534
   2026-10-23,"drift 5 ppm, randomized",base58 (fully loaded),5000,106.\
   \5656539164254,83.31660550877665,31.565653916425404,89.0879280785334\
   \7,161.75820491918205,135.2645815311228
   2026-10-23,"drift 5 ppm, randomized","ols_intercept_raw (orig, 1 win\

Cummings                  Expires 28 April 2027               [Page 100]
Internet-Draft                    TARE                      October 2026

   \dow)",5000,74.62979207231322,49.96974582083732,-0.3702079276867778,\
   \49.966120083605965,96.67832922386974,89.81136880738605
   2026-10-23,"drift 5 ppm, randomized",ols_gated (orig gate),5000,106.\
   \81193675331096,69.10256841498607,31.81193675331096,76.0671364555823\
   \,139.80453138249118,127.21241984000156
   2026-10-23,"drift 5 ppm, randomized",hybrid_raw,5000,74.629478886093\
   \2,69.0616929892043,-0.3705211139068041,69.05578050346875,113.875084\
   \81612728,101.67655901857239
   2026-10-23,"drift 5 ppm, randomized",hybrid_gated,5000,75.0692428405\
   \1455,69.18685436298135,0.06924284051454777,69.17996998446895,114.05\
   \203285035869,102.08454669110898
   2026-10-23,"path step +50 us, randomized",base48,5000,132.6056286847\
   \6282,25.2392054571124,57.60562868476282,62.891164282231884,86.41860\
   \373436914,134.98571349401794
   2026-10-23,"path step +50 us, randomized",base58 (fully loaded),5000\
   \,132.81670363923598,25.22427384970892,57.81670363923598,63.07858557\
   \509122,86.18526198871061,135.1902862784139
   2026-10-23,"path step +50 us, randomized","ols_intercept_raw (orig, \
   \1 window)",5000,100.64425545312488,21.85364980690612,25.64425545312\
   \4885,33.69145783764836,58.85991049094266,102.98908995226034
   2026-10-23,"path step +50 us, randomized",ols_gated (orig gate),5000\
   \,115.58854589935306,29.61601166537837,40.588545899353065,50.2430371\
   \649478,84.5787237812969,119.32160185172374
   2026-10-23,"path step +50 us, randomized",hybrid_raw,5000,100.209032\
   \14940755,25.238941162113363,25.209032149407548,35.670324529842546,5\
   \4.00040712156317,103.33792563466436
   2026-10-23,"path step +50 us, randomized",hybrid_gated,5000,100.2412\
   \4704797,25.254941043414444,25.241247047970006,35.704412013553345,54\
   \.01851809166925,103.37307238555442
   2026-10-23,"path step +50 us, sequential (neg. control)",base48,5000\
   \,133.04636607169522,25.195713151085386,58.04636607169522,63.2777813\
   \3380458,86.21758279770889,135.4106071224964
   2026-10-23,"path step +50 us, sequential (neg. control)",base58 (ful\
   \ly loaded),5000,132.3511401830933,25.239319980306572,57.35114018309\
   \329,62.65819298954054,86.1088532989731,134.735742014428
   2026-10-23,"path step +50 us, sequential (neg. control)","ols_interc\
   \ept_raw (orig, 1 window)",5000,79.17619090529297,20.552726646051898\
   \,4.1761909052929695,20.97070957669926,49.13692428963034,81.79975119\
   \732462
   2026-10-23,"path step +50 us, sequential (neg. control)",ols_gated (\
   \orig gate),5000,86.5470449442895,28.493022727663284,11.547044944289\
   \496,30.741246244024428,81.29264729337652,91.11575583991592
   2026-10-23,"path step +50 us, sequential (neg. control)",hybrid_raw,\
   \5000,99.26567523321043,25.196749787787375,24.26567523321043,34.9795\
   \97183958994,52.42766882633067,102.41300456550232
   2026-10-23,"path step +50 us, sequential (neg. control)",hybrid_gate\
   \d,5000,99.26567523321043,25.196749787787375,24.26567523321043,34.97\
   \9597183958994,52.42766882633067,102.41300456550232

Cummings                  Expires 28 April 2027               [Page 101]
Internet-Draft                    TARE                      October 2026

   2026-10-23,shaper +10 us fwd for L>=1100,base48,5000,107.44665954382\
   \357,3.1852378455204415,32.44665954382357,32.60259846296467,37.78967\
   \9238541794,107.49385265265563
   2026-10-23,shaper +10 us fwd for L>=1100,base58 (fully loaded),5000,\
   \107.42821140569882,2.9543758354984413,32.42821140569882,32.56248586\
   \7678404,37.3721858369225,107.46881964894551
   2026-10-23,shaper +10 us fwd for L>=1100,"ols_intercept_raw (orig, 1\
   \ window)",5000,73.64454633607627,6.5417771409757774,-1.355453663923\
   \7256,6.680085615290051,13.17623922674771,73.93446756580482
   2026-10-23,shaper +10 us fwd for L>=1100,ols_gated (orig gate),5000,\
   \74.03128301746352,7.453016578096058,-0.9687169825364776,7.514969009\
   \543991,13.934158282729703,74.40542461295368
   2026-10-23,shaper +10 us fwd for L>=1100,hybrid_raw,5000,74.64805861\
   \096029,3.1886279178720742,-0.35194138903970895,3.20767474510005,6.5\
   \28478296168182,74.71611585805566
   2026-10-23,shaper +10 us fwd for L>=1100,hybrid_gated,5000,76.306610\
   \06264677,7.825273736841733,1.3066100626467687,7.93283631058296,23.7\
   \92985656417876,76.70672331241583
   2026-10-23,shaper +40 us fwd for L>=1100,base48,5000,107.47920823786\
   \625,3.151595419682103,32.479208237866246,32.63172589577973,37.84661\
   \4461541805,107.52539593332003
   2026-10-23,shaper +40 us fwd for L>=1100,base58 (fully loaded),5000,\
   \107.43364299492468,2.8878129580050143,32.43364299492468,32.56192552\
   \2147995,37.221316392198275,107.47244038798326
   2026-10-23,shaper +40 us fwd for L>=1100,"ols_intercept_raw (orig, 1\
   \ window)",5000,69.59068564851104,6.515534410574508,-5.4093143514889\
   \59,8.467843879694163,15.99313357541319,69.89497283244002
   2026-10-23,shaper +40 us fwd for L>=1100,ols_gated (orig gate),5000,\
   \70.18271818409659,8.015811471528846,-4.817281815903414,9.3512879858\
   \45463,17.641927401632834,70.63890085929074
   2026-10-23,shaper +40 us fwd for L>=1100,hybrid_raw,5000,73.49465390\
   \884967,3.1536300095348775,-1.5053460911503294,3.494203774071155,7.0\
   \79371810902668,73.56226985583156
   2026-10-23,shaper +40 us fwd for L>=1100,hybrid_gated,5000,106.76574\
   \947512313,5.791396133125262,31.76574947512313,32.28926138568716,37.\
   \79589289088814,106.92267683752448
   2026-10-23,quadratic fwd term +5 us at 1400 B,base48,5000,107.328424\
   \80748221,3.180072282500606,32.32842480748221,32.484425309415826,37.\
   \593589843937345,107.37551680343778
   2026-10-23,quadratic fwd term +5 us at 1400 B,base58 (fully loaded),\
   \5000,107.4444638603258,2.89395265545671,32.4444638603258,32.5732485\
   \6632536,37.25733327303773,107.48342244835939
   2026-10-23,quadratic fwd term +5 us at 1400 B,"ols_intercept_raw (or\
   \ig, 1 window)",5000,74.60502318059386,6.606660883338708,-0.39497681\
   \940613916,6.617797603561209,13.220917159248616,74.89692064571668
   2026-10-23,quadratic fwd term +5 us at 1400 B,ols_gated (orig gate),\
   \5000,75.04210741462724,7.542878056700537,0.04210741462723888,7.5422\
   \41272376893,14.290447870952905,75.42016650475408

Cummings                  Expires 28 April 2027               [Page 102]
Internet-Draft                    TARE                      October 2026

   2026-10-23,quadratic fwd term +5 us at 1400 B,hybrid_raw,5000,74.758\
   \77979565799,3.1861329885693626,-0.24122020434201374,3.1949335390816\
   \147,6.443260575533841,74.82663008359955
   2026-10-23,quadratic fwd term +5 us at 1400 B,hybrid_gated,5000,75.0\
   \7803149441101,4.523451746457066,0.07803149441100743,4.5236724343728\
   \72,6.842597025073593,75.2141498420022
   2026-10-23,quadratic fwd term +30 us at 1400 B,base48,5000,107.41055\
   \467396761,3.1615675860801296,32.41055467396761,32.56436034645355,37\
   \.53860509366256,107.45706475550512
   2026-10-23,quadratic fwd term +30 us at 1400 B,base58 (fully loaded)\
   \,5000,107.43630480120184,2.91369382314679,32.43630480120184,32.5668\
   \8168875207,37.22159516662162,107.47579961605055
   2026-10-23,quadratic fwd term +30 us at 1400 B,"ols_intercept_raw (o\
   \rig, 1 window)",5000,72.38453799582172,6.527383419077316,-2.6154620\
   \041782835,7.031276871812534,13.734825310903902,72.67819173466923
   2026-10-23,quadratic fwd term +30 us at 1400 B,ols_gated (orig gate)\
   \,5000,72.86462981681693,7.608572251260356,-2.1353701831830705,7.901\
   \8098842946,14.562072737929146,73.26071984337908
   2026-10-23,quadratic fwd term +30 us at 1400 B,hybrid_raw,5000,73.99\
   \832638637182,3.167447067200363,-1.001673613628185,3.321756223381004\
   \,6.777762557900879,74.06607200576619
   2026-10-23,quadratic fwd term +30 us at 1400 B,hybrid_gated,5000,76.\
   \22305467907152,8.872668714787967,1.2230546790715238,8.9556891426819\
   \53,30.193584974466752,76.7376216068825
   2026-10-23,fragmentation at >=1300 B,base48,5000,107.36126232297148,\
   \3.2277186506810276,32.361262322971484,32.521798584804465,37.5458146\
   \2022946,107.40976087691617
   2026-10-23,fragmentation at >=1300 B,base58 (fully loaded),5000,107.\
   \35850925096199,2.890941058603932,32.35850925096199,32.4873666159766\
   \54,37.03090944794731,107.39741792652732
   2026-10-23,fragmentation at >=1300 B,"ols_intercept_raw (orig, 1 win\
   \dow)",5000,70.21478878765615,6.34961060746155,-4.785211212343853,7.\
   \950329408405434,15.485104477012724,70.50124861199677
   2026-10-23,fragmentation at >=1300 B,ols_gated (orig gate),5000,71.3\
   \0779651655304,8.867308595310195,-3.69220348344696,9.604467838214417\
   \,18.041606128346967,71.85690836612892
   2026-10-23,fragmentation at >=1300 B,hybrid_raw,5000,73.851015576709\
   \93,3.237062968097864,-1.1489844232900737,3.434624600893363,7.012801\
   \727645803,73.9219113839432
   2026-10-23,fragmentation at >=1300 B,hybrid_gated,5000,107.347905270\
   \27512,3.308034998617323,32.34790527027512,32.516578576284125,37.545\
   \81462022946,107.3988532194312
   2026-10-23,length-label noise 10%,base48,5000,107.40908492837751,3.2\
   \01690372814525,32.40908492837751,32.56681680750991,37.8332761849998\
   \8,107.45678338862807
   2026-10-23,length-label noise 10%,base58 (fully loaded),5000,107.418\
   \36844556849,2.902212884073842,32.41836844556849,32.547991761845914,\
   \37.22817456025631,107.45755922486079

Cummings                  Expires 28 April 2027               [Page 103]
Internet-Draft                    TARE                      October 2026

   2026-10-23,length-label noise 10%,"ols_intercept_raw (orig, 1 window\
   \)",5000,97.42390151316998,53.89483348651972,22.42390151316998,58.36\
   \8685996831616,137.7114890838865,111.33502922248786
   2026-10-23,length-label noise 10%,ols_gated (orig gate),5000,90.4374\
   \5016383932,17.08777509800817,15.437450163839316,23.02712589424851,3\
   \6.479626146451764,92.03730793284572
   2026-10-23,length-label noise 10%,hybrid_raw,5000,78.49182672896549,\
   \3.376518862273072,3.491826728965492,4.857103391577973,9.28117947103\
   \4562,78.56440327973797
   2026-10-23,length-label noise 10%,hybrid_gated,5000,78.6437435324145\
   \9,3.9421484777065623,3.6437435324145895,5.367894693767127,9.4431807\
   \77214325,78.7424651843309
   2026-10-23,symmetric +66 B overhead (L=payload),base48,5000,131.1693\
   \5684437192,3.2456815410261983,56.16935684437192,56.26303395735443,6\
   \1.56940840840994,131.20949857667395
   2026-10-23,symmetric +66 B overhead (L=payload),base58 (fully loaded\
   \),5000,131.22701512676107,2.874830864274701,56.227015126761074,56.3\
   \0044608733315,61.08842773626421,131.2584949580288
   2026-10-23,symmetric +66 B overhead (L=payload),"ols_intercept_raw (\
   \orig, 1 window)",5000,98.80586718614343,6.498202601412822,23.805867\
   \18614343,24.676659097331203,34.7390345284519,99.01927884067533
   2026-10-23,symmetric +66 B overhead (L=payload),ols_gated (orig gate\
   \),5000,99.16030447793976,7.291705575595193,24.16030447793976,25.236\
   \454760403273,35.554712295562034,99.42798560045779
   2026-10-23,symmetric +66 B overhead (L=payload),hybrid_raw,5000,98.7\
   \6794378429591,3.2549619533093006,23.76794378429591,23.9897438522273\
   \06,29.199757660798745,98.8215532044496
   2026-10-23,symmetric +66 B overhead (L=payload),hybrid_gated,5000,99\
   \.05919807505016,4.495662860836311,24.059198075050162,24.47553787715\
   \1716,29.506803596500248,99.16113989680338
   2026-10-23,forward-only tunnel +50 B,base48,5000,127.33435941668783,\
   \3.1558247173935015,52.33435941668783,52.42940409117813,57.675388839\
   \85344,127.37345220201587
   2026-10-23,forward-only tunnel +50 B,base58 (fully loaded),5000,127.\
   \36726988870522,2.9579893084023454,52.36726988870522,52.450728368679\
   \18,57.27731947057362,127.40160669987938
   2026-10-23,forward-only tunnel +50 B,"ols_intercept_raw (orig, 1 win\
   \dow)",5000,95.02212886524869,6.681441506768205,20.02212886524869,21\
   \.10730623677184,30.846732115620114,95.25669376143689
   2026-10-23,forward-only tunnel +50 B,ols_gated (orig gate),5000,95.4\
   \0262177458527,7.495989154444517,20.40262177458527,21.73581355067369\
   \4,31.865089189959857,95.69659793794888
   2026-10-23,forward-only tunnel +50 B,hybrid_raw,5000,94.933645246919\
   \31,3.161687898924755,19.933645246919312,20.182776913649963,25.25731\
   \7199951405,94.98626885494586
   2026-10-23,forward-only tunnel +50 B,hybrid_gated,5000,95.2644329041\
   \9445,4.498541232383055,20.26443290419445,20.757650800931327,25.5593\
   \5351491697,95.37056675097706

Cummings                  Expires 28 April 2027               [Page 104]
Internet-Draft                    TARE                      October 2026

   2026-10-23,NTPv4-style fixed 90 B response,base48,5000,107.435037840\
   \14862,3.19083718382026,32.435037840148624,32.591579976078734,37.661\
   \79945378833,107.4824021008064
   2026-10-23,NTPv4-style fixed 90 B response,base58 (fully loaded),500\
   \0,107.40294361467964,2.8831941928533253,32.40294361467964,32.530937\
   \5992771,37.03667665731009,107.44162807445728
   2026-10-23,NTPv4-style fixed 90 B response,"ols_intercept_raw (orig,\
   \ 1 window)",5000,71.2930848042953,6.662777244950206,-3.706915195704\
   \6955,7.62397156105986,14.757712442228012,71.60368470273121
   2026-10-23,NTPv4-style fixed 90 B response,ols_gated (orig gate),500\
   \0,71.71718012586679,7.6381679454775835,-3.28281987413321,8.31305284\
   \2813676,15.640574843338294,72.12270007735034
   2026-10-23,NTPv4-style fixed 90 B response,hybrid_raw,5000,71.438041\
   \26689513,3.1961649874298055,-3.5619587331048734,4.785496583332689,8\
   \.840568515084684,71.50949005260321
   2026-10-23,NTPv4-style fixed 90 B response,hybrid_gated,5000,71.8410\
   \9502426472,4.9813123182869825,-3.1589049757352825,5.898066663200771\
   \,9.329300671695007,72.01355041937086
   2026-10-23,queue asymmetry fwd150/rev20,base48,5000,107.996240551742\
   \77,3.8001553202252074,32.99624055174277,33.21430689883832,39.612327\
   \91908962,108.06306614903926
   2026-10-23,queue asymmetry fwd150/rev20,base58 (fully loaded),5000,1\
   \07.81396251942029,3.3362968634795176,32.813962519420286,32.98309850\
   \2291,38.572963670152745,107.86556060543549
   2026-10-23,queue asymmetry fwd150/rev20,"ols_intercept_raw (orig, 1 \
   \window)",5000,80.1280650794675,8.572960897978115,5.128065079467504,\
   \9.9888943775477,20.096473927417716,80.5852826067262
   2026-10-23,queue asymmetry fwd150/rev20,ols_gated (orig gate),5000,8\
   \0.98990335608269,9.788045446093156,5.989903356082692,11.47456381320\
   \2868,26.049238258446422,81.57910956927434
   2026-10-23,queue asymmetry fwd150/rev20,hybrid_raw,5000,75.593198556\
   \45197,3.811172979087074,0.5931985564519664,3.8566849749499674,7.849\
   \428368885871,75.68919211131666
   2026-10-23,queue asymmetry fwd150/rev20,hybrid_gated,5000,75.9111291\
   \85396,4.972149736879352,0.9111291853960068,5.054451992434851,8.3638\
   \2175867343,76.07375935730553
   2026-10-23,length-dependent fwd queue (x2 at 700 B),base48,5000,107.\
   \439611249601,3.4215556242745837,32.439611249601,32.61951991533086,3\
   \8.09764727993918,107.49406851983423
   2026-10-23,length-dependent fwd queue (x2 at 700 B),base58 (fully lo\
   \aded),5000,107.49603174440921,3.0506792563397656,32.49603174440921,\
   \32.63888573051979,37.62552539881413,107.5393026915802
   2026-10-23,length-dependent fwd queue (x2 at 700 B),"ols_intercept_r\
   \aw (orig, 1 window)",5000,74.96037386698805,8.126858003880878,-0.03\
   \962613301195006,8.126141894002167,16.137550856012833,75.39953754586\
   \074
   2026-10-23,length-dependent fwd queue (x2 at 700 B),ols_gated (orig \
   \gate),5000,76.36563317791153,10.143429875940857,1.3656331779115334,\

Cummings                  Expires 28 April 2027               [Page 105]
Internet-Draft                    TARE                      October 2026

   \10.23394087293906,21.919921519730092,77.03621565521988
   2026-10-23,length-dependent fwd queue (x2 at 700 B),hybrid_raw,5000,\
   \74.51097269766024,3.433701549635281,-0.489027302339764,3.4680103767\
   \340507,7.094792996128615,74.59003285038939
   2026-10-23,length-dependent fwd queue (x2 at 700 B),hybrid_gated,500\
   \0,74.95921733225613,5.137715108996005,-0.04078266774386918,5.137363\
   \1897974565,7.720123205321686,75.13504575351176
   2026-10-23,outliers 5% (mean +2 ms),base48,5000,107.41577016433357,3\
   \.260259572323597,32.415770164333566,32.57927749302199,37.8755785870\
   \2386,107.46522622047264
   2026-10-23,outliers 5% (mean +2 ms),base58 (fully loaded),5000,107.3\
   \8455249226011,2.955415768090805,32.38455249226011,32.51910170330292\
   \,37.15637384580478,107.42520583842872
   2026-10-23,outliers 5% (mean +2 ms),"ols_intercept_raw (orig, 1 wind\
   \ow)",5000,74.82158261984132,6.702531924319099,-0.17841738015867747,\
   \6.70423613629622,13.543045379144571,75.12113001777475
   2026-10-23,outliers 5% (mean +2 ms),ols_gated (orig gate),5000,75.28\
   \243517665783,7.672823560840477,0.28243517665782747,7.67725319242001\
   \5,14.307521366468997,75.67235620145046
   2026-10-23,outliers 5% (mean +2 ms),hybrid_raw,5000,75.0144238251829\
   \,3.261420704290177,0.014423825182902306,3.2611264440532612,6.613299\
   \71603665,75.08527498425732
   2026-10-23,outliers 5% (mean +2 ms),hybrid_gated,5000,75.26053656007\
   \721,4.263672723028318,0.26053656007721315,4.271199902511561,6.85606\
   \3131656143,75.38118885119017
   2026-10-23,"adversary: fwd delay 0.05 us/B, every packet",base48,500\
   \0,109.65359750315467,3.20909173631503,34.65359750315467,34.80183946\
   \329245,39.99937370842549,109.70053625895355
   2026-10-23,"adversary: fwd delay 0.05 us/B, every packet",base58 (fu\
   \lly loaded),5000,109.75111332749853,2.883016530593394,34.7511133274\
   \9853,34.87047460903647,39.590381849242355,109.78896574148168
   2026-10-23,"adversary: fwd delay 0.05 us/B, every packet","ols_inter\
   \cept_raw (orig, 1 window)",5000,74.97470815427936,6.488890335779266\
   \,-0.0252918457206448,6.488290709244736,12.831748621462518,75.254927\
   \67566503
   2026-10-23,"adversary: fwd delay 0.05 us/B, every packet",ols_gated \
   \(orig gate),5000,75.33787187913234,7.400191610168018,0.337871879132\
   \3365,7.407161447324886,13.571212452607664,75.70037531331391
   2026-10-23,"adversary: fwd delay 0.05 us/B, every packet",hybrid_raw\
   \,5000,75.00193292615776,3.213443482942365,0.001932926157763859,3.21\
   \312270392288,6.6804739641041495,75.07072729389353
   2026-10-23,"adversary: fwd delay 0.05 us/B, every packet",hybrid_gat\
   \ed,5000,75.41787178341434,4.950834290281017,0.4178717834143413,4.96\
   \7944730485866,7.1172429330596945,75.58016434460377
   2026-10-23,adversary: +20 us fwd on 1400 B only,base48,5000,107.3609\
   \3318017086,3.1484944110343056,32.36093318017086,32.51370527553552,3\
   \7.61552113680953,107.40708080834342
   2026-10-23,adversary: +20 us fwd on 1400 B only,base58 (fully loaded\

Cummings                  Expires 28 April 2027               [Page 106]
Internet-Draft                    TARE                      October 2026

   \),5000,107.41788000043202,2.9140861399153324,32.41788000043202,32.5\
   \48565918848894,37.40445198017573,107.45739222332942
   2026-10-23,adversary: +20 us fwd on 1400 B only,"ols_intercept_raw (\
   \orig, 1 window)",5000,72.81061032472093,6.557875060092197,-2.189389\
   \675279074,6.91307104758349,13.81435536615492,73.10528093111384
   2026-10-23,adversary: +20 us fwd on 1400 B only,ols_gated (orig gate\
   \),5000,73.3056162221564,7.728761701140683,-1.6943837778435977,7.911\
   \557815509657,14.893364262706225,73.71183880755936
   2026-10-23,adversary: +20 us fwd on 1400 B only,hybrid_raw,5000,74.4\
   \5598246499785,3.1562899456408826,-0.5440175350021548,3.202519143752\
   \204,6.57411587480644,74.52283877185421
   2026-10-23,adversary: +20 us fwd on 1400 B only,hybrid_gated,5000,88\
   \.69004770471116,16.496504819837313,13.690047704711162,21.4358963072\
   \2095,35.92009057205846,90.21089072944909
   2026-10-23,adversary: +200 us fwd on 1400 B only,base48,5000,107.366\
   \29419575766,3.1908366704604387,32.36629419575766,32.52316716336465,\
   \37.602930259357684,107.4136887538074
   2026-10-23,adversary: +200 us fwd on 1400 B only,base58 (fully loade\
   \d),5000,107.40776979624825,2.8901206058772115,32.407769796248246,32\
   \.53635919588598,37.1712898475709,107.44663856613175
   2026-10-23,adversary: +200 us fwd on 1400 B only,"ols_intercept_raw \
   \(orig, 1 window)",5000,53.19163966036355,6.740985336106873,-21.8083\
   \6033963645,22.82622123410653,32.665014401751954,53.616996604462166
   2026-10-23,adversary: +200 us fwd on 1400 B only,ols_gated (orig gat\
   \e),5000,107.10064650962711,4.984690467286833,32.10064650962711,32.4\
   \8528399079936,37.605828173522724,107.21655959975097
   2026-10-23,adversary: +200 us fwd on 1400 B only,hybrid_raw,5000,69.\
   \94941500026572,3.1931841366695055,-5.0505849997342835,5.97518154412\
   \3376,10.495923199174973,70.02224678289815
   2026-10-23,adversary: +200 us fwd on 1400 B only,hybrid_gated,5000,1\
   \07.36629419575766,3.1908366704604387,32.36629419575766,32.523167163\
   \36465,37.602930259357684,107.4136887538074
   2026-10-23,true slope 0.00 us/B,base48,5000,74.98362049102062,3.2084\
   \912676076067,-0.016379508979383672,3.2082122154536172,6.63255774933\
   \24115,75.05221981575546
   2026-10-23,true slope 0.00 us/B,base58 (fully loaded),5000,75.071748\
   \2703998,2.9110603212508774,0.07174827039979448,2.9116533368221966,6\
   \.055698386176873,75.12815694341101
   2026-10-23,true slope 0.00 us/B,"ols_intercept_raw (orig, 1 window)"\
   \,5000,74.91930200184736,6.678091104884209,-0.08069799815264389,6.67\
   \7910870315537,13.262683448778143,75.21628675937798
   2026-10-23,true slope 0.00 us/B,ols_gated (orig gate),5000,74.899794\
   \14853725,6.666973042653661,-0.10020585146274641,6.667059401132383,1\
   \3.26126297797124,75.19586958961786
   2026-10-23,true slope 0.00 us/B,hybrid_raw,5000,74.98723808809878,3.\
   \2194240300601105,-0.012761911901222334,3.2191273683262036,6.6717911\
   \97371023,75.05630216196587
   2026-10-23,true slope 0.00 us/B,hybrid_gated,5000,74.98397765252719,\

Cummings                  Expires 28 April 2027               [Page 107]
Internet-Draft                    TARE                      October 2026

   \3.2088063594436194,-0.016022347472812726,3.2085254682445448,6.63255\
   \77493324115,75.05259011892561
   2026-10-23,true slope 0.02 us/B,base48,5000,76.78795520399241,3.2281\
   \343299782925,1.7879552039924107,3.689925594590959,7.342458142345681\
   \,76.8557664166618
   2026-10-23,true slope 0.02 us/B,base58 (fully loaded),5000,76.762470\
   \0848176,2.9342538508140192,1.7624700848175934,3.422634145181398,6.6\
   \59215076003442,76.8185194937679
   2026-10-23,true slope 0.02 us/B,"ols_intercept_raw (orig, 1 window)"\
   \,5000,74.98779396962709,6.632417880269267,-0.012206030372908572,6.6\
   \31765838168989,13.217920902685393,75.28047166148978
   2026-10-23,true slope 0.02 us/B,ols_gated (orig gate),5000,75.006645\
   \24170405,6.613519266576831,0.006645241704049454,6.612861220470484,1\
   \3.209059400654514,75.29758774208382
   2026-10-23,true slope 0.02 us/B,hybrid_raw,5000,74.98949199582675,3.\
   \233779100927311,-0.010508004173246377,3.2334727811273187,6.69610377\
   \1702996,75.05917096264987
   2026-10-23,true slope 0.02 us/B,hybrid_gated,5000,75.00441052237528,\
   \3.2391246776303926,0.004410522375280834,3.2388037520366018,6.704409\
   \893287068,75.07430604474807
   2026-10-23,true slope 0.05 us/B,base48,5000,79.5467103841938,3.17490\
   \47906816403,4.546710384193801,5.545320526673191,9.81754334376276,79\
   \.61003163780688
   2026-10-23,true slope 0.05 us/B,base58 (fully loaded),5000,79.467399\
   \25797135,2.8972553718996106,4.467399257971351,5.324478002807993,9.1\
   \82132343362214,79.52018583163705
   2026-10-23,true slope 0.05 us/B,"ols_intercept_raw (orig, 1 window)"\
   \,5000,74.89578766781045,6.529178530805431,-0.1042123321895474,6.529\
   \357277929698,13.108140320957945,75.1797888839442
   2026-10-23,true slope 0.05 us/B,ols_gated (orig gate),5000,74.937192\
   \288441,6.528826574872318,-0.06280771155900311,6.5284757898073975,13\
   \.043506552319585,75.22100663647257
   2026-10-23,true slope 0.05 us/B,hybrid_raw,5000,75.05100179829294,3.\
   \1834487281501325,0.051001798292944045,3.183538930031932,6.637763632\
   \817718,75.1184743579299
   2026-10-23,true slope 0.05 us/B,hybrid_gated,5000,75.09679076204768,\
   \3.214367602360367,0.09679076204767512,3.2155032425586327,6.67861946\
   \6402285,75.16553781760665
   2026-10-23,true slope 0.10 us/B,base48,5000,84.0466652773339,3.25908\
   \60942605016,9.0466652773339,9.615699167584603,14.48157488396526,84.\
   \10981786974439
   2026-10-23,true slope 0.10 us/B,base58 (fully loaded),5000,84.001095\
   \57775392,2.9452143282755605,9.001095577753915,9.470600518544366,13.\
   \964051350097758,84.05270138933632
   2026-10-23,true slope 0.10 us/B,"ols_intercept_raw (orig, 1 window)"\
   \,5000,75.00594046146455,6.488891308908993,0.0059404614645472975,6.4\
   \8824510679377,12.927151208426176,75.28604381813084
   2026-10-23,true slope 0.10 us/B,ols_gated (orig gate),5000,75.094615\

Cummings                  Expires 28 April 2027               [Page 108]
Internet-Draft                    TARE                      October 2026

   \09167889,6.521630011598875,0.09461509167888948,6.5216641811855744,1\
   \2.951310603344172,75.37721384771389
   2026-10-23,true slope 0.10 us/B,hybrid_raw,5000,75.04659277532933,3.\
   \2629463779170873,0.04659277532933004,3.2629527407031347,6.772410536\
   \825274,75.11747983583756
   2026-10-23,true slope 0.10 us/B,hybrid_gated,5000,75.14725622550277,\
   \3.4124959478635595,0.1472562255027725,3.4153307254811653,7.03213275\
   \3204785,75.2246829025542
   2026-10-23,true slope 0.20 us/B,base48,5000,92.9727778474264,3.20645\
   \25014076213,17.9727778474264,18.2565063725017,23.250171238065484,93\
   \.0280425573018
   2026-10-23,true slope 0.20 us/B,base58 (fully loaded),5000,92.991110\
   \95864046,2.902247171882589,17.991110958640462,18.22365022615075,22.\
   \829081451179388,93.03638036467859
   2026-10-23,true slope 0.20 us/B,"ols_intercept_raw (orig, 1 window)"\
   \,5000,75.04092968114243,6.412377953297156,0.040929681142429786,6.41\
   \1867320564787,12.814547845102304,75.3143511869278
   2026-10-23,true slope 0.20 us/B,ols_gated (orig gate),5000,75.240413\
   \35394844,6.661799218032717,0.24041335394844054,6.665470087576252,13\
   \.5943244149088,75.53469728926329
   2026-10-23,true slope 0.20 us/B,hybrid_raw,5000,74.9683403990142,3.2\
   \127094050026344,-0.03165960098580456,3.212544124363549,6.5306755807\
   \27168,75.03713413772618
   2026-10-23,true slope 0.20 us/B,hybrid_gated,5000,75.15542048332202,\
   \3.6734235470943077,0.1554204833220183,3.6763429212835557,6.94853247\
   \2493341,75.24512322917131
   2026-10-23,true slope 0.36 us/B,base48,5000,107.35144774554425,3.196\
   \8080636021865,32.35144774554425,32.50897889986448,37.61824431279150\
   \4,107.39902639662742
   2026-10-23,true slope 0.36 us/B,base58 (fully loaded),5000,107.37613\
   \635142561,2.950203319637967,32.376136351425615,32.51024706047897,37\
   \.303299910245606,107.41664962494048
   2026-10-23,true slope 0.36 us/B,"ols_intercept_raw (orig, 1 window)"\
   \,5000,75.00183318217651,6.516810155751599,0.0018331821765116274,6.5\
   \1615870001206,12.61586466369427,75.28436292836791
   2026-10-23,true slope 0.36 us/B,ols_gated (orig gate),5000,75.434544\
   \70248649,7.465673088866127,0.434544702486491,7.477563541244235,13.7\
   \60198050975148,75.80300562567635
   2026-10-23,true slope 0.36 us/B,hybrid_raw,5000,74.95408762384801,3.\
   \200042559665898,-0.045912376151989065,3.2000519176226283,6.48651362\
   \7576672,75.02235317458845
   2026-10-23,true slope 0.36 us/B,hybrid_gated,5000,75.25219458652452,\
   \4.50044047131313,0.2521945865245243,4.507051780534395,6.90174557982\
   \3662,75.38662151689182

              Figure 16: tare_hybrid_estimators_2026-10-23.csv

Cummings                  Expires 28 April 2027               [Page 109]
Internet-Draft                    TARE                      October 2026

G.11.  tare_hybrid_validity_2026-10-23.csv

   Produced by the script of Section F.5.  Reproduced in: Table D-1.

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,scenario,nominal_baseline_us,base58_err,base58_sd,hyb_raw_\
   \err,hyb_raw_sd,hyb_lof_reject,hyb_slope_not_sig,hyb_fallback,hyb_fa\
   \lse_valid,hyb_applied_err,ols_raw_err,ols_raw_sd,ols_fallback,ols_f\
   \alse_valid
   2026-10-23,nominal,107.4,-0.00581281805825995,2.988052019572123,0.07\
   \170217557300873,3.2129513526577376,0.009399999999999964,0.0,0.00939\
   \9999999999964,0.0,0.07189704988836354,0.04640163682263676,6.5677610\
   \44491434,0.01319999999999999,0.0012
   2026-10-23,"drift 1 ppm, sequential (neg. control)",107.4,-0.0588171\
   \1741891138,16.887862979454802,-1.3987182544626933,14.22815316035297\
   \4,0.0006000000000000449,0.0,0.0006000000000000449,0.0376,-1.3940691\
   \732223343,-20.403193690100615,6.792692355773483,0.01280000000000003\
   \4,0.2368
   2026-10-23,"drift 1 ppm, randomized",107.4,0.11782691249172217,16.78\
   \2879285318757,-0.03160110385617543,14.27580109775702,0.011000000000\
   \00001,0.0,0.01100000000000001,0.0308,-0.05001605483887772,0.0371164\
   \2656787717,12.150431465773751,0.10799999999999998,0.0356
   2026-10-23,"drift 5 ppm, randomized",107.4,-0.8343460835746015,83.31\
   \660550877665,-0.3705211139068041,69.0616929892043,0.013599999999999\
   \945,0.0,0.013599999999999945,0.778,-0.41987440033013,-0.37020792768\
   \67778,49.96974582083732,0.9922,0.0064
   2026-10-23,"path step +50 us, randomized",107.4,25.416703639235976,2\
   \5.22427384970892,25.209032149407548,25.238941162113363,0.0010000000\
   \000000009,0.0,0.0010000000000000009,0.5032,25.212425604297664,25.64\
   \4255453124885,21.85364980690612,0.472,0.2782
   2026-10-23,"path step +50 us, sequential (neg. control)",107.4,24.95\
   \1140183093287,25.239319980306572,24.26567523321043,25.1967497877873\
   \75,0.0,0.0,0.0,0.5136,24.26567523321043,4.1761909052929695,20.55272\
   \6646051898,0.1402,0.1632
   2026-10-23,shaper +10 us fwd for L>=1100,107.4,0.028211405698812086,\
   \2.9543758354984413,-0.35194138903970895,3.1886279178720742,0.050599\
   \99999999998,0.0,0.05059999999999998,0.0,-0.3430028850451805,-1.3554\
   \536639237256,6.5417771409757774,0.012199999999999989,0.0012
   2026-10-23,shaper +40 us fwd for L>=1100,107.4,0.03364299492467637,2\
   \.8878129580050143,-1.5053460911503294,3.1536300095348775,0.979,0.0,\
   \0.979,0.0,-1.4070094805702666,-5.409314351488959,6.515534410574508,\
   \0.016000000000000014,0.002
   2026-10-23,quadratic fwd term +5 us at 1400 B,107.4,0.04446386032579\
   \1416,2.89395265545671,-0.24122020434201374,3.1861329885693626,0.009\
   \800000000000031,0.0,0.009800000000000031,0.0,-0.24138097478814302,-\
   \0.39497681940613916,6.606660883338708,0.013000000000000012,0.0012
   2026-10-23,quadratic fwd term +30 us at 1400 B,107.4,0.0363048012018\

Cummings                  Expires 28 April 2027               [Page 110]
Internet-Draft                    TARE                      October 2026

   \3677,2.91369382314679,-1.001673613628185,3.167447067200363,0.066599\
   \99999999999,0.0,0.06659999999999999,0.0,-0.9906182239248693,-2.6154\
   \620041782835,6.527383419077316,0.013000000000000012,0.0008
   2026-10-23,fragmentation at >=1300 B,107.4,-0.04149074903801875,2.89\
   \0941058603932,-1.1489844232900737,3.237062968097864,0.9996,0.0,0.99\
   \96,0.0,-3.988647170462869,-4.785211212343853,6.34961060746155,0.029\
   \39999999999998,0.0014
   2026-10-23,length-label noise 10%,107.4,0.01836844556848405,2.902212\
   \884073842,3.491826728965492,3.376518862273072,0.005199999999999982,\
   \0.0,0.005199999999999982,0.0,3.4963324513634575,22.42390151316998,5\
   \3.89483348651972,0.471,0.0046
   2026-10-23,symmetric +66 B overhead (L=payload),107.4,23.82701512676\
   \107,2.874830864274701,23.76794378429591,3.2549619533093006,0.009000\
   \000000000008,0.0,0.009000000000000008,0.3186,23.763650107004537,23.\
   \80586718614343,6.498202601412822,0.01100000000000001,0.4082
   2026-10-23,forward-only tunnel +50 B,107.4,19.967269888705218,2.9579\
   \893084023454,19.933645246919312,3.161687898924755,0.010199999999999\
   \987,0.0,0.010199999999999987,0.0566,19.93952954439942,20.0221288652\
   \4869,6.681441506768205,0.011399999999999966,0.2118
   2026-10-23,NTPv4-style fixed 90 B response,107.4,0.00294361467963710\
   \77,2.8831941928533253,-3.5619587331048734,3.1961649874298055,0.0111\
   \99999999999988,0.0,0.011199999999999988,0.0,-3.565477015896519,-3.7\
   \069151957046955,6.662777244950206,0.01100000000000001,0.0024
   2026-10-23,queue asymmetry fwd150/rev20,107.4,0.41396251942028073,3.\
   \3362968634795176,0.5931985564519664,3.811172979087074,0.00980000000\
   \0000031,0.0,0.009800000000000031,0.0,0.5934569330895272,5.128065079\
   \467504,8.572960897978115,0.03859999999999997,0.0158
   2026-10-23,length-dependent fwd queue (x2 at 700 B),107.4,0.09603174\
   \44092027,3.0506792563397656,-0.489027302339764,3.433701549635281,0.\
   \013599999999999945,0.0,0.013599999999999945,0.0,-0.4894705712520562\
   \,-0.03962613301195006,8.126858003880878,0.042200000000000015,0.0028
   2026-10-23,outliers 5% (mean +2 ms),107.4,-0.015447507739892785,2.95\
   \5415768090805,0.014423825182902306,3.261420704290177,0.007600000000\
   \000051,0.0,0.007600000000000051,0.0,0.020144707212594426,-0.1784173\
   \8015867747,6.702531924319099,0.013800000000000034,0.0002
   2026-10-23,"adversary: fwd delay 0.05 us/B, every packet",107.4,2.35\
   \1113327498524,2.883016530593394,0.001932926157763859,3.213443482942\
   \365,0.01200000000000001,0.0,0.01200000000000001,0.0,0.0028294176585\
   \745845,-0.0252918457206448,6.488890335779266,0.011600000000000055,0\
   \.0006
   2026-10-23,adversary: +20 us fwd on 1400 B only,107.4,0.017880000432\
   \01521,2.9140861399153324,-0.5440175350021548,3.1562899456408826,0.4\
   \326,0.0,0.4326,0.0,-0.4472523081497286,-2.189389675279074,6.5578750\
   \60092197,0.014399999999999968,0.0006
   2026-10-23,adversary: +200 us fwd on 1400 B only,107.4,0.00776979624\
   \8240368,2.8901206058772115,-5.0505849997342835,3.1931841366695055,1\
   \.0,0.0,1.0,0.0,,-21.80836033963645,6.740985336106873,0.9952,0.0018

Cummings                  Expires 28 April 2027               [Page 111]
Internet-Draft                    TARE                      October 2026

               Figure 17: tare_hybrid_validity_2026-10-23.csv

G.12.  tare_hybrid_slope_sweep_2026-10-23.csv

   Produced by the script of Section F.5.  Reproduced in: Table D-2.

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,scenario,nominal_baseline_us,base58_err,base58_sd,hyb_raw_\
   \err,hyb_raw_sd,hyb_lof_reject,hyb_slope_not_sig,hyb_fallback,hyb_fa\
   \lse_valid,hyb_applied_err,ols_raw_err,ols_raw_sd,ols_fallback,ols_f\
   \alse_valid
   2026-10-23,true slope 0.00 us/B,75.0,0.07174827039979448,2.911060321\
   \2508774,-0.012761911901222334,3.2194240300601105,0.0080000000000000\
   \07,0.9978,0.9978,0.0,-0.38559651786647464,-0.08069799815264389,6.67\
   \8091104884209,0.009000000000000008,0.0008
   2026-10-23,true slope 0.02 us/B,76.8,-0.037529915182403784,2.9342538\
   \508140192,-0.010508004173246377,3.233779100927311,0.008199999999999\
   \985,0.0,0.008199999999999985,0.0,-0.012699548184571086,-0.012206030\
   \372908572,6.632417880269267,0.011399999999999966,0.001
   2026-10-23,true slope 0.05 us/B,79.5,-0.03260074202864871,2.89725537\
   \18996106,0.051001798292944045,3.1834487281501325,0.0101999999999999\
   \87,0.0,0.010199999999999987,0.0,0.051621914643050104,-0.10421233218\
   \95474,6.529178530805431,0.011199999999999988,0.0002
   2026-10-23,true slope 0.10 us/B,84.0,0.0010955777539152223,2.9452143\
   \282755605,0.04659277532933004,3.2629463779170873,0.0111999999999999\
   \88,0.0,0.011199999999999988,0.0,0.040482481380834656,0.005940461464\
   \5472975,6.488891308908993,0.010600000000000054,0.0002
   2026-10-23,true slope 0.20 us/B,93.0,-0.008889041359537941,2.9022471\
   \71882589,-0.03165960098580456,3.2127094050026344,0.0103999999999999\
   \65,0.0,0.010399999999999965,0.0,-0.027245604001791435,0.04092968114\
   \2429786,6.412377953297156,0.011399999999999966,0.0006
   2026-10-23,true slope 0.36 us/B,107.4,-0.02386364857439105,2.9502033\
   \19637967,-0.045912376151989065,3.200042559665898,0.0091999999999999\
   \86,0.0,0.009199999999999986,0.0,-0.05281287267162327,0.001833182176\
   \5116274,6.516810155751599,0.013800000000000034,0.0008

             Figure 18: tare_hybrid_slope_sweep_2026-10-23.csv

G.13.  tare_hybrid_power_2026-10-23.csv

   Produced by the script of Section F.5.  Reproduced in: Table D-3.

Cummings                  Expires 28 April 2027               [Page 112]
Internet-Draft                    TARE                      October 2026

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,scenario,nominal_baseline_us,base58_err,base58_sd,hyb_raw_\
   \err,hyb_raw_sd,hyb_lof_reject,hyb_slope_not_sig,hyb_fallback,hyb_fa\
   \lse_valid,hyb_applied_err,ols_raw_err,ols_raw_sd,ols_fallback,ols_f\
   \alse_valid
   2026-10-23,shaper us at >=1100 B = 2,107.4,-0.0027271640504977768,2.\
   \9305459715297086,-0.11875541926782773,3.2460973590827242,0.00980000\
   \0000000031,0.0,0.009800000000000031,0.0,-0.1223538383621019,-0.3769\
   \996701851426,6.521162352268968,0.01100000000000001,0.0004
   2026-10-23,shaper us at >=1100 B = 5,107.4,-0.011805998953278163,2.8\
   \37769507445189,-0.14968403578122036,3.179372763472849,0.01319999999\
   \999999,0.0,0.01319999999999999,0.0,-0.14081268762106447,-0.54372751\
   \1588969,6.5312135423761415,0.010600000000000054,0.0006
   2026-10-23,shaper us at >=1100 B = 10,107.4,-0.009018580741766868,2.\
   \9219466269239898,-0.49164321349425677,3.225435886345018,0.051599999\
   \99999998,0.0,0.05159999999999998,0.0,-0.4855928967119638,-1.4214463\
   \007525069,6.509993266634469,0.009399999999999964,0.0004
   2026-10-23,shaper us at >=1100 B = 20,107.4,-0.060560069984290976,2.\
   \8999523906391556,-0.7380151100950485,3.2149928769944727,0.3234,0.0,\
   \0.3234,0.0,-0.7464910114722016,-2.7172395863181578,6.51526133631005\
   \9,0.010399999999999965,0.0006
   2026-10-23,shaper us at >=1100 B = 40,107.4,-0.024931827735272805,2.\
   \89234050190886,-1.5827757154168722,3.22911004959082,0.9796,0.0,0.97\
   \96,0.0,-1.57753569612305,-5.345582970370472,6.560566350425912,0.018\
   \59999999999995,0.003
   2026-10-23,quadratic us at 1400 B = 2,107.4,0.013455290174732681,2.8\
   \418622010114847,-0.031299669515718165,3.17619904243941,0.0080000000\
   \00000007,0.0,0.008000000000000007,0.0,-0.02601293589833631,-0.15179\
   \951619690257,6.588198905881405,0.011800000000000033,0.0006
   2026-10-23,quadratic us at 1400 B = 5,107.4,0.014911417072767108,2.9\
   \419004845895294,-0.16899448779847148,3.1643890423173344,0.010199999\
   \999999987,0.0,0.010199999999999987,0.0,-0.16239841178943948,-0.3360\
   \9513672547564,6.632195647054352,0.009399999999999964,0.0008
   2026-10-23,quadratic us at 1400 B = 10,107.4,-0.022249828876795164,2\
   \.913268305058805,-0.30728801101662384,3.1731368988239845,0.01239999\
   \9999999967,0.0,0.012399999999999967,0.0,-0.30547610748652687,-0.665\
   \3733990387565,6.632586991882337,0.011399999999999966,0.0006
   2026-10-23,quadratic us at 1400 B = 30,107.4,0.08114390271637717,2.8\
   \95949779780434,-0.9131047265764352,3.2101926095819793,0.05700000000\
   \000005,0.0,0.05700000000000005,0.0,-0.902629600037244,-2.6166872867\
   \679274,6.521671890511214,0.011600000000000055,0.001
   2026-10-23,adv us on 1400 B only = 2,107.4,0.0008315605350190935,2.8\
   \68303520031292,-0.045285383602674756,3.2633130692834498,0.011600000\
   \000000055,0.0,0.011600000000000055,0.0,-0.04981362193075256,-0.2217\
   \4723871442836,6.62605180463072,0.011199999999999988,0.0004
   2026-10-23,adv us on 1400 B only = 5,107.4,0.03704937300574329,2.888\
   \3977777601997,-0.1446115786263249,3.264113523103178,0.0181999999999\

Cummings                  Expires 28 April 2027               [Page 113]
Internet-Draft                    TARE                      October 2026

   \99994,0.0,0.018199999999999994,0.0,-0.1528551461118468,-0.494854965\
   \9647483,6.592040033511019,0.012599999999999945,0.0002
   2026-10-23,adv us on 1400 B only = 10,107.4,0.04223344716713484,2.87\
   \85688120683344,-0.3289378356587207,3.275202239086756,0.065599999999\
   \99999,0.0,0.06559999999999999,0.0,-0.31573043988805694,-1.004622388\
   \8655703,6.662397492003907,0.012399999999999967,0.0008
   2026-10-23,adv us on 1400 B only = 20,107.4,0.028880142440414147,2.8\
   \703965482744884,-0.5725429728144746,3.2725066666068674,0.4277999999\
   \9999996,0.0,0.42779999999999996,0.0,-0.609741148636644,-2.321231673\
   \6682794,6.706253336231534,0.01319999999999999,0.0014
   2026-10-23,adv us on 1400 B only = 50,107.4,-0.03066341273054718,2.8\
   \34051728770137,-1.2546739048013649,3.250242809797062,1.0,0.0,1.0,0.\
   \0,,-5.562802242210495,6.631922576343536,0.034399999999999986,0.0038
   2026-10-23,adv us on 1400 B only = 200,107.4,-0.04370670729298354,2.\
   \823051665820063,-5.0334456267822105,3.20362113838814,1.0,0.0,1.0,0.\
   \0,,-21.901519523323536,6.578018183040987,0.9932,0.0012

                Figure 19: tare_hybrid_power_2026-10-23.csv

G.14.  tare_hybrid_pooling_depth_2026-10-23.csv

   Produced by the script of Section F.5.  Reproduced in: Table D-4.

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   test_date,M,calibration_candidates,slope_mean,slope_sd,hybrid_mean,h\
   \ybrid_sd,base48_sd,lof_false_reject_at_p01,mean_se_b
   2026-10-23,5,240,0.35999167475139165,0.0038549943398549958,74.973631\
   \13657305,3.2137438010627206,3.1873778766179908,0.008,0.003801550134\
   \521671
   2026-10-23,10,480,0.3600273709498539,0.0026926068264726604,75.045370\
   \66263357,3.23225703303404,3.222546043583404,0.0092,0.00270716808927\
   \2138
   2026-10-23,20,960,0.3599896511229239,0.0019621983286125153,75.070386\
   \91133305,3.26418509641407,3.2597044896023832,0.0072,0.0019147627500\
   \064027
   2026-10-23,40,1920,0.3599972551442244,0.001358618982442557,74.992687\
   \52904223,3.297179760558184,3.2939235496035244,0.0096,0.001355523531\
   \0096574

            Figure 20: tare_hybrid_pooling_depth_2026-10-23.csv

G.15.  tare_hybrid_leverage_2026-10-23.csv

   Produced by the script of Section F.5.  Reproduced in: Table D-5.

Cummings                  Expires 28 April 2027               [Page 114]
Internet-Draft                    TARE                      October 2026

   test_date,length_B,weight_ols_intercept,weight_hybrid_output
   2026-10-23,90.0,0.49162742019884875,-0.0423861852433281
   2026-10-23,250.0,0.4049712192569335,-0.03108320251177394
   2026-10-23,500.0,0.269570905285191,-0.013422291993720565
   2026-10-23,800.0,0.10709052851909995,0.007770800627943485
   2026-10-23,1100.0,-0.055389848246991114,0.028963893249607537
   2026-10-23,1400.0,-0.21787022501308215,0.050156985871271584
   2026-10-23,,1.5465201465201466,0.1737833594976452

               Figure 21: tare_hybrid_leverage_2026-10-23.csv

G.16.  tare_supplement_hybrid_2026-10-24.csv

   Produced by the script of Section F.6.  Reproduced in: Table D-6.

Cummings                  Expires 28 April 2027               [Page 115]
Internet-Draft                    TARE                      October 2026

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   group,test_date,scenario,base58_err,base58_sd,hyb_raw_err,hyb_raw_sd\
   \,hyb_lof_reject,hyb_fallback,hyb_false_valid,hyb_applied_err,ols_ra\
   \w_err,ols_raw_sd,ols_fallback,ols_false_valid,predicted_hybrid_shift
   S2 loss,2026-10-24,nominal (control),-0.03052191318923292,2.92530834\
   \59513296,-0.009687440159680705,3.233891822235761,0.0078,0.007800000\
   \000000029,0.0,-0.0140400514207073,0.13726324985051974,6.72295173364\
   \9183,0.008000000000000007,0.0008,
   S2 loss,2026-10-24,iid packet loss 20%,-0.0298419729671906,3.2615200\
   \33587866,0.06415992934114456,3.592767108107424,0.0096,0.00960000000\
   \0000053,0.0,0.06529695804735525,0.06956610094805171,7.6470696355694\
   \58,0.019000000000000017,0.0026,
   S2 loss,2026-10-24,size-dependent loss 2%..32%,0.017412244334948923,\
   \3.013835082787186,0.03856469212959723,3.315326150411922,0.0112,0.01\
   \1199999999999988,0.0,0.0323647872414341,-0.10487072444513501,7.0820\
   \37371808259,0.01980000000000004,0.001,
   S3 90 B-only delay,2026-10-24,+5 us fwd on 90 B packets only,2.50859\
   \8581002744,2.918943026483011,2.584476288520733,3.1854209653371854,0\
   \.022,0.02200000000000002,0.0,2.5844718876348765,1.2605365085502882,\
   \6.511033070803393,0.009000000000000008,0.0006,2.5
   S3 90 B-only delay,2026-10-24,+20 us fwd on 90 B packets only,9.9533\
   \39155308015,2.9107876895578846,10.438500631073879,3.18682991305507,\
   \0.568,0.5680000000000001,0.0,10.354799932279931,5.0645245199540625,\
   \6.738367273886106,0.014000000000000012,0.0026,10.0
   S3 90 B-only delay,2026-10-24,+200 us fwd on 90 B packets only,100.0\
   \3048956001703,2.9486150449726294,104.19795956980406,3.2275453216882\
   \,1.0,1.0,0.0,,49.1857561498295,6.620218683030055,0.9994,0.0006,100.0
   S4 schedule-aware,2026-10-24,schedule-aware: fwd delay 0.2 us/B x (L\
   \-90),-0.05020055440455451,2.9534835062373594,-8.966392729380033,3.2\
   \792532224442876,0.0052,0.005199999999999982,0.0,-8.969150920826706,\
   \-8.910472102736094,6.4926541461278715,0.01100000000000001,0.0086,-9\
   \.0
   S4 schedule-aware,2026-10-24,schedule-aware: fwd delay 0.5 us/B x (L\
   \-90),-0.022492521118891773,2.954150958670136,-22.516933453369255,3.\
   \248703387902787,0.0078,0.007800000000000029,0.1954,-22.510680551018\
   \055,-22.534745679002,6.550327981478236,0.012599999999999945,0.3432,\
   \-22.5
   S4 schedule-aware,2026-10-24,schedule-aware: fwd delay 1 us/B x (L-9\
   \0),0.008593639172190137,2.9100973188311823,-45.01488857206854,3.180\
   \0071600179116,0.0102,0.010199999999999987,0.9898,-45.00918098796183\
   \,-44.93539721962132,6.507909398925898,0.010199999999999987,0.9872,-\
   \45.0

              Figure 22: tare_supplement_hybrid_2026-10-24.csv

Cummings                  Expires 28 April 2027               [Page 116]
Internet-Draft                    TARE                      October 2026

Appendix H.  Checksums and Reproduction

   This appendix gives the checksums and the procedure for reproducing
   the results of this document from the files in Appendices F and G.

H.1.  Unfolding

   To restore a folded file, remove the two header lines when present,
   then remove every backslash that ends a line together with the line
   break and the backslash that begins the next line, and make the file
   end with exactly one line feed.  The following program does this.
   Save it as unfold.py and run it as: python3 unfold.py FOLDED_FILE >
   ORIGINAL_FILE.

   import re, sys
   s = open(sys.argv[1]).read()
   if s.startswith("=" * 10 + " NOTE:"):
       s = s.split("\n", 2)[2]
   s = re.sub(r"\\\n\\", "", s)
   sys.stdout.write(s.rstrip("\n") + "\n")

                            Figure 23: unfold.py

H.2.  Checksums

   The SHA-256 digest of each file after unfolding, in the format read
   by the sha256sum -c command.  All files are ASCII text with line feed
   line endings.

Cummings                  Expires 28 April 2027               [Page 117]
Internet-Draft                    TARE                      October 2026

   ========== NOTE: '\\' line wrapping per RFC 8792 ==========

   16ebe0cc0a7a688ed217a48269c45d7de3a231b2c3970c54316031bd637c60ac  ta\
   \re_core_2026-10-23.py
   69d304f9d46000f7554da7014a8ffa7abf25db8cf617af846533574b0699d754  ta\
   \re_monte_carlo_2026-10-23.py
   011f7d8d2752d2c011fae3055e488130c40df0443399e67feb87452c0596399a  ta\
   \re_matched_budget_2026-10-23.py
   0d44adc2b914958741c8b633cef9a7ab6629478eb6d6312abefd345133d26d0c  ta\
   \re_stress_2026-10-23.py
   b46b116d607abbcc502c1e6156db5bb9a157068a4007f654342b7749cd70b6fe  ta\
   \re_hybrid_2026-10-23.py
   83cf68c6cf65514a2411813480c86f01d343db38d4995ef105757470fd7e0397  ta\
   \re_supplement_2026-10-24.py
   75fc25f0c4c9275588bc5a5e8aaace00b02ee2210eed795d979782fb2378c1bd  ta\
   \re_monte_carlo_results_2026-10-23.csv
   45148447b2ac58da4e5217b9d599248776c0c491961034e2c425ca8d9cd01eac  ta\
   \re_E1_matched_budget_2026-10-23.csv
   926901ff05073ef85e22a1b3f5a956bad0149fb286624150f83f123caba51d42  ta\
   \re_E1_analytic_checks_2026-10-23.csv
   60780e07d7f968dd3afd26915ad6db8ad559bf12b2f6a851464bd2b36608a809  ta\
   \re_E2_design_sweep_2026-10-23.csv
   6fe08bcdbcfef1f8771e9e743dbfc3928a5f1738e0113ebc142d4f121ccd372a  ta\
   \re_E2b_budget_sweep_2026-10-23.csv
   c3d035c0a1cb89b708ead763c8e945ba6bdacf62200a53eccc7aa9f2a4e7b720  ta\
   \re_E4_length_zero_meaning_2026-10-23.csv
   8532d7cb0d3115962ac2e3598cb64ee779673d244fe88373647280b2999967ae  ta\
   \re_stress_estimators_2026-10-23.csv
   a5b4fc4d496dafd70548b88ec555ccb87fd3fea7084f4bf1a7ae4f0f5c726afe  ta\
   \re_stress_validity_2026-10-23.csv
   b2910a2a532a507b5fdf3e19c9c89456e5947a97d11aa8948235f09122c50c4e  ta\
   \re_supplement_gate_2026-10-24.csv
   d0ce5e1ef7437d7562bea8c8a1258d69f098ac5aafbb18ca8758925521eecceb  ta\
   \re_hybrid_estimators_2026-10-23.csv
   24678c553c78d45a96287611604009ae3984ffbeaf99265a6eab9a932c83a771  ta\
   \re_hybrid_validity_2026-10-23.csv
   50c2c36aea1e15d37c39a1483e066b524a7b565de52c020177a729e200a70f07  ta\
   \re_hybrid_slope_sweep_2026-10-23.csv
   f34d94861ead17afeff43a3292a6b567f68d34feeb891f20c4d594e61ab610e6  ta\
   \re_hybrid_power_2026-10-23.csv
   e68718f432575f941732ca0540abe029b661fe8f01608824dec555ce86e75a03  ta\
   \re_hybrid_pooling_depth_2026-10-23.csv
   550edfa9008f12df47e89b3b11c0ebf25dd6ffdb623b1a7411a634bad32f549c  ta\
   \re_hybrid_leverage_2026-10-23.csv
   4d34ff11684e65bc4a8e9d0ab5eb3222b30ab40e15b0cda0050bd01efc2bf0d8  ta\
   \re_supplement_hybrid_2026-10-24.csv

                           Figure 24: SHA256SUMS

Cummings                  Expires 28 April 2027               [Page 118]
Internet-Draft                    TARE                      October 2026

H.3.  Reproduction

   *  Place the six scripts of Appendix F in one directory and create an
      empty output directory.

   *  Run each of the matched-budget, stress, hybrid, and supplementary
      scripts as python3 -I SCRIPT OUTDIR, where OUTDIR is the output
      directory.  The Monte Carlo script of Appendix A takes no argument
      and writes its file to the current directory, so run it from
      inside the output directory.  The order does not matter, except
      that tare_core_2026-10-23.py must be present for the four scripts
      that import it.

   *  Compare the output files with Appendix G, or with sha256sum -c,
      using the checksums of Section H.2.

   *  The environment used for the files in this document was Python
      3.13, numpy 2.5.3, pandas 3.0.5, and SciPy 1.18.1.  Other versions
      can change random streams and floating-point rounding, so a
      mismatch in the last digits under different versions does not by
      itself indicate an error.

Author's Address

   Samuel S. Cummings
   E2 LLC
   Email: samuel@samuelcummings.com

Cummings                  Expires 28 April 2027               [Page 119]