Level 3 · our own model

NF-Learn

Every upstream read is persisted on our side — raw payload, distilled series, feed health. NF-Learn learns from that accumulating ledger. It is not another weather model: it learns the residual the physical families leave behind, and the fragility that precedes their failure. Where the ledger is too thin, it abstains rather than inventing a number.

Observations kept

171,819

typed, deduplicated series

Raw snapshots

21,713

every upstream payload, verbatim

Receipts issued

32,338

18,035 still open

Receipts scored

14,303

outcome became available

Head A — residual learner

One weight set per channel, shared across every entity in it. A new city inherits everything the channel has learned.

precipitationAGRICULTURE
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+72hv7524,184-0.11×0.502026-09-09 12:05
+6hv7551,9040.0197%×0.502026-09-09 12:05
+24hv7544,334-0.0697%×0.502026-09-09 12:05

learned weights, +72h

bias
-0.101
level_z
-0.830
lag1_delta
-0.059
lag2_delta
-0.072
mean6_delta
0.073
mean24_delta
-0.214
slope
-0.056
dispersion
-0.193
hour_sin
0.007
hour_cos
-0.007
surface_pressureAGRICULTURE
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv7551,936-0.0190%×1.022026-09-09 12:05
+24hv7544,3760.2289%×1.132026-09-09 12:05
+72hv7524,1690.62×1.122026-09-09 12:05

learned weights, +6h

bias
-0.013
level_z
-0.383
lag1_delta
1.358
lag2_delta
0.634
mean6_delta
-1.012
mean24_delta
0.624
slope
-2.247
dispersion
0.298
hour_sin
0.413
hour_cos
0.232
temperature_2mAGRICULTURE
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv124406,4900.1290%×1.042026-09-09 12:05
+24hv99371,024-0.1390%×1.002026-09-09 12:05
+72hv91299,171-0.1090%×0.992026-09-09 12:05

learned weights, +6h

bias
-0.267
level_z
-0.746
lag1_delta
0.448
lag2_delta
-0.024
mean6_delta
-0.560
mean24_delta
0.110
slope
0.695
dispersion
0.533
hour_sin
0.051
hour_cos
-1.303
wind_speed_10mAGRICULTURE
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+24hv99370,9770.2390%×0.952026-09-09 12:05
+72hv91299,0940.2590%×0.922026-09-09 12:05
+6hv124406,4270.1490%×0.982026-09-09 12:05

learned weights, +24h

bias
-0.225
level_z
-1.358
lag1_delta
-0.063
lag2_delta
-0.001
mean6_delta
0.083
mean24_delta
0.656
slope
-0.070
dispersion
0.084
hour_sin
-0.178
hour_cos
0.097
pm2_5AIR
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv125526,280-0.0490%×0.942026-09-09 12:05
+24hv100504,275-0.0390%×1.032026-09-09 12:05
+72hv91462,3130.1290%×1.032026-09-09 12:05

learned weights, +6h

bias
0.273
level_z
-0.998
lag1_delta
0.067
lag2_delta
0.056
mean6_delta
0.464
mean24_delta
0.346
slope
-0.287
dispersion
-0.616
hour_sin
0.141
hour_cos
-0.623
pm25AIR
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv124320.73×1.002026-09-09 12:05

learned weights, +6h

bias
0.014
level_z
-0.477
lag1_delta
0.004
lag2_delta
-0.034
mean6_delta
0.019
mean24_delta
-0.084
slope
0.047
dispersion
-0.068
hour_sin
-0.224
hour_cos
-0.848
precipitationAIR
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv7531,6480.04×0.902026-09-09 12:05
+24hv7524,1380.35×0.602026-09-09 12:05
+72hv366,3070.32×1.102026-09-09 12:05

learned weights, +6h

bias
-0.246
level_z
-1.401
lag1_delta
-0.048
lag2_delta
-0.035
mean6_delta
0.132
mean24_delta
0.166
slope
0.276
dispersion
-0.173
hour_sin
0.093
hour_cos
-0.055
surface_pressureAIR
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv7531,6360.33×1.012026-09-09 12:05
+24hv7524,1360.33×1.062026-09-09 12:05
+72hv356,2860.04×0.932026-09-09 12:05

learned weights, +6h

bias
-0.114
level_z
-0.890
lag1_delta
0.814
lag2_delta
0.210
mean6_delta
-0.260
mean24_delta
0.164
slope
-2.171
dispersion
0.185
hour_sin
-0.319
hour_cos
-0.123
temperature_2mAIR
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv125526,5590.3590%×1.042026-09-09 12:05
+24hv100504,537-0.1090%×1.092026-09-09 12:05
+72hv91462,5890.1090%×1.062026-09-09 12:05

learned weights, +6h

bias
-0.468
level_z
-1.081
lag1_delta
0.461
lag2_delta
0.233
mean6_delta
-0.011
mean24_delta
0.392
slope
-0.371
dispersion
0.207
hour_sin
0.288
hour_cos
0.655
wind_speed_10mAIR
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv125526,415-0.0390%×0.982026-09-09 12:05
+24hv100504,3770.1590%×1.002026-09-09 12:05
+72hv91462,4410.2590%×1.002026-09-09 12:05

learned weights, +6h

bias
0.040
level_z
-1.219
lag1_delta
-0.046
lag2_delta
0.047
mean6_delta
-0.188
mean24_delta
0.534
slope
-0.081
dispersion
-0.150
hour_sin
0.402
hour_cos
0.029
ml_anomaly_scoreEARTH
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv8935,5950.0081%×0.742026-09-09 12:05

learned weights, +6h

bias
0.000
level_z
0.000
lag1_delta
0.000
lag2_delta
0.000
mean6_delta
0.000
mean24_delta
0.000
slope
0.000
dispersion
0.000
hour_sin
0.000
hour_cos
0.000
ml_rate_ratio_7dEARTH
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv8935,5910.0084%×0.562026-09-09 12:05

learned weights, +6h

bias
0.000
level_z
0.000
lag1_delta
0.000
lag2_delta
0.000
mean6_delta
0.000
mean24_delta
0.000
slope
0.000
dispersion
0.000
hour_sin
0.000
hour_cos
0.000
ml_swarm_scoreEARTH
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv8935,594-0.0195%×0.502026-09-09 12:05

learned weights, +6h

bias
-0.005
level_z
-0.905
lag1_delta
0.050
lag2_delta
0.070
mean6_delta
0.112
mean24_delta
-0.146
slope
0.004
dispersion
-0.232
hour_sin
-0.044
hour_cos
0.060
ocean_current_speedSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv126080.43×1.032026-09-09 12:05
+24hv1190.14×0.952026-09-09 12:05

learned weights, +6h

bias
0.208
level_z
-3.116
lag1_delta
-0.109
lag2_delta
-0.049
mean6_delta
1.126
mean24_delta
1.126
slope
0.243
dispersion
-0.156
hour_sin
0.165
hour_cos
-0.373
precipitationSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+72hv7521,2000.27×0.802026-09-09 12:05
+6hv7548,571-0.2894%×0.502026-09-09 12:05
+24hv7541,0190.15×0.552026-09-09 12:05

learned weights, +72h

bias
-0.038
level_z
-1.230
lag1_delta
-0.161
lag2_delta
-0.084
mean6_delta
0.165
mean24_delta
0.291
slope
-0.496
dispersion
-0.272
hour_sin
-0.128
hour_cos
0.068
sea_level_mSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv126080.77×0.952026-09-09 12:05
+24hv1190.18×1.052026-09-09 12:05

learned weights, +6h

bias
0.695
level_z
-3.281
lag1_delta
-0.555
lag2_delta
-0.309
mean6_delta
1.222
mean24_delta
1.286
slope
-0.939
dispersion
-0.819
hour_sin
0.273
hour_cos
-0.049
sea_surface_temperatureSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv124375,145-0.7290%×0.982026-09-09 12:05
+24hv99340,561-0.0591%×0.822026-09-09 12:05
+72hv91273,231-0.5890%×0.882026-09-09 12:05

learned weights, +6h

bias
-0.092
level_z
-0.083
lag1_delta
-0.070
lag2_delta
-0.076
mean6_delta
-0.083
mean24_delta
-0.131
slope
0.279
dispersion
0.046
hour_sin
0.098
hour_cos
0.191
secondary_swell_directionSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+24hv1190.32×1.052026-09-09 12:05
+6hv126080.12×1.282026-09-09 12:05

learned weights, +24h

bias
-0.219
level_z
-0.908
lag1_delta
0.035
lag2_delta
0.070
mean6_delta
0.145
mean24_delta
0.145
slope
0.073
dispersion
0.359
hour_sin
-0.000
hour_cos
0.219
secondary_swell_height_mSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+24hv1190.49×0.952026-09-09 12:05
+6hv12608-0.02×1.002026-09-09 12:05

learned weights, +24h

bias
0.091
level_z
-1.343
lag1_delta
0.004
lag2_delta
-0.282
mean6_delta
0.197
mean24_delta
0.197
slope
0.177
dispersion
-0.143
hour_sin
0.000
hour_cos
-0.091
sstSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv126080.61×1.112026-09-09 12:05
+24hv1190.10×1.052026-09-09 12:05

learned weights, +6h

bias
0.496
level_z
-1.785
lag1_delta
-0.347
lag2_delta
-0.078
mean6_delta
0.731
mean24_delta
0.817
slope
0.073
dispersion
-0.613
hour_sin
0.902
hour_cos
0.304
storm_surge_mSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv126080.51×0.992026-09-09 12:05
+24hv1190.60×1.152026-09-09 12:05

learned weights, +6h

bias
-0.260
level_z
-2.595
lag1_delta
-0.480
lag2_delta
0.023
mean6_delta
0.845
mean24_delta
1.045
slope
0.398
dispersion
0.246
hour_sin
-0.043
hour_cos
-0.410
surface_pressureSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+24hv7540,9890.32×0.932026-09-09 12:05
+72hv7521,2050.38×1.102026-09-09 12:05
+6hv7548,522-0.0590%×1.002026-09-09 12:05

learned weights, +24h

bias
-0.565
level_z
-1.126
lag1_delta
-0.271
lag2_delta
-0.170
mean6_delta
0.308
mean24_delta
0.668
slope
-0.342
dispersion
1.302
hour_sin
0.004
hour_cos
0.146
swell_directionSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv126080.42×1.052026-09-09 12:05
+24hv1190.41×1.052026-09-09 12:05

learned weights, +6h

bias
0.135
level_z
-2.659
lag1_delta
-0.105
lag2_delta
-0.185
mean6_delta
0.973
mean24_delta
0.973
slope
0.071
dispersion
-0.247
hour_sin
-0.154
hour_cos
0.021
swell_heightSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv126080.14×1.072026-09-09 12:05
+24hv1190.33×1.152026-09-09 12:05

learned weights, +6h

bias
-0.043
level_z
-1.803
lag1_delta
0.049
lag2_delta
-0.076
mean6_delta
0.660
mean24_delta
0.660
slope
0.059
dispersion
0.212
hour_sin
0.135
hour_cos
-0.092
swell_periodSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv126080.35×0.942026-09-09 12:05
+24hv1190.72×1.052026-09-09 12:05

learned weights, +6h

bias
-0.189
level_z
-2.091
lag1_delta
-0.253
lag2_delta
-0.040
mean6_delta
0.958
mean24_delta
0.958
slope
-0.375
dispersion
0.175
hour_sin
-0.007
hour_cos
0.078
temperature_2mSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv91374,073-0.1390%×0.982026-09-09 12:05
+24hv99340,547-0.0590%×0.982026-09-09 12:05
+72hv91273,2520.2890%×0.952026-09-09 12:05

learned weights, +6h

bias
-0.009
level_z
-0.460
lag1_delta
0.121
lag2_delta
-0.006
mean6_delta
0.041
mean24_delta
0.523
slope
-0.227
dispersion
-0.081
hour_sin
-0.013
hour_cos
-0.031
wave_heightSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv124375,8480.1090%×0.952026-09-09 12:05
+24hv99340,6350.0390%×1.042026-09-09 12:05
+72hv91273,2580.3591%×0.852026-09-09 12:05

learned weights, +6h

bias
0.043
level_z
-0.091
lag1_delta
0.267
lag2_delta
0.031
mean6_delta
0.598
mean24_delta
0.039
slope
-0.936
dispersion
-0.316
hour_sin
-0.030
hour_cos
0.044
wave_periodSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv126080.06×1.082026-09-09 12:05
+24hv119-0.07×1.052026-09-09 12:05

learned weights, +6h

bias
0.076
level_z
-1.811
lag1_delta
-0.101
lag2_delta
-0.186
mean6_delta
0.567
mean24_delta
0.835
slope
-0.150
dispersion
-0.133
hour_sin
-0.126
hour_cos
0.155
wind_speed_10mSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv124375,2570.1290%×0.992026-09-09 12:05
+24hv99340,6230.2990%×1.042026-09-09 12:05
+72hv91273,2800.2990%×1.032026-09-09 12:05

learned weights, +6h

bias
0.023
level_z
-0.493
lag1_delta
-0.080
lag2_delta
-0.053
mean6_delta
0.197
mean24_delta
0.377
slope
-0.090
dispersion
0.153
hour_sin
0.059
hour_cos
0.018
wind_wave_directionSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv126080.34×1.092026-09-09 12:05
+24hv119-0.32×0.952026-09-09 12:05

learned weights, +6h

bias
-0.040
level_z
-2.131
lag1_delta
0.065
lag2_delta
0.062
mean6_delta
0.541
mean24_delta
0.874
slope
-0.182
dispersion
0.001
hour_sin
-0.157
hour_cos
0.110
wind_wave_heightSEA
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv126080.34×1.102026-09-09 12:05
+24hv1190.05×0.952026-09-09 12:05

learned weights, +6h

bias
0.644
level_z
-2.810
lag1_delta
0.148
lag2_delta
0.093
mean6_delta
0.936
mean24_delta
0.936
slope
0.384
dispersion
-0.682
hour_sin
0.072
hour_cos
-0.257
pm2_5URBAN
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv125461,7430.1190%×0.912026-09-09 12:05
+24hv99432,011-0.0490%×0.952026-09-09 12:05
+72hv91369,3060.2890%×0.912026-09-09 12:05

learned weights, +6h

bias
0.177
level_z
-0.575
lag1_delta
0.154
lag2_delta
-0.064
mean6_delta
-0.082
mean24_delta
-0.081
slope
0.635
dispersion
-0.464
hour_sin
-0.082
hour_cos
0.091
precipitationURBAN
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+24hv7535,623-1.41×0.662026-09-09 12:05
+72hv7516,515-0.07×1.242026-09-09 12:05
+6hv7543,127-0.73×0.572026-09-09 12:05

learned weights, +24h

bias
0.178
level_z
-1.319
lag1_delta
-0.154
lag2_delta
-0.098
mean6_delta
0.148
mean24_delta
0.477
slope
-0.251
dispersion
-0.063
hour_sin
-0.342
hour_cos
-0.036
surface_pressureURBAN
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+72hv7516,5190.76×1.032026-09-09 12:05
+6hv7543,1620.13×1.162026-09-09 12:05
+24hv7535,6650.27×1.082026-09-09 12:05

learned weights, +72h

bias
-0.019
level_z
-1.551
lag1_delta
-1.286
lag2_delta
-0.585
mean6_delta
1.220
mean24_delta
-0.457
slope
2.218
dispersion
-0.301
hour_sin
-0.017
hour_cos
0.064
temperature_2mURBAN
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv91460,5010.0990%×0.982026-09-09 12:05
+24hv99431,962-0.0290%×0.982026-09-09 12:05
+72hv91369,3000.0590%×1.032026-09-09 12:05

learned weights, +6h

bias
0.025
level_z
-0.815
lag1_delta
0.775
lag2_delta
0.301
mean6_delta
-0.645
mean24_delta
0.444
slope
1.226
dispersion
0.047
hour_sin
0.014
hour_cos
-0.743
wind_speed_10mURBAN
horizonversionsamples seenskill vs persistenceempirical coverageinterval scaleupdated
+6hv125461,7760.1090%×1.012026-09-09 12:05
+24hv99432,0610.1190%×1.022026-09-09 12:05
+72hv91369,3120.2690%×1.022026-09-09 12:05

learned weights, +6h

bias
-0.074
level_z
-1.057
lag1_delta
0.044
lag2_delta
0.033
mean6_delta
-0.091
mean24_delta
0.355
slope
-0.274
dispersion
0.309
hour_sin
0.177
hour_cos
-0.613

Head B — fragility

P(validity breach within 72h), trained on our own scored receipts. Features are observable before the breach, never after.

Brier skill

-0.14

vs base rate

Base rate

0.63

observed breach frequency

Samples seen

355

v1

bias
0.637
recent_error_z
-1.782
error_trend
0.313
coverage_deficit
4.047
staleness
0.000
dispersion
-0.610
horizon_z
-0.239

Scoreboard

NF-Learn's own receipts, scored against what actually happened.

modelnMAEcoverage
nf-learn:sea:wind_wave_direction7740.1262%
nf-learn:sea:swell_height770.0988%
nf-learn:sea:ocean_current_speed770.5240%
nf-learn:sea:swell_period770.9375%
nf-learn:sea:wave_period770.5338%
nf-learn:sea:wind_wave_height770.1630%
nf-learn:sea:secondary_swell_height_m770.0938%
nf-learn:sea:swell_direction7718.8662%
nf-learn:sea:wave_height770.0862%
nf-learn:sea:sst770.584%
nf-learn:sea:storm_surge_m770.0227%
nf-learn:sea:sea_level_m770.4168%
nf-learn:sea:secondary_swell_direction7643.6071%

Learning cycles

Ingest → train → issue → score. Idempotent: a repeated cycle re-reads the same window without duplicating a single row.

startedtriggerobservationsissuedscoredtrain samples
2026-09-09 12:05scheduler6388821,248181,525
2026-09-09 11:05scheduler5396660181,145
2026-09-09 10:17open-meteo6,72028,0111920
2026-09-09 10:05scheduler6407370181,078
2026-09-09 09:17open-meteo6,72028,0116120
2026-09-09 09:05scheduler6417370180,848
2026-09-09 08:17open-meteo6,72028,0115170
2026-09-09 08:05scheduler642666240180,794
2026-09-09 07:17open-meteo6,72028,0111,4880
2026-09-09 07:05scheduler6436660180,902
2026-09-09 06:17open-meteo6,72028,0111,3800
2026-09-09 06:05scheduler6446660180,845

Ledger opened 2026-06-13 00:00. Discrete events — earthquakes above all — are stored as events and never resampled into a continuous series, so no head can learn from a curve that does not exist. Scheduler endpoint: /api/public/engine-cycle.