Exploratory robustness protocol, fixed before executing round-two analyses

Scope and evidence status
This protocol is written after the round-one session-holdout results were inspected. The later session is therefore a previously seen evaluation set, not a new untouched test set. All analyses below are exploratory secondary analyses of the same one-phone record. They add robustness checks and falsifiable comparisons, not independent experiments or new measurements. No simulated samples, randomized row split, post-hoc model selection, or alteration of round-one files is allowed.

Data and target
Read analysis/combined_aligned_samples.csv and analysis/raw_selected_fields.csv. Use the established one-to-one same-session nearest-timestamp alignment (maximum permitted 100 ms). The reference power is y = -(raw BatteryManager CURRENT_NOW / 1e6) * (raw battery Intent voltage / 1000), in W. Retain raw plugged = 0, status = 3, current < 0, and voltage > 0. Use the two main complete acquisition stems 20261005_014926 and 20261005_143740. Retain all their existing file parts together. Both x = est_total_mw/1000 and y are contemporaneous; this is not a future-power or time-to-empty forecast. CPU utilization and screen_on are observed contemporaneous covariates.

Fixed model candidates (report all)
1. Logged sum: prediction x, no fit.
2. Historical mean: mean y from training, held fixed within an evaluation block.
3. Scale NNLS: k*x, k >= 0, least squares on training only.
4. Affine NNLS: a + b*x, a,b >= 0, least squares on training only.
5. CPU NNLS: a + b*(cpu_util/100), a,b >= 0.
6. CPU + screen NNLS: a + b*(cpu_util/100) + c*screen_on, all coefficients nonnegative.
7. FFRLS: affine [1,x] model; initial theta and P from training-only ridge normal equations with numerical ridge 1e-6; forgetting factor fixed at 0.995 per observed sample, never selected on evaluation results. Each prediction is made before its target is supplied to the update. Reported power predictions are clipped below at zero, but the ordinary RLS innovation uses the unclipped linear prediction. Update only after predicting the current timestamp. Missing/charging rows do not trigger updates. Parameters are not reset on file-part boundaries. The effective forgetting depends on observation rate; this is a limitation of the specified sample-based scheme.

Previously seen session-holdout comparison
Fit or initialize on every eligible row in 20261005_014926. Evaluate every eligible row in the later 20261005_143740. The first six models stay fixed; FFRLS updates only after the current observation has been scored. Report MAE, RMSE, signed bias, R-squared, sample count, and complete model parameters. No method is designated best for confirmatory claims.

Time weighting and continuity
A valid continuous edge joins two eligible rows only if they were adjacent in the original combined table, share the complete session stem, and have 0 < delta_t <= 5 s. Allocate delta_t/2 to each endpoint. This defines trapezoid endpoint support weights without filling gaps or bridging excluded rows. For each evaluated subset, recompute edges using that subset; edges crossing evaluation boundaries are excluded. Isolated rows have zero time weight. Report sample-equal and time-support-weighted errors separately. Time weighting approximates behavior on observed support, not whole-session energy or unobserved intervals. Squared and absolute errors are endpoint-weighted rather than computed from interpolated power.

Minute aggregation and serial dependence
Define complete continuous segments using the same adjacency and 5-second rule. Within each segment and UTC-clock minute, compute time-support-weighted means of target, covariates and every prediction. Retain minute bins with at least 20 samples and at least 30 seconds of supported time, with within-bin weights recomputed so boundary edges are not imported. Compare predictions to reference after aggregation, assigning equal weight to each qualifying minute bin. Minute aggregation describes a different temporal resolution and must not be advertised as improved instantaneous accuracy. Report lag-one reference and residual correlations within continuous raw-sample edges; separately report minute-lag correlations only for consecutive minute bins in the same segment. These are descriptions, not inferential tests, effective sample-size claims, confidence intervals, or independent replication counts.

Fixed strata
For the previously seen later session, report each candidate by screen_on 0/1 and by battery-temperature bins <30, 30 to <35, 35 to <40, and >=40 degrees C. Preserve empty and small strata in outputs. Strata describe recorded conditions; temperature/screen effects are not causal because conditions were not randomized and other operating states covary. No threshold is moved after examining outcomes.

Forward chronological block check
Across the two main acquisitions, form fixed 30-minute UTC-clock blocks. A block is eligible for evaluation if it has at least 300 eligible test rows and at least 600 training rows strictly earlier than its clock start minus a 60-second embargo. Fit/initialize each candidate using all such prior rows, then score the entire block in timestamp order. FFRLS updates only after scoring each current row. Skipped blocks and reasons are saved. All future blocks are excluded from fitting the current block. Blocks on this single device are correlated follow-up periods, not independent experiments. Report per-block metrics, pooled predictions, and equal-block descriptive summaries; do not select a model by its favorable blocks or hide failures.

Outputs
Save this protocol, original-input SHA256 hashes, the complete analysis script, JSON/CSV metrics, every test prediction, coefficients and eligibility decisions, and 1-2 figures at 6.2-inch width with readable type. Summarize both improvements and negative findings, with explicit distinction between already-inspected holdout, forward updating, instantaneous weighting, and minute-resolution metrics. Do not overwrite original files or infer missing shutdown endpoints.
