| Driver | Value | Status | Notes / quick fixes |
|---|---|---|---|
| Confidence score | 0.88 | good | Low confidence often correlates with low straight time, unstable pacing, or many rejected samples. |
| Samples excluded | 6% | good | If high: tighten selection, exclude bad laps, and re-run QC/analyze. |
| Inconsistent laps | 2 (9%) | good | If unstable: check pacing, sensor dropouts, and avoid corners/traffic in the selection. |
| Straight time (effective) | 94 s | low | If low: widen selection to include more straights, or capture more clean laps. |
| Straight coverage | 1308 m | good | More straight distance generally improves confidence and stability. |
| Corner coverage | 3795 m | — | Turns often bias CdA high; heavy corner time can hurt quality unless handled explicitly. |
| Included distance/laps | 5103 m • 22 laps | — | If low: widen selection or include more clean laps. |
| Solver samples used | 389 (S 96, C 293) | — | If low: exclusions/selection/steady-gate may have removed too much data. |
| Sample interval | 1.00 s (IQR 0.00s) | ok | Irregular or low sample rate can reduce confidence and increase quantization artifacts. |
| Missing samples | speed 0.0% • power 0.0% | good | Dropouts often explain unstable laps and high rejection. |
| Quantization step | power ~5 W • speed ~0.030 m/s | watch |
Large steps can create “blocky” data and inflate residuals.
Try: increase recording rate, disable device smoothing, and verify the source sensor (power meter vs trainer) isn’t heavily filtered.
If power step is big: check whether the device is rounding/averaging power (e.g., 3s/10s display smoothing shouldn’t affect recording, but some devices do).
If speed step is big: prefer wheel-speed sensor over GPS speed (especially indoors/velodrome).
|
| Data quality lap flags | dropouts 0 · spikes 0 · outliers 0 | good | Dropouts/spikes/outliers can sink confidence even if the lap “looks fine.” Consider excluding those laps. |
| Segment coverage | 4/4 | full | Missing segments can reduce stability/coverage. Aim for clean laps across the full track when possible. |
| Field | Meaning |
|---|---|
| Drag (CdA) | Average of per-sample instantaneous CdA values computed from a power-balance model with fixed Crr (and drivetrain loss). Uses only samples that pass exclusions (and optional steady gate). Units: m². |
| Drag — straights / corners | Same CdA computation as “CdA total”, but averaged over samples labeled straight vs corner by the track segmentation. Useful to spot corner artifacts vs stable straights. |
| Rolling resistance (Crr) | Rolling resistance coefficient held constant during the solve. It may come from a per-run override; otherwise a tire library/manual point is used when available. CdA is estimated while Crr stays fixed. |
| Uncertainty / CI95 | Two different things may appear: (1) CI95 is a bootstrap interval from solver_uncertainty_v2, resampling per-lap mean instantaneous CdA (1500 resamples, 95% interval). (2) Legacy “uncertainty” is a simple spread (std dev) of instantaneous CdA samples and is not a confidence interval. |
| Samples used | Counts from solver_sample_counts: total FIT samples, after exclusions, and the final number used by the solver (plus straight vs corner used). |
| Solver mode / steady gate | The mode can enable a “steady gate” that discards samples with large power ramps or speed changes (dp/dt and dv/dt thresholds), strong braking, and a short ignore window after a major power change. removed_frac is the fraction removed; the gate may fall back to disabled if it would remove too much. |
| CdA-inst stats | Diagnostics for instantaneous CdA on included samples: median plus dispersion (MAD/IQR). These are computed after masking invalid/out-of-bounds CdA values (e.g., non-finite or outside a plausible range). |
| Robust (straights) | A diagnostics-only straight fit stored in robust_v1: confidence-weighted IRLS (Huber) regression in wheel-power space on straight-labeled samples. It does not replace the reported CdA columns. |
| Rejected / residual / time used | Robust diagnostics: pct_rejected is mainly gating (not corners / below mins / below conf_min) and equals 1 - n_used/n_total. residual_metric is a robust residual scale (≈watts) from the straight-fit model (lower is better). straight_time_used_s summarizes how much time had non-zero fit weight. |
| Predicted power | Modeled steady-state (flat, no wind) power at fixed speeds using the run’s solved CdA total + fixed Crr and drivetrain loss. Useful for comparing “how fast this setup feels” on a common baseline. |
| Reference power table | Saved speed→power mapping built from the same steady-state model as Predicted power (CdA, fixed Crr, air density, mass, drivetrain loss) for consistent later comparisons. |
| legacy | robust | Δ | |
|---|---|---|---|
| CdA straight | 0.2961 | 0.1745 | -0.1215 (-41.0%) |
| Uncertainty | CI95 total | ± 0.0044 | — |
| Straight samples used | 96 | 96/389 | — |
|
Rejected
Fraction of straight candidates that end up zero-weight (≈
1 - n_used/n_total; mostly gating)
|
— | 75% | — |
|
Residual metric
Robust residual scale in watts (lower is better)
|
— | 56.9 | — |
| Straight time used | — | 388.0s | — |
| Straight segments used | — | 44 | — |
| Mode | Samples | Duration | Distance | Avg speed | Avg power | Avg cadence |
|---|---|---|---|---|---|---|
| Select a lap… | ||||||
| Lap | Start x | End x | Δx | Start t | End t | Δt |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Revision: #1
{
"created_at": "2026-05-07 14:39:13",
"finalized_at": null,
"has_tire_front_rear": true,
"is_finalized": false,
"notes": null,
"revision_number": 1,
"revision_of_run_id": null,
"run_id": 179,
"run_label": null,
"session_id": 99,
"status": "analyzed",
"tire_front_id": null,
"tire_front_name": null,
"tire_id": null,
"tire_name": null,
"tire_rear_id": null,
"tire_rear_name": null,
"tires_label": null
}
Analyze: Parses the uploaded file, detects laps from distance vs track lap length, classifies straight/corner segments, computes QC results (per-lap qc_flag/reasons/metrics + run summary), and computes solver outputs (avg CdA/Crr + predicted power). This may increase the number of lap rows if the file contains more laps than the FIT “lap messages” reported at upload.
Recompute: Re-runs the QC computations using the current lap inclusion/exclusions in this run (updates per-lap qc_flag + the run summary). Use after excluding laps.
Finalize: Locks this run permanently (immutable). After finalizing, analyze/recompute/exclude are blocked; create a revision to make changes while preserving an audit trail.
| lap_index | lap_id | included | qc_flag | qc_conf | qc_reasons | exclude_reason | action |
|---|---|---|---|---|---|---|---|
| 0 | 14818 | yes | green | 0.80 | Lap OK | ||
| 1 | 14819 | yes | green | 0.82 | Lap OK | ||
| 2 | 14820 | yes | green | 0.87 | Lap OK | ||
| 3 | 14821 | yes | green | 0.87 | Lap OK | ||
| 4 | 14822 | yes | green | 0.90 | Lap OK | ||
| 5 | 14823 | yes | green | 0.92 | Lap OK | ||
| 6 | 14824 | yes | green | 0.90 | Lap OK | ||
| 7 | 14825 | yes | green | 0.90 | Lap OK | ||
| 8 | 14826 | yes | green | 0.90 | Lap OK | ||
| 9 | 14827 | yes | green | 0.90 | Lap OK | ||
| 10 | 14828 | yes | green | 0.90 | Lap OK | ||
| 11 | 14829 | yes | yellow | 0.65 | Marginal stability: 0.65 | ||
| 12 | 14830 | yes | green | 0.86 | Lap OK | ||
| 13 | 14831 | yes | green | 0.88 | Lap OK | ||
| 14 | 14832 | yes | green | 0.88 | Lap OK | ||
| 15 | 14833 | yes | green | 0.86 | Lap OK | ||
| 16 | 14834 | yes | green | 0.86 | Lap OK | ||
| 17 | 14835 | yes | green | 0.89 | Lap OK | ||
| 18 | 14836 | yes | green | 0.88 | Lap OK | ||
| 19 | 14837 | yes | green | 0.89 | Lap OK | ||
| 20 | 14838 | yes | green | 0.89 | Lap OK | ||
| 21 | 14839 | yes | red | 0.40 | Unstable signals: 0.40 | ||
| 22 | 14840 | yes | (out of scope) | No samples in scope |
| run | date | track | label | QC | included | CdA | P@45 | P@50 | P@55 | state |
|---|---|---|---|---|---|---|---|---|---|---|
| #199 | 2026-05-07 | Aigle Velodrome (CH) — 200m | yellow | 2642m / 1 laps | 0.2843 | 373W | 501W | 656W | analyzed | |
| #183 | 2026-05-07 | Grenchen | green | 5493m / 24 laps | 0.2747 | 362W | 485W | 635W | analyzed | |
| #182 Recommended | 2026-05-07 | Grenchen | green | 6350m / 27 laps | 0.2795 | 367W | 493W | 645W | analyzed | |
| #181 Recommended | 2026-05-07 | Grenchen | green | 6591m / 28 laps | 0.2594 | 344W | 461W | 602W | analyzed | |
| #180 Recommended | 2026-05-07 | Grenchen | green | 6074m / 26 laps | 0.2511 | 334W | 447W | 585W | analyzed | |
| #179 | 2026-05-07 | Grenchen | green | 5103m / 22 laps | 0.2277 | 307W | 410W | 535W | analyzed |
(none)