New TLF cohort: ladder and drift locked
24 units · ladder and drift phases both locked
Page locked final
The cohort is 24 units. 23 produced usable data; 500194 did not, and the reason is recorded in the ladder section below.
Tryptophan ladder locked
The cohort moved onto a dilution ladder when the drift window closed at 09:00. The point of it is the thing the drift window could not supply: a known analyte concentration, so the amplitude becomes a slope in counts per ppb and the 18× gain spread can be expressed as a calibration.
Calibration: normalized TLF against concentration
Low-level response: significance against each unit's own blank
How many blank standard deviations each step sits above that unit's blank. The blank is quiet enough that this is a demanding test rather than a generous one: its median CV is 0.070%.
Per-unit calibration, and what sets it
Each unit's own slope on its own steps at 1 ppb and above, against the number of LED-512 bias points its sweep returns. The relationship is nearly deterministic.
Each step is summarised by the median amplitude at 20 °C over its window, using each unit's own ρ from the locked drift fit. Within-step CV is the scatter across that window, which is how a step that was still equilibrating gives itself away.
corr(slope, LED-512 cells returned) = 0.99 and
corr(slope, top bias reached) = 0.99. The six units that return 11 cells or fewer respond at a
median of 0.292 %/ppb against 2.124 for the twelve that return 20 or more.
500189, the shortest sweep in the cohort at six cells, is the least sensitive unit at 0.146 %/ppb.Drift phase locked
/barrel's 12 h minimum and fails its other two gates: temperature spans only
2.3–3.5 °C against the 4 a quench curve needs, and time and temperature are collinear at
|corr| = 0.80–0.94 against the 0.9 limit. The units were also still settling when the
window closed, so a rate fitted here would report the warm-up. What the window does deliver is the
quench and the settling curve.These units arrived unprovisioned: 23 had no Notehub serial, so no barcode, no pumphaus gateway, and every sweep they sent was dropped at the ingestion boundary. They were provisioned on 2026-09-09 by writing the modem and gateway rows keyed on the Notehub device UID, then given serials and a firmware target.
Temperature response locked
b_T runs −0.36 to
−2.21 %/°C with a median of −1.53. That brackets /findings' fleet
value of −1.71 and the TLF batch's −1.78, on a cohort that has never been characterised
before.b_T +31.11 %/°C, a time term of +180 %/day, lag-1 noise of 0.369% against 0.062–0.085%
for every other unit, and split halves that disagree by 260 percentage points. Five axes, all pointing the
same way. It should come out of the cohort until someone looks at it.Settling locked
Rate in successive 4-hour blocks since switch-on, median over the 22 sound units, on the locked window:
Cumulatively the median unit has gained 10.1% over the 20.7 h window and was still climbing when it closed, decelerating from about 0.5 %/h in the first few hours to 0.2 %/h at the end. Nothing here is flat yet.
/barrel found the same shape and drew the same conclusion: successive 6 h blocks in its one
reliable window read −1.32, −1.12, −0.76 then −0.53 %/day, so a short hold measures
the settling transient sitting on the drift. Its SETTLE_H of 2 h is far too short for what
this cohort is doing. A rate fitted today would be reporting the warm-up.What 19,299 sweeps say locked
The cohort spans 18× in gain at a matched bias of 2950, 107 to 1876 net counts.
Every unit starts its bias ramp in the same place and stops where the signal approaches the top of the
range, so the strong units return fewer cells: corr(cells, top bias) = 1.00 and
corr(cells, gain) = −0.87. The auto-range is working, and an earlier version of this
page wrongly called the short sweeps a fault.
The standard diagnostic set
The same four traces every campaign page carries, plus the bias sweep, which is where the gain
spread shows. One line per unit. The record is about two and a half hours long, so it is still far short
of the 12 h /barrel requires before a rate can be fitted.
Bias response at LED 512
Net counts against SiPM bias on each unit's most recent sweep, with the number of points in the legend. All 22 start at the same bias and climb the same curve; they differ in where the ramp stops, which is set by how much gain the unit has. The steep short traces belong to the high-gain units.
S-TLF amplitude
The canonical amplitude per sweep, each unit fitted against a shape built from its own sweeps. This is the trace a drift rate would eventually be fitted to, and the upward climb across it is the settling shown above.
S-TLF at 20 °C, the standard correction applied
The same amplitude with each unit's own quench removed,
amp20 = amp · exp(−ρ(T − 20)), ρ fitted on that unit's
own SiPM thermistor. Compare it with the panel above: the settling climb survives, because it is not
temperature, and the wobble on top of it goes.
/findings' fleet −1.71 %/°C for the per-unit value gives
0.14%, close behind./barrel found the same thing in water and the
opposite in air, where the measurement is about seven times cleaner. The per-unit numbers stay in the
table because they are what the pipeline uses; this only says the window cannot yet justify them.SiPM temperature
The channel every quench coefficient is fitted against. A drift window needs real excursion here:
/barrel will not fit a cubic below 4 °C of range.
ToF signal
Turbidity and fouling proxy. 500112 sits an order of magnitude above the rest.
Battery
/barrel treats a supply change as a confound to keep drift windows away from, so the
charge state is recorded rather than corrected for.
Per unit locked
Fitted jointly as ln(amp) = a + bT(T − 20) + slope·days on each
unit's own SiPM thermistor, the form /barrel uses. The time column is labeled
settling rather than drift because the separability gates fail and the rate is still decaying.
Lag-1 is the Allan-style noise floor.
Firmware
The cohort shipped on v0.1.18. All 24 are targeted at
tlf-main-log-unsafe-1m-20m-v0_1_20$20260821202810.binpack (1 minute sampling,
20 minute sync), set per device rather than on the fleet.
_fw on the device overrides the fleet and touches
only the intended units.Confirmed on all 24 by reading the value back, and the Notehub serial number is now
set on all 24 as well, through the reserved _sn variable. Setting a target is not the same as
running it, so the sampling cadence is what confirms pickup: the old build sampled every ~900 s, the new one
every 92–286 s.
⚠️ Which build a unit was on during a window is exactly the kind of thing a drift record has to carry rather than assume, so the state above is measured from the data, not from the write that requested it.
What the drift test needs before it can start
Taken from what /barrel and /findings established the hard way:
- A logged switch-on, water change and every handling event. A slope fitted across interventions measures the steps.
/barrel's “days 2–5” window crossed four of them and reported −13.56 %/day against a half-window disagreement of 20.74. - Windows bounded by events and opened 2 h after one. That change alone took
/findingsfrom 2 of 9 windows separable to 7 of 9. - 12 h minimum and a real temperature excursion. Below
MIN_T_RANGE_C= 4 a cubic quench is unsupported, and where|corr(days, T)| > 0.9no rate can be quoted at all. - A hold long enough to settle. Successive 6 h blocks in the one reliable window read −1.32, −1.12, −0.76 then −0.53 %/day, so a short hold measures the settling transient sitting on the drift.
Once those are in place this page gains the drift, quench and split-half reliability panels that
/barrel carries.
Provenance
data/tlf_qaqc_locked_20260910.json, byte-identical to the live one at the moment of the lock,
so the figures here remain reproducible if the working file is ever reused for a later campaign.Sweeps read from api_samplesraw.raw_payload joined through
api_payload.modem_id to api_gateway, selected on the cohort's provisioning
description. Amplitudes from the canonical estimator in shared/tlf-amp.js, each unit's
shape built on its own sweeps. Firmware and provisioning state from the Notehub API. Snapshot taken
2026-09-10 00:15 UTC; the figures move as data arrives.