DROPPEDBIT BLOG
Before the Alarm: Solution
Weekly Puzzle #06 of the Autumn 2026 season presented Before the Alarm, a multi-recorder calibration log wrapped in a Hill Valley clock-tower service sheet. With Weekly Puzzle #07 now active, ranked submissions for Issue 06 have concluded.
Spoiler warning: This post contains the complete solution for Weekly Puzzle #06. If you have not reviewed the transmission yet, you can inspect the archived puzzle record.
1. The Challenge Artifact
The transmission presented an out-of-order service log from three independent recorders (A, B, and C) and asked solvers to reconstruct the chronological event sequence and read its five marks:
HILL VALLEY / CLOCK TOWER SERVICE
Collection point: Twin Pines Mall.
Replacement sign: Lone Pine Mall.
Two reference pulses reached every recorder
simultaneously. Each recorder ran at a
constant rate between those pulses.
reference A B C
03:00:00 03:00:12 02:59:53 03:01:00
03:01:00 03:01:12 03:00:53 03:03:00
Captured events (local recorder time):
time unit mark
03:00:14 B T
03:00:27 A S
03:01:20 C O
03:00:13 A F
02:59:58 B R
Each event timestamp was recorded according to its unit's own local clock. Because the three clocks neither share a common starting offset nor all advance at the same speed, raw local timestamps cannot be compared directly until they are normalized to the shared reference timeline.
2. The Traps: Raw Sorting and Fixed-Offset Assumptions
Two shortcuts produce plausible-looking five-letter strings that fail validation:
-
Sorting raw local timestamps without calibration: Ordering the captured rows directly by their printed
timecolumn (02:59:58,03:00:13,03:00:14,03:00:27,03:01:20) yieldsRFTSO. This ignores thatBis running behind the reference clock whileAandCare ahead of it. -
Correcting only the initial offset at the first pulse: At the
03:00:00reference pulse,Ais 12 seconds fast (+12s),Bis 7 seconds slow (-7s), andCis 60 seconds fast (+60s). If you subtract each unit's initial offset under the assumption that all three clocks tick at normal1xspeed, eventO(03:01:20on unitC) maps to03:00:20—placing it afterS(03:00:15) and producingFRSOT.
That second trap is why the calibration table includes two reference pulses rather than one: a single synchronization point reveals clock offset (phase error), whereas two synchronization points reveal both offset and rate (frequency skew).
3. Calibrating Offset and Rate from the Sync Pulses
Between the first reference pulse (03:00:00) and the second (03:01:00), exactly 60 reference seconds elapse. Comparing how many local seconds each recorder advances across that same interval gives both its initial offset and its tick rate:
| Unit | First pulse (03:00:00 ref) |
Second pulse (03:01:00 ref) |
Initial offset at 03:00:00 |
Local elapsed (Δlocal) |
Rate (Δlocal / Δref) |
|---|---|---|---|---|---|
A |
03:00:12 |
03:01:12 |
+12 s |
60 s |
1.0x (normal speed) |
B |
02:59:53 |
03:00:53 |
-7 s |
60 s |
1.0x (normal speed) |
C |
03:01:00 |
03:03:00 |
+60 s |
120 s |
2.0x (twice reference speed) |
- Recorders
AandBrun at normal1.0xspeed with fixed offsets:Ais consistently 12 seconds fast, andBis consistently 7 seconds slow. - Recorder
Cstarts 60 seconds ahead at the first pulse and advances two local minutes (120 s) for every one reference minute (60 s), running at2.0xreference speed.
Because each recorder runs at a constant rate between the pulses, any local timestamp t_local converts to reference time t_ref via the linear calibration model:
elapsed_local = t_local - pulse1_local
elapsed_ref = elapsed_local / rate
t_ref = 03:00:00 + elapsed_ref
4. Normalizing the Captured Events
Applying each recorder's calibration parameters to the five captured events:
| Mark | Unit | Local time (t_local) |
First pulse (pulse1_local) |
Local elapsed (Δlocal) |
Rate | Reference elapsed (Δref) |
Reference time (t_ref) |
|---|---|---|---|---|---|---|---|
T |
B |
03:00:14 |
02:59:53 |
21 s |
1.0x |
21 s |
03:00:21 |
S |
A |
03:00:27 |
03:00:12 |
15 s |
1.0x |
15 s |
03:00:15 |
O |
C |
03:01:20 |
03:01:00 |
20 s |
2.0x |
10 s |
03:00:10 |
F |
A |
03:00:13 |
03:00:12 |
1 s |
1.0x |
1 s |
03:00:01 |
R |
B |
02:59:58 |
02:59:53 |
5 s |
1.0x |
5 s |
03:00:05 |
In particular, unit C logs mark O at 03:01:20, which is 20 local seconds after its first pulse (03:01:00). Because C runs at twice reference speed, those 20 local seconds correspond to 10 reference seconds, placing O at 03:00:10.
5. Verifying with Python
The calibration and sorting fit in a short script:
def to_seconds(hms: str) -> int:
h, m, s = map(int, hms.split(":"))
return h * 3600 + m * 60 + s
def format_hms(total_seconds: int) -> str:
h, rem = divmod(total_seconds, 3600)
m, s = divmod(rem, 60)
return f"{h:02d}:{m:02d}:{s:02d}"
ref_p1 = to_seconds("03:00:00")
ref_p2 = to_seconds("03:01:00")
ref_span = ref_p2 - ref_p1
pulses = {
"A": (to_seconds("03:00:12"), to_seconds("03:01:12")),
"B": (to_seconds("02:59:53"), to_seconds("03:00:53")),
"C": (to_seconds("03:01:00"), to_seconds("03:03:00")),
}
events = [
("03:00:14", "B", "T"),
("03:00:27", "A", "S"),
("03:01:20", "C", "O"),
("03:00:13", "A", "F"),
("02:59:58", "B", "R"),
]
corrected = []
for local_hms, unit, mark in events:
p1, p2 = pulses[unit]
rate = (p2 - p1) / ref_span
ref_time = ref_p1 + int((to_seconds(local_hms) - p1) / rate)
corrected.append((ref_time, mark, unit, local_hms))
corrected.sort()
for ref_time, mark, unit, local_hms in corrected:
print(f"{format_hms(ref_time)} {mark} ({unit} @ {local_hms})")
print("Sequence:", "".join(mark for _, mark, _, _ in corrected)) # FROST
Sorting the normalized events in chronological order:
| Order | Reference time | Unit | Local time | Mark |
|---|---|---|---|---|
| 1 | 03:00:01 |
A |
03:00:13 |
F |
| 2 | 03:00:05 |
B |
02:59:58 |
R |
| 3 | 03:00:10 |
C |
03:01:20 |
O |
| 4 | 03:00:15 |
A |
03:00:27 |
S |
| 5 | 03:00:21 |
B |
03:00:14 |
T |
Reading the five marks in reconstructed order spells:
FROST
Submitting FROST completed the issue. Letter case and repeated whitespace are ignored by the answer checker.
6. Clock Synchronization in Practice
The mechanics of Before the Alarm mirror how real-world telemetry and distributed systems reconcile timestamps across independent hardware clocks:
Offset vs. Frequency Drift
Physical quartz oscillators never tick at their exact nominal frequency; temperature, aging, and manufacturing tolerances introduce both phase offset (an initial difference from reference time) and frequency drift (a clock ticking slightly faster or slower than 1.0x). Over short intervals a constant-rate affine model (t_local = a * t_ref + b) accurately captures both effects.
NTP and Two-Point Calibration
Protocols such as the Network Time Protocol (NTP) and Precision Time Protocol (PTP / IEEE 1588) repeatedly exchange reference timestamps to estimate not only how far a local clock has strayed, but also its skew rate (measured in parts per million). Correcting both offset and rate allows the system to discipline the local clock smoothly (slewing) rather than merely jumping it at sync boundaries.
Post-Facto Log Reconstruction
In flight data recorders, seismic sensor arrays, and distributed tracing pipelines, capture nodes frequently operate disconnected from a live time server and receive periodic synchronization pulses instead. When logs are merged after collection, analysts use the bounding sync pulses to interpolate true event times before reconstructing causal order.
Hill Valley Theming
The service sheet's header—referencing Hill Valley, the Clock Tower, and the sign change from Twin Pines Mall to Lone Pine Mall—nods to Back to the Future (1985), where Marty McFly accidentally knocks over one of Old Man Peabody's two pine trees in 1955 and returns to a subtly altered 1985 timeline. As with the Wayne Enterprises dispatch in Issue 05 and the Aperture Science array in Issue 04, the references provide narrative flavor while the two supplied reference pulses determine every clock correction.
More Weekly Puzzles
Want another technical puzzle? Explore the weekly puzzles →