Skip to content
GREEN FUTURETECH.
Explore

Research libraryFactories on a Weak Grid

Chapter 08 of 14 · Part III · Draft web edition

A restarted clock must not rewrite production history

A trustworthy record separates identifiers, source sequence and clock quality so reconciliation can explain what happened during disconnection.

Sections
7
Exhibits
4
Minutes
26
Sources
23
EX 31 · 4 h: Illustrative 10 ppm residual drift 0.1, Illustrative 20 ppm baseline (C04) 0.3, Illustrative 50 ppm thermal stress 0.7 (seconds of accumulated clock error)

The cloth is woven from this chapter's 4 exhibits: each weft is one exhibit's own data, normalised; each warp group is a section. The probe reads the exhibit's own value where it crosses. Procedural visualisation, not a measurement.

The chapter as a draft: 7 sections, 3 exhibit wefts, one shuttle.

Lead exhibit · 31TrajectoryderivedClock holdover consumes the timestamp error budget linearly with offline duration
00.511.50 h2 h4 h6 h8 h

Read-out0 h: Illustrative 10 ppm residual drift 0, Illustrative 20 ppm baseline (C04) 0, Illustrative 50 ppm thermal stress 0 (seconds of accumulated clock error)

Method and source

Derived from illustrative oscillator input only (Calculation C04): error_s = ppm * t_seconds / 1,000,000. At 20 ppm over 8 hours (28,800 s), drift equals 0.576 s. The 10 ppm and 50 ppm curves illustrate sensitivity to oscillator stability and thermal drift; no measured factory device performance is implied.

Unit: seconds of accumulated clock error. Status: derived. Sources: S10, S30.

The chapter's warpBar: share of the reading · square: an exhibit

Section 8.0 · Opening · 1 min · no exhibit of its own · one movement Go to section ↓

The chapter cloth8 warp groups · one pick per paragraph

This paragraph previews 8.5 · Clock holdover must be measured on the chosen device

A factory operating through power interruptions and backhaul dropouts cannot rely on wall-clock timestamps alone to establish what happened on the shop floor, in what order it happened, or whether two records describe the same bundle.[S10][S31][S32] When an edge gateway, barcode station or Programmable Logic Controller (PLC) bridge loses mains power and exhausts its local reserve, its clock can drift during holdover, reset to a default epoch on cold boot, or step forward or backward when network time returns.[S10][S11][S30] Green Future Tech Limited (GFT) argues that a trustworthy production record must decouple event identity, local causal sequence and wall-clock time across three timestamps: source event time, site ingest time and central ingest time, each stored with clock-quality metadata and a kernel or process boot identity.[S31][S32] When connectivity returns, reconciliation rules should preserve the source observation, append attributed correction events rather than overwriting history, and mark unresolved conflicts visibly on the Performance Management System (PMS) dashboard so missing telemetry is never mistaken for zero output or fault-free operation.[S03][S05][S13]

In Cameroon's cotton-to-garment value chain, where roughly 95 percent of cotton fibre is exported raw and about 5 percent is processed locally according to the inherited sector register, expanding domestic transformation toward the 50 percent national industrialisation target by 2030 under the National Development Strategy (SND30) requires operating records that managers, quality leads and buyers can audit after every outage.[R06][R07] Those sector figures describe the national baseline rather than a GFT factory result, and GFT's three-part Cameroon textile programme (prepared 31 January 2024, with sources refreshed in 2026) is a design specification rather than a commissioned plant.[R06][S03] Within that boundary, durable local capture and bounded queueing keep records alive during an interruption, but those records remain usable for batch traceability, piece-rate verification and Overall Equipment Effectiveness (OEE) accounting only if time and identity survive a disconnected restart.[S05][S13][S31]

8.13 min · 1 sub-steps · read with a related exhibit

Timestamp formatting and timestamp accuracy are different

A syntactically valid timestamp string proves only that a serialiser formatted a register according to a text grammar; it does not prove that the clock agreed with Coordinated Universal Time (UTC) when the physical event occurred.[S10][S32] RFC 3339 specifies an Internet profile of ISO 8601 in which every timestamp expresses a four-digit year, month, day, hour, minute, second, optional fractional second and an explicit offset or Z indicator relative to UTC, eliminating local time-zone ambiguity and permitting lexicographical sorting when timestamps share a common UTC offset and precision.[S32] Yet an edge controller whose uncompensated real-time clock wakes from a power cut at 1970-01-01T00:00:04.120Z or 2024-01-31T00:00:00.000Z emits valid RFC 3339 strings that place a current sewing completion years in the past, corrupting shift attribution, lot genealogy and dwell-time calculations once delayed events reach an upstream database.[S13][S30][S32]

¶ 01 · 4 sources

RFC 3339 specifies an Internet profile of ISO 8601 in which every timestamp expresses…S32

Related · Exhibit 14 · chapter 04

S10S32S13S30

To preserve what the capture device knew at the moment of work, GFT specifies a three-timestamp envelope for every event: source_event_time (when the sensor trigger, scan or operator confirmation was accepted locally), site_ingest_time (when the site broker or SQLite store committed the event on the Local Area Network, LAN) and central_ingest_time (when the upstream service committed the replayed record after backhaul recovery).[S03][S12][S13][S20][S32] None of these fields may overwrite another during replay; instead, each carries a clock_quality attribute recording the synchronisation state of the clock that struck it.[S10][S11][S32]

In the Network Time Protocol version 4 (NTPv4) specification, RFC 5905 defines roles and metrics that clarify what a clock knows.[S10] A primary server at stratum 1 synchronises directly to a reference clock traceable to UTC, such as a Global Navigation Satellite System (GNSS) receiver, secondary servers at strata 2 to 15 distribute time down a subnet, and stratum 16 designates an unsynchronised clock.[S10] At every update, an NTPv4 association tracks offset (theta), round-trip delay (delta), dispersion (epsilon, growing at the worst-case frequency tolerance PHI of 15 parts per million in RFC 5905) and jitter (psi), combining them into root delay (DELTA), root dispersion (EPSILON) and synchronisation distance (LAMBDA = EPSILON + DELTA / 2), while the Leap Indicator (LI) signals value 3 when unsynchronised and a zero timestamp marks unknown time.[S10]

¶ 03 · 1 source

In the Network Time Protocol version 4 (NTPv4) specificationS10

S10

8.2 A three-timestamp contract preserves observation provenance

8.2

When an edge station records a bundle transfer on a weak grid, its event schema should capture enough timing metadata to reconstruct both the nominal instant and its uncertainty band.[S10][S32] GFT's proposed event envelope attaches four timing fields to the source observation:

¶ 04 · 2 sources

S10S32

  1. source_event_time_utc, formatted to RFC 3339 with explicit UTC indicator Z (or -00:00 where UTC is used without asserting a local zone offset) and the shift calendar identifier.[S32]
  2. monotonic_ns, read from the kernel's monotonic counter since boot, advancing independently of wall-clock steps within that boot and interpreted only within its boot_id.[S30][S31]
  3. clock_state, distinguishing SYNCHRONISED_LOCKED (disciplined within declared root dispersion), HOLDOVER_RTC (free-running on local crystal or real-time clock), RESTORED_MONOTONIC_FLOOR (advanced on boot from the last disk timestamp without live NTP lock) and UNSYNCHRONISED_EPOCH (uncalibrated after battery loss or cold reset).[S10][S30]
  4. estimated_max_error_ms, recording current synchronisation distance or holdover bound at capture, or null in UNSYNCHRONISED_EPOCH.[S10]
List · 4 sources

S32S30S31S10

Retaining source_event_time_utc, site_ingest_time_utc and central_ingest_time_utc side by side separates process duration between stations, LAN queueing delay and WAN backlog duration during backhaul recovery.[S08][S13][S32] If a station's real-time clock battery failed over a weekend and recorded 40 illustrative scans at an epoch date before the site NTP server booted, site_ingest_time_utc brackets the capture window while UNSYNCHRONISED_EPOCH prevents scripts from computing a multi-year negative lead time.[S10][S30][S32]

¶ 05 · 5 sources

…over a weekend and recorded 40 illustrative scans at an epoch date before the…S10, S30, S32 · illustrative

S08S13S32S10S30

Note · 3 sources

S05S13S32

8.33 min · 1 sub-steps · read with a related exhibit

Identity must survive a lack of online allocation

When external connectivity fails or a switch loses power between bays, capture stations cannot request sequential keys from a central coordinator.[S03][S31] Relying on an online auto-increment sequence or ticket server forces the line either to stop recording work during a partition or to assign temporary numbers that collide upon reconnection.[S13][S31] RFC 9562 defines 128-bit Universally Unique Identifiers (UUIDs) so distributed nodes can mint persistent identifiers autonomously, while noting that uniqueness and sortability depend on the UUID version, entropy quality and clock-rollback handling.[S31]

¶ 01 · 3 sources

RFC 9562 defines 128-bit Universally Unique Identifiers (UUIDs) so distributed nodes can mint persistent identifiers autonomouslyS31

Related · Exhibit 25 · chapter 06

S03S31S13

Comparing the UUID versions in RFC 9562 shows why a factory on an intermittent grid cannot treat a time-ordered UUID as a standalone substitute for sequence and identity fields.[S31] UUID version 4 (UUIDv4) populates 122 bits (outside the 4-bit version 0b0100 and 2-bit variant 0b10) from a Cryptographically Secure Pseudorandom Number Generator (CSPRNG), avoiding wall-clock dependency at the cost of poor B-tree index locality.[S31] Conversely, UUID version 7 (UUIDv7) places a 48-bit big-endian Unix Epoch millisecond timestamp (unix_ts_ms) in bits 0 through 47, followed by the 4-bit version (0b0111), 12 bits in rand_a, the 2-bit variant (0b10) and 62 bits in rand_b, sorting monotonically and clustering cleanly in SQLite indexes under synchronised operation.[S13][S31]

¶ 02 · 2 sources

…the UUID versions in RFC 9562 shows why a factory on an intermittent grid…S31

S31S13

8.4 Clock rollbacks and early-boot entropy require composite keys

8.4

On an unreliable grid, embedding a wall-clock timestamp inside UUIDv7 exposes two hazards.[S31] First, if an edge node reboots without a valid real-time clock or experiences a backward clock step when NTP disciplines a fast oscillator, the 48-bit unix_ts_ms prefix moves backward.[S10][S31] RFC 9562 Sections 6.1 and 6.2 warn that when the clock moves backward, time-based generators break monotonicity or risk collisions unless the implementation maintains generator state (such as the last timestamp and a monotonic counter in rand_a or rand_b) and applies monotonic error checking.[S31] Second, RFC 9562 Sections 6.9 and 8 warn that uniqueness depends on a seeded CSPRNG; if an embedded node boots rapidly after power loss before gathering sufficient entropy, or if a virtualised image is cloned across stations without reseeding state, random bits can repeat.[S31]

¶ 03 · 2 sources

embedding a wall-clock timestamp inside UUIDv7 exposes two hazardsS31

S31S10

GFT therefore separates uniqueness from causal ordering by requiring a composite identity alongside event_id.[S13][S31] Even when event_id is minted as a 128-bit UUIDv4 or UUIDv7, every locally committed record must carry (source_id, boot_id, source_seq):[S31]

¶ 04 · 2 sources

Even when event_id is minted as a 128-bit UUIDv4 or UUIDv7S31

S13S31

  • source_id is an immutable station identifier provisioned at commissioning (such as STN-GAR-CUT-04 for an illustrative cutting terminal) and bound to local credentials, never derived from a replaceable Media Access Control (MAC) address, which RFC 9562 warns is neither guaranteed unique across virtualised environments nor desirable to expose.[S04][S31]
  • boot_id is a 128-bit identifier generated for the running kernel or process invocation and scoped by source_id; a persistent boot_epoch counter in SQLite distinguishes process restarts without a kernel reboot. This is GFT's proposed identifier contract, using the decentralised identifier properties in RFC 9562 rather than assuming a particular operating-system function.[S13][S21][S31]
  • source_seq is a strictly increasing 64-bit unsigned integer assigned inside the same SQLite atomic commit transaction that writes the event and its outbox row.[S13]
List · 4 sources

S04S31S13S21

Combining source_id, boot_id and source_seq prevents post-crash counter collisions.[S13][S31] If a station with an unrecovered journal resets its counter to 1 after an abrupt power cut while its clock resets to a default date, omitting boot_id causes new events (STN-01, seq=1..50) to collide with pre-outage events (STN-01, seq=1..50), leading an idempotent consumer to drop new work or overwrite prior records.[S12][S15][S16][S19] Including boot_id marks the restart boundary, accepts the new sequence without collision and flags any unclosed transaction from the prior boot for supervisor review.[S13][S31]

¶ 05 · 6 sources

seq=1..50) to collide with pre-outage events (STN-01S12, S15, S16, S19

S13S31S12S15S16S19

8.53 min · 1 sub-steps · 1 exhibit

Clock holdover must be measured on the chosen device

Related · chapter 037 paragraphs step it

Related exhibit 10 · chapter 03Bar chartillustrativeThe illustrative outage uses only part of its time allowance
01232.4Allowance1.5Interruption0.9Remainder

Read-outAllowance: 2.4 minutes within an illustrative scheduled duty

Method and source

Illustrative inputs: scheduled duty 480 minutes, availability target 99.5 percent, measured-in-scenario interruption 1.5 minutes. Allowance = 480*(1-0.995) = 2.4 minutes; remainder = 2.4-1.5 = 0.9 minutes. The scenario separately loses 180 acknowledged events and fails its record contract. No operating result is asserted.

Unit: minutes within an illustrative scheduled duty. Status: illustrative. Illustrative figures are teaching examples, not measured factory results.

Read this exhibit in its chapter ↗
8.5 · Introduction · paragraph 1 of 7

When a factory's external link drops or a power cut de-energises the site router while protected stations continue capturing bundle completions on battery reserve, every surviving digital clock enters holdover.[S03][S10] During holdover, a system clock advances by counting oscillations of its local quartz crystal or real-time clock (RTC) chip, accumulating offset across manufacturing tolerances, voltage changes, ageing and enclosure temperature swings.[S10][S30] In RFC 5905 Section 4, time offset T(t) at running time t relative to calibration at t0 follows T(t) = T(t0) + R(t0) * (t - t0) + 0.5 * D(t0) * (t - t0)^2 + e, where T(t0) is initial offset, R(t0) is fractional frequency offset (1 ppm = 10^-6 s/s), D(t0) is crystal ageing rate and e is stochastic noise.[S10] While the chrony documentation notes that a typical computer clock drifts by less than 100 ppm uncompensated, and RFC 5905 sets default frequency tolerance PHI to 15e-6 s/s (15 ppm), actual shop-floor holdover depends on prior crystal calibration and thermal rise when ventilation stops.[S10][S30]

8.6 RTC compensation and drift files reduce cold-start and holdover error

A resilient Linux edge configuration manages both the volatile kernel system clock in RAM and the hardware RTC (/dev/rtc) powered by a coin cell or supercapacitor during power loss.[S30] As documented in the chrony FAQ, three directives govern clock behaviour across disconnections and power cycles: driftfile (recording the measured system clock frequency offset to disk so chronyd applies the learned correction upon restart), rtcsync (copying synchronised time to the hardware RTC periodically while NTP lock is healthy) and rtcfile combined with -s (tracking the hardware RTC's own rate error and compensating the RTC reading when cold-booting offline).[S30]

If an embedded controller lacks a battery-backed RTC or its coin cell fails in heat, chronyd -s can use the drift file's modification time to advance the boot clock towards the last recorded pre-shutdown timestamp, though the clock still lags behind UTC by the unpowered outage duration until a server responds.[S30] GFT specifies full NTPv4 supervision via chronyd on site gateways and edge nodes, anchored by a local Stratum 1 GNSS reference or a site server with the local directive so LAN nodes share a common timescale when WAN backhaul fails.[S10][S11][S30]

The relationship between holdover duration and accumulated timestamp error across three illustrative oscillator residual drift scenarios (10 ppm, the 20 ppm baseline from Calculation C04, and 50 ppm under thermal stress) is shown in Exhibit 31.[S10][S30]

As Exhibit 31 demonstrates, even a disciplined crystal gradually consumes the error budget during prolonged disconnection, and the linear equation cannot capture abrupt step errors caused by a power cycle to a dead RTC battery or thermal shock when cabinet fans stop.[S10][S30] Site commissioning must therefore measure holdover drift on the selected hardware across realistic cabinet temperatures rather than copying a datasheet rating.[S05][S30]

8.72 min · 1 sub-steps · 1 exhibit

Time recovery can invalidate an unsafe ordering assumption

Step 1 of 5Seq 101: Bundle scan in holdover

Exhibit 32 · illustrativeSource sequence and boot identity preserve local event order through a clock step

0Seq 101: Bundle scan inholdover180Seq 102: Seam operationlogged300Seq 103: NTP recoverysteps clock -12 s305Seq 104: Quality checkrecorded540Seq 105: Reconciledoutbox replay
0Seq 101:Bundle sc…180Seq 102:Seam oper…300Seq 103:NTP recov…305Seq 104:Quality c…540Seq 105:Reconcile…

Seq 101: Bundle scan in holdover

0: Seq 101: Bundle scan in holdover. Boot B1; clock_state=HOLDOVER_RTC (+12 s fast). · illustrative

When external or local NTP service returns after an outage…

Seq 102: Seam operation logged

180: Seq 102: Seam operation logged. Boot B1; monotonic time advances +180 s. · illustrative

Seq 103: NTP recovery steps clock -12 s

300: Seq 103: NTP recovery steps clock -12 s. Boot B1; wall clock jumps backward 12 s; audit event written. · illustrative

Seq 104: Quality check recorded

305: Seq 104: Quality check recorded. Boot B1; wall time is 7 s earlier than Seq 102, but Seq 104 > 102. · illustrative

Seq 105: Reconciled outbox replay

540: Seq 105: Reconciled outbox replay. Boot B1; site_ingest_time_utc recorded; order preserved by Seq. · illustrative

Method and source · Exhibit 32

Illustrative event trace on a single sewing station across a 600-second window. At monotonic second 300, NTP recovery steps a fast holdover clock backward by 12 seconds; source_seq (101 to 105) and monotonic_ns preserve true local order while source_event_time_utc steps backward.

Unit: illustrative monotonic seconds from shift start. Status: illustrative. Sources: S10, S31, S32. Illustrative figures are teaching examples, not measured factory results.

8.7 · the bodyExhibit 32 above; its figures are illustrative where marked.

When external or local NTP service returns after an outage, the clock discipline daemon reconciles the drifted or reset system clock with the reference timescale via a gradual frequency slew (adjtime()) or an abrupt step (settimeofday()).[S10][S30] In chronyd, makestep (such as makestep 1 3) permits stepping the clock if the offset exceeds 1 second during the first 3 updates, whereas smaller offsets are slewed gradually.[S30]

¶ 01 · 2 sources

makestep (such as makestep 1 3) permits stepping the clock if the offset exceeds…S30

Related · Exhibit 07 · chapter 02

S10S30

Both modes affect event logs directly.[S10][S30] If a station's clock ran fast during holdover and chronyd steps the clock backward by 4 illustrative seconds when the site server becomes reachable, events captured right after the step carry source_event_time_utc values numerically earlier than events captured 2 seconds before the step.[S10][S32] Conversely, if a station booted from a stale disk floor (RESTORED_MONOTONIC_FLOOR) 25 illustrative minutes behind UTC and chronyd steps the clock forward by 25 minutes upon recovery, the timestamp trace shows a 25-minute void that looks identical to an unplanned stoppage if an OEE script subtracts consecutive timestamps.[S30]

¶ 02 · 3 sources

…steps the clock backward by 4 illustrative seconds when the site server becomes reachableS10, S32 · illustrative

S10S30S32

Exhibit 32 illustrates how a local event trace preserves exact causal order across an abrupt clock correction when each event carries boot_id, source_seq, monotonic_ns, source_event_time and site_ingest_time.[S10][S31][S32]

¶ 03 · 3 sourcesExhibit 32

S10S31S32

As shown in Exhibit 32, if a query orders events solely by ORDER BY source_event_time_utc, Event Seq 104 (recorded 5 illustrative seconds after the 12-second backward clock step) sorts before Event Seq 102 (recorded 125 seconds earlier), making it appear that inspection preceded sewing.[S10][S32] Ordering intra-station events by (source_id, boot_id, source_seq) and using monotonic_ns for elapsed cycle time within boot_id ensures the jump at Seq 103 neither reorders history nor distorts the 125-second interval.[S31][S32]

¶ 04 · 3 sources

Event Seq 104 (recorded 5 illustrative seconds after the 12-second backward clock step) sorts…S10, S32 · illustrative

Exhibit 32

S10S32S31

8.8 Source sequence orders one station, not the entire factory

8.8

While (source_id, boot_id, source_seq) establishes a total order for events emitted by one capture process within a single boot session, local sequence numbers cannot order events across independent devices.[S10][S31] If Cutting Table A emits (CUT-A, B1, seq=412) and Sewing Line B emits (SEW-B, B9, seq=88) while the LAN switch between them is unpowered, neither counter constrains relative timing between the stations.[S03][S31] Cross-station ordering during disconnected operation relies on three reconciliation rules:[S13][S31]

¶ 05 · 4 sources

seq=412) and Sewing Line B emits (SEW-BS03, S31

S10S31S03S13

  1. Physical token handoff dependencies: When bundle traveller BUNDLE-2026-0841 must scan out of Cutting Table A (CUT_COMPLETE) before scanning into Sewing Line B (SEW_START), the state machine defines a causal edge (CUT_COMPLETE -> SEW_START) keyed by the bundle identifier, ordering the handoff by state transition and flagging any negative apparent transit time as a clock-offset anomaly.[S13][S31][S32]
  2. Clock-step audit events: Whenever chronyd steps the clock or transitions from HOLDOVER_RTC to SYNCHRONISED_LOCKED, the agent writes a CLOCK_STEP_RECORDED event with the pre-step timestamp, post-step timestamp, monotonic_ns reading and current source_seq, enabling reconciliation to map pre-step timestamps onto the post-step UTC timeline without mutating source_event_time_utc.[S10][S13][S22][S30][S32]
  3. Explicit tie-breaking and uncertainty intervals: When two events on different stations share no physical token and their estimated_max_error_ms bands overlap, reconciliation classifies their relative order as CONCURRENT_WITHIN_CLOCK_UNCERTAINTY rather than inventing millisecond precedence.[S10][S32]
List · 6 sources

S13S31S32S10S22S30

8.92 min · 1 sub-steps · 1 exhibit

Authenticated time introduces a bootstrap dependency

Protecting a factory clock against network spoofing is both a reliability requirement and a cybersecurity control.[S03][S11][S0802] RFC 7384 and RFC 8633 show how unauthenticated NTP packets can be forged, replayed or delayed to shift clocks, and RFC 8633 Section 5.2 warns of daemon-restart attacks in which an offset above the NTP panic threshold (PANICT = 1000 s in RFC 5905) crashes a daemon that systemd restarts with cold-start panic checks disabled.[S10][S11][S21][S0802] RFC 8915 specifies Network Time Security (NTS), pairing an NTS Key Establishment (NTS-KE) handshake over Transport Layer Security (TLS) on TCP port 4460 with authenticated encryption (AEAD_AES_SIV_CMAC_256) using cookies in NTPv4 extension fields.[S23][S27]

¶ 01 · 7 sources

RFC 7384 and RFC 8633 show how unauthenticated NTP packets can be forgedS10, S11, S21, S0802

Related · Exhibit 40 · chapter 10

S03S11S0802S10S21S23S27

However, deploying NTS or TLS-dependent services on a weak grid introduces a circular dependency at cold boot.[S23][S27][S30] During NTS-KE over TLS 1.3 (RFC 9846, obsoleting RFC 8446 as of July 2026), the client verifies the server's X.509 certificate under RFC 5280 (notBefore and notAfter).[S23][S27][S0801] As RFC 8915 Section 8.5 and the chrony FAQ Section 3.5 explain, if an edge device boots with an exhausted RTC and its clock defaults to 1970-01-01 or a stale date outside [notBefore, notAfter], strict TLS verification fails, blocking the handshake needed to set the clock.[S23][S27][S30][S0801]

¶ 02 · 4 sources

the client verifies the server’s X.509 certificate under RFC 5280 (notBefore and notAfter)S23, S27, S0801

S23S27S30S0801

Note · 4 sources

S03S27S30S0801

8.10 Four engineering controls break the time-and-TLS deadlock safely

8.10

Both RFC 8915 Section 8.5 and the chrony documentation provide mechanisms that prevent an offline restart from triggering an NTS/TLS deadlock:[S27][S30]

¶ 03 · 2 sources

Both RFC 8915 Section 8.5 and the chrony documentation provide mechanisms that prevent an…S27, S30

S27S30

  1. Persist NTS cookies and AEAD keys across restarts: RFC 8915 Section 5.7 specifies retaining unused cookies, C2S and S2C keys and AEAD parameters in persistent storage; in chronyd, ntsdumpdir /var/lib/chrony writes NTS cookies to disk so a rebooted client resumes authenticated UDP port 123 polling without a fresh TLS handshake on TCP port 4460.[S27][S30]
  2. Persist a monotonic minimum time floor on disk: RFC 8915 Section 8.5 recommends writing synchronised time to disk and rejecting certificates whose notAfter precedes that floor, while chronyd -s initialises the boot clock from the drift file's modification time even without an RTC battery, placing the client inside [notBefore, notAfter] when the outage is shorter than remaining certificate validity.[S27][S30][S0801]
  3. Maintain a protected local Stratum 1 or site boundary time server: Following RFC 8633 Sections 3.2 and 3.3 and chrony LAN guidelines, edge stations should poll at least three or four sources anchored by a site GNSS server, using ntstrustedcerts and nosystemcert with annual rotation for internal NTS.[S10][S11][S30]
  4. Require an auditable operator runbook for cold-start intervention: Following RFC 8633 Section 5.2 and NIST SP 800-82 Rev. 3 controls, chronyd should restrict makestep to boot updates and set maxchange to guard runtime steps, while manual bootstrap after battery and cookie expiry requires an authenticated maintenance login logged in persistent journald storage.[S03][S11][S22][S30]

Exhibit 33 summarises the protocol mechanisms alongside GFT site qualification requirements.[S10][S11][S23][S27][S30][S0801]

Exhibit 33RegistersourcedAuthenticated time and certificate checks depend on persisted clock state
Failure or mechanism
X.509 validity window (S0801, S23)
Documented protocol or daemon behaviour
TLS 1.3 checks current clock against certificate notBefore and notAfter dates
GFT site requirement (proposed control)
Verify cold-boot clock reaches validity window before NTS-KE or HTTPS replay

Read-outFailure or mechanism: X.509 validity window (S0801, S23). Documented protocol or daemon behaviour: TLS 1.3 checks current clock against certificate notBefore and notAfter dates. GFT site requirement (proposed control): Verify cold-boot clock reaches validity window before NTS-KE or HTTPS replay

Open the full register (5 rows)
X.509 validity window (S0801, S23)TLS 1.3 checks current clock against certificate notBefore and notAfter datesVerify cold-boot clock reaches validity window before NTS-KE or HTTPS replay
NTS cookie persistence (S27, S30)RFC 8915 persistent cookies and chrony ntsdumpdir allow NTP resume without TLS NTS-KEConfigure ntsdumpdir on durable storage and test reboot with TCP 4460 blocked
RTC drift and disk floor (S30)chrony rtcfile -s compensates RTC drift; disk timestamp advances clock on battery lossMeasure RTC holdover across cabinet heat and verify disk-floor advancement
Panic threshold and restart (S10, S11, S30)RFC 5905 PANICT is 1000 s; RFC 8633 warns auto-restart plus ignored panic enables attackBound makestep to boot updates, set maxchange and alert on daemon exit
NTS stripping defense (S27)RFC 8915 forbids silent fallback from NTS to unauthenticated NTP on handshake failureHold clock in HOLDOVER_RTC with dashboard flag rather than downgrade to plain NTP
Method and source

Source-based comparison of time-synchronisation and certificate-validation behaviours from RFC 5905 (S10), RFC 8633 (S11), RFC 9846 (S23), RFC 8915 (S27), chrony FAQ (S30) and RFC 5280 (S0801), paired with GFT commissioning controls.

Unit: specification mechanism and GFT control. Status: sourced. Sources: S10, S11, S23, S27, S30, S0801.

As Exhibit 33 makes explicit, the difference between a resilient factory node and one that locks itself out after a weekend power cut lies in persistent local state (ntsdumpdir, driftfile, rtcfile and persistent journald logs) verified under fault testing before sign-off.[S22][S27][S30]

¶ 01 · 3 sourcesExhibit 33

S22S27S30

8.112 min · 1 sub-steps · 1 exhibit

Manual and automated records need a conflict policy

Even with battery-backed gateways, prolonged power cuts or sensor failures periodically push stations into manual fallback.[S03][S05] During fallback, supervisors or clerks record completions, piece counts and defect dispositions on paper travellers or offline spreadsheets carrying the bundle identifier, operation code, shift, role and paper sequence number.[S05][S31] When power and LAN services return, the plant must reconcile manual entries against automated events committed before the outage, buffered in an outbox during holdover, or re-scanned after the terminal returned.[S12][S13][S31]

Without an explicit conflict policy, automated replay and manual import corrupt the ledger in two opposite ways: blindly summing manual counts with buffered scans double-counts bundles scanned just before a screen freeze, whereas deleting automated rows to match a paper sheet destroys the audit trail.[S12][S13][S19][S31]

¶ 02 · 4 sources

S12S13S19S31

8.12 Append-only reconciliation states preserve the audit trail

8.12

GFT resolves the boundary between manual and automated capture through an append-only ledger built on atomic transactions (S13), idempotent keys (S12, S31) and explicit authority rules.[S12][S13][S31] Every production event is stored as an immutable claim linked to (bundle_id, operation_id) and evaluated across four rules:[S13][S31]

¶ 03 · 3 sources

S12S13S31

  1. Deduplication of identical business claims: If an automated event and a manual entry reference the same (bundle_id, operation_id) with identical piece counts and compatible shift windows, the system links both raw records to one consolidated ledger entry, sets RECONCILED_CONCURRING and credits production once.[S12][S13][S31]
  2. Resolution of split-outage partial counts: Suppose a station committed 35 illustrative pieces of a 50-piece bundle before UPS shutdown (SERVICE_SHUTDOWN_COMMITTED) and the operator completed 15 illustrative pieces on paper. If the paper form records the cumulative total (50 pieces) rather than the increment (15 pieces), summing both yields 85 pieces; the engine flags QUANTITY_OVERFLOW_CONFLICT whenever auto_count + manual_count > bundle_standard_qty and sets PENDING_SUPERVISOR_RECONCILIATION until the supervisor confirms whether the paper entry was cumulative or incremental.[S05][S13]
  3. Source authority hierarchy by measurement type: For presence and timestamp of a barcode scan in SYNCHRONISED_LOCKED state, the committed automated event holds primary timing authority over a transcribed paper time, whereas for physical piece count and defect grading completed while terminals were unpowered (MANUAL_FALLBACK_ACTIVE), the signed supervisor tally sheet holds primary count authority.[S03][S05][S10][S13]
  4. Immutable correction events rather than destructive updates: Resolving a conflict never executes an UPDATE or DELETE on raw event rows; instead, it commits an atomic RECONCILIATION_DECISION event carrying its own event_id, reviewer_role, decision_timestamp_utc, superseded_event_ids, authoritative_qty and reason_code (delegating retention and access governance to wp14 and lot genealogy to wp05).[S03][S13][S31][S32]

Exhibit 34 maps representative post-outage reconciliation scenarios across automated capture evidence completeness and count agreement between manual and automated records.[S13][S31]

¶ 01 · 2 sourcesExhibit 34

S13S31

Exhibit 34Decision mapillustrativeConflicts between manual and automated records require an explicit reconciliation decision
Manual-led reviewAuto-concurring releaseHold and physical recountSupervisor split auditAutomated capture evidence completeness →Manual versus automated count agreement →Matching scan and pap…Holdover scan matches…Unpowered window pape…Cumulative vs increme…Missing seq gap + cou…Clock reset + duplica…

Read-outMatching scan and paper tally: Automated capture evidence completeness 9, Manual versus automated count agreement 9. Quadrant: Auto-concurring release

Method and source

Illustrative classification of six post-outage bundle reconciliation cases on a 0-to-10 scale of automated evidence completeness (x-axis) versus count agreement between manual and automated logs (y-axis). Design basis: atomic ledger integrity (S13) and independent event identification (S31).

Unit: illustrative evidence and consistency score (0 to 10). Status: illustrative. Sources: S13, S31. Illustrative figures are teaching examples, not measured factory results.

Looking at Exhibit 34, only cases in Auto-concurring release close automatically upon replay.[S13][S31] Cases in Manual-led review post under manual authority with a SOURCE=MANUAL_FALLBACK tag, whereas Supervisor split audit and Hold and physical recount hold release until supervisor confirmation or a recount is committed.[S03][S05][S13]

¶ 01 · 4 sourcesExhibit 34

S13S31S03S05

8.132 min · 1 sub-steps · read with a related exhibit

The dashboard should show unresolved uncertainty

The final link in recovering a trustworthy operation is honest visual representation on shop-floor and management dashboards.[S03][S05] Most dashboards assume a closed world: if the database holds zero completions for Sewing Line 2 between 10:00 and 11:00, the chart plots 0 units/hour as a line stop; if 400 illustrative buffered events arrive at 11:04 without source-time separation, it plots a 400 units/hour surge.[S05][S32] On a weak grid, a silent telemetry gap during a LAN or power outage is an epistemic state (UNKNOWN_PRODUCTION_PENDING_REPLAY), not a measured physical zero (MEASURED_ZERO_OUTPUT).[S05]

¶ 01 · 3 sources

if the database holds zero completions for Sewing Line 2 between 10:00 and 11:00S05, S32 · illustrative

Related · Exhibit 43 · chapter 11

S03S05S32

Similarly, when a station captures events in HOLDOVER_RTC or UNSYNCHRONISED_EPOCH, or when an illustrative sequence gap (source_seq jumping from 410 to 425 on the same boot_id) indicates 14 unrecovered records, displaying an unannotated KPI tile misleads supervisors into acting on incomplete data.[S10][S16][S31] In GFT's Cameroon textile programme, where the PMS guides shift huddles, coaching and maintenance dispatch, the interface must surface data trust alongside production volume.[S03][S05]

¶ 02 · 5 sources

…sequence gap (source_seq jumping from 410 to 425 on the same boot_id) indicates 14…S10, S16, S31 · illustrative

S10S16S31S03S05

8.14 Four visual quality states prevent false operational conclusions

8.14

GFT proposes that every chart, shift summary and OEE indicator in the PMS render four data-state overlays driven by the reconciliation ledger (delegating OEE formulations under partial observability to wp15 and daily management routines to wp02):[S03][S05][S11]

¶ 03 · 3 sources

S03S05S11

  • Stale backhaul / pending replay (STALE_TELEMETRY_HOLD): When a station or gateway has not delivered a cursor update within its freshness threshold (t_last), the segment after its last confirmed commit is shaded with a hatched band rather than plotting zero output (0 units).[S05][S08]
  • Degraded clock certainty (CLOCK_UNSYNCHRONISED or CLOCK_HOLDOVER): Events committed outside SYNCHRONISED_LOCKED (such as an 8-hour holdover at 20 ppm with a 0.576 s C04 bound, or a dead RTC reboot) display a clock-uncertainty badge or site_ingest_time_utc bracket, allowing shift tallying while blocking sub-second cross-station correlation.[S10][S30][S32]
  • Sequence discontinuity alert (MISSING_SEQUENCE_GAP): If the ledger for (source_id, boot_id) contains sequence numbers N and N + k (k > 1) without intermediate records after replay catches up, the dashboard raises a banner naming the station, boot session and missing slot count (k - 1) so supervisors check bundle travellers before closing the shift.[S13][S16][S31]
  • Provisional count pending reconciliation (UNRECONCILED_BUNDLE_CONFLICT): Whenever a shift total includes bundles in PENDING_SUPERVISOR_RECONCILIATION, the KPI card displays both the confirmed baseline and the disputed range (such as 35 confirmed + 15 disputed in an illustrative overlap), locking shift sign-off until a RECONCILIATION_DECISION event is committed.[S05][S12][S13]

Enforcing these rules at the presentation layer ensures that a power cut or clock reset cannot silently rewrite history into either a phantom crash or a phantom productivity spike.[S03][S05][S13] Operators and managers see what was measured on a locked clock, what was ordered by local sequence during holdover, what was recovered from paper fallback, and what awaits verification.[S10][S31][S32]

¶ 04 · 6 sources

S03S05S13S10S31S32

Check the record

The chapter keeps its sources within reach.

Every knot is a source this chapter cites; select one to read its record, or filter the register by grade. Publication dates and inherited-source limits stay explicit. Read the paper's full evidence summary.

23 sources · 282 citation marks on this pageMost cited: S10, 41 times

Grade AGrade BGrade CKnot size: citations on this page

All 23 records shown

R06 · Grade C · inherited record

Cameroon Trade Hub

Inherited evidence R06

About 95 percent of cotton fibre exported raw against 5 percent processed locally; industrialisation target of 50 percent local processing.

Publication date unrecorded. Inherited source-text record. The original publication has not been independently reopened for this web edition.

Chapter source notes

S10 IETF / RFC Editor. 2010.

S31 IETF / RFC Editor. 2024.

S32 IETF / RFC Editor. 2002.

S11 IETF / RFC Editor. 2019.

S30 chrony project. 2026-10-30.

S03 NIST. 2023.

S05 NIST. 2010.

S13 SQLite. 2026-10-30.

R06 Cameroon Trade Hub. Publication date unrecorded; inherited source-text check.

R07 Ecofin Agency. Publication date unrecorded; inherited source-text check.

S12 IETF / RFC Editor. 2022.

S20 Eclipse Mosquitto. 2026-10-30.

S08 IETF / RFC Editor. 2007.

S04 NIST. 2018.

S21 systemd project. 2026-10-30.

S15 SQLite. 2026-10-30.

S16 SQLite. 2026-10-30.

S19 OASIS. 2019-03-07.

S22 systemd project. 2026-10-30.

S0802 IETF / RFC Editor. 2014-10.

S23 IETF / RFC Editor. 2026.

S27 IETF / RFC Editor. 2020.

S0801 IETF / RFC Editor. 2008-05.

Keep the thread · chapter 08 of 14

Chapter 09 picks up the thread.

Move the shuttle along the rack to preview any chapter: its sections, exhibits and reading time. Draft web edition. This research is not investment, legal or tax advice; illustrative models are not measured factory results.

The paper's rack · 14 boltsBolt length: reading time

09Part III: Recover a trustworthy operation

Local inference still needs a complete operating envelope

An edge model supports continuity only when its inputs, licence, operator interface and fallback remain usable without the cloud.

  • 9.1An edge model is one dependency within an inspection function
  • 9.4Offline startup must include model and licence availability
  • 9.7Inference delay must be bounded by the operating task
  • 9.10Human fallbacks must preserve quality authority
Reading time
26 min
Exhibits
4
Sections
7
Continue to chapter 09
← Previous: chapter 07, A bounded queue makes disconnection manageableContinue the threadChapter 09 · Local inference still needs a complete operating envelope

Find a thread.

Type to search.