Next Actions
Immediate Priority
- Run
./scripts/run-real-transfer-trial.shafter each INGV refresh. Correction (2026-08-09): the identical0.693435/0.315353reported on 2026-07-29, 2026-08-04, and again today was a stale-input artifact, not stability. The trial readsevents_italy_all_available.combined.normalized.csv, which onlybackfill-ingv-history.shused to write, so it stayed frozen at 2026-07-07 through three "refreshed" runs. After rebuilding that catalog (5,007 events through 2026-08-08), the trial scores held-out balanced accuracy0.667730and precision0.279167against a historical spatial-rate baseline of0.687589(precision0.322751). The transfer model is now below its own historical-rate control on both metrics. VLF and astronomy remain missing-mask features, so this is a seismic-history baseline, not evidence of multimodal prediction. - Use
./scripts/evaluate-piezo-group-holdout.shas the primary synthetic stability check. The latest 27-run evaluation averages0.578712balanced accuracy, with positive recall0.166667--0.916667and negative recall0.148148--0.914286; it fails the stability gate. - Keep random-init piezo/VLF-only as the leading controlled Transformer architecture. It averages
0.619033within episodes, but has not passed unseen-episode stability; direct and summary branches remain disabled by default. - Keep label-free real VLF pretraining as the default real-data path while supervised VLF-aligned labels remain one-class or sparse; require reconstruction to beat both zero and last-patch baselines.
- Continue periodic INGV refresh and prospective relabeling; the current catalog-coverage guard prevents false maturity. Region-level tables remain one-class, so use
./scripts/prepare-italy-spatial-model-inputs.shfor the fixed-cell baseline until more temporal coverage arrives. - Repeat
./scripts/evaluate-italy-spatial-baseline.shafter each refresh; its--group-by-timesplit keeps all cells from one VLF window in the same partition. The 2026-08-04 score0.666539was computed on stale Aug-4 inputs (see item 1 and 89). On genuinely refreshed data (11,020 rows, 7,258 labeled, 5,795 train / 1,463 test) the all-feature ablation scores calibrated balanced accuracy0.415351, precision0.191011, recall0.420330— below the 0.5 majority/always-negative baseline. The apparent skill in earlier runs did not survive fresh data. Keep this separate from the fixed-cell transfer trial, which uses a different contract. Diagnosed 2026-08-10 (item 93): the sub-chance score is a cross-era artifact of a split boundary that coincides with a collector outage. Within one era the score is0.655320/0.575000, but a coordinate control shows all of it is per-cell base rate. - Do not promote the spatial model. Label coverage improved materially on the 2026-08-09 refresh (10 of 19 cells contain positives, up from 6; 1,290 positive / 5,968 negative / 3,762 pending), and the re-run leave-one-cell-out evaluation now has 10 two-class folds instead of 5. Their mean calibrated balanced accuracy is
0.5031(range0.1558--0.8373) — indistinguishable from chance, with the top fold (0.8373) resting on a single positive row out of 382. The 19-fold mean is0.3712. Better label coverage did not produce spatial transfer. - Treat the permutation result as a hard stop for interpretation. On the 2026-08-09 refreshed table the five timestamp-shuffled controls average
0.6413(range0.6008--0.7158) against a real-order score of0.4154: all five controls beat the real chronological ordering, by a wide margin. Destroying temporal structure makes the task easier, which is the opposite of a predictive signal. The most likely mechanism is that shuffling leaks era information across the split — the real chronological test period is the recent dense-capture era with a different VLF feature distribution, and the shuffle mixes eras into training. Diagnose that distribution shift before any further modeling on this table; the permutation control is not a clean null while the shift exists. Diagnosed 2026-08-10 (item 93): the era-leak mechanism is confirmed, and the controls were also run at 100 epochs against a 600-epoch real run. Rerun cleanly within a single era at matched epochs, three of five controls still beat real order in each era, so the no-temporal-signal conclusion survives. - Follow Synthetic Event Alignment Strategies: first compare real and synthetic event-process statistics, then calibrate time/rate, magnitude, and spatial density before another transfer-model sweep.
- Review
data/derived/reports/italy_event_catalog_alignment.json; the first comparison shows synthetic magnitudes are far too high and synthetic episodes occupy fewer cells, so do not use raw synthetic magnitudes for transfer without calibration. - Compare calibrated catalogs using
data/derived/reports/italy_event_catalog_alignment_calibrated.json; rate and magnitude alignment improve, but spatial support remains incomplete. Use the new per-event spatial weights only in a weighted-training diagnostic until a source-observation model is validated. - Use the matching central-Italy catalog for central-Italy simulation profiles. The current raw seed-40 rate is about 16 times too high; do not select an extractor from a five-event sample. Generate and combine several independent episodes before judging temporal or spatial alignment.
- Use the three-episode combined calibrated profile as the current alignment candidate:
data/derived/reports/central_italy_event_catalog_alignment_combined_spatial.json. Its sample-matched nearest-neighbour distance is now3.469km; validate this improvement with more episodes and held-out spatial cells before promoting it. - Do not promote the 40,000-step seed-
4500profile. Its tuned ten-event catalog is too small and has poor magnitude and clustering alignment; generate several independent long episodes and require a minimum event count before recalibrating. - Use explicit simulation coverage duration in future catalog comparisons. The corrected five-episode report is
data/derived/reports/central_italy_event_catalog_alignment_5episode_duration_final.json; its rate ratio is0.924, but held-out episode and cell validation is still required. - Treat
./scripts/evaluate-italy-synthetic-episode-alignment.shas a regime-stability diagnostic only after all inputs share one simulator profile. The current0.278--14.990spread is configuration drift: regenerate seeds under the current source-localized refill profile before judging seed sensitivity. - Use the matched current-profile baseline at
data/derived/reports/central_italy_matched_3episode_q09996_w240_final.jsonfor the next alignment/model smoke tests. Keep the extractor settings (q=0.9996, window240, no event cap) explicit. - Use the per-episode reports under
data/derived/reports/central_italy_matched_q09996_episode_alignment/as a seed-stability gate. Rate is stable, but raw sample-matched clustering spans23.5--42.9 km; do not tune spatial transport against the aggregate alone. - Treat
data/derived/models/central_italy_matched_3episode_transfer_suite.jsonas a matched-model smoke baseline only. Its historical-rate control beats synthetic transfer and all thresholds are recall-driven; do not interpret the high balanced accuracy as skill. - Use
data/derived/models/central_italy_matched_3episode_target_calibration.jsonfor precision-aware comparisons. Report rate-matched precision and recall alongside balanced accuracy; do not select a threshold from the final holdout. - Use
data/derived/models/central_italy_matched_3episode_target_calibration_rolling_controls.jsonas the current precision gate: transfer rate-matched precision0.214is below the historical-rate control at0.228across four rolling folds. Improve features or training before changing threshold policy again. - Follow Feature And Training Options: multiscale seismic/neighbour features are now implemented behind
FEATURE_MODE=multiscale; the first MLP transfer check is negative, so retain compact features as the baseline and test the multiscale path only with more data and stronger calibration. - Use
data/derived/models/central_italy_transformer_sweep_long/summary.jsonas the current five-seed fixed-split Transformer reference. The longer run still favours piezo/VLF-only, but do not select it until the episode-held-out range improves. - Use
data/derived/models/central_italy_transformer_episode_holdout/as the current nine-fold multi-task diagnostic. Mean calibrated balanced accuracy is0.5508, with a0.3788--0.7009range; improve regime robustness before adding more capacity. - The identical occurrence-only control scores
0.5533, slightly above multi-task0.5508; keep occurrence-only as default. Only run count/energy loss-weight sweeps if a representation diagnostic justifies the added objectives, with normalization and threshold selection training-only. - Test domain-robust features with
FEATURE_MODE=relative: use causal local/neighbour activity and magnitude/energy relative to the preceding Italy-wide baseline. Require improvement over the compact model on rolling folds and at least five of nine episode folds before retaining it. - Expand synthetic domain randomization across source schedules, deposition rates, thresholds, erosion, and sensor corruption. Select settings using training episodes only; reserve complete episodes for final evaluation.
- Require cross-regime consensus and calibrated uncertainty for any future event list. Abstain when ensemble disagreement or domain distance is high, and compare predicted rates with the historical INGV rate.
- Keep synthetic pretraining and self-supervised representation learning separate from supervised evidence. Once real labels contain both classes, use chronological real validation with seismic-only, VLF-only, astronomy-only, full, and shuffled-modality controls.
- Treat
data/derived/models/domain_randomized_transformer_episode_holdout/as a failed but reusable stress-test baseline: mean calibrated balanced accuracy0.5096. Before adding more regimes, test target alignment and regime-relative normalization on these same 12 folds. - Treat
data/derived/models/domain_randomized_transformer_episode_holdout_per_window/as the normalization control: mean0.4909, below global normalization. Do not add model capacity yet; inspect event extraction thresholds, horizon labels, and causal regime-relative targets on the same folds. - Add a train-only target audit for each held-out episode: event count, positive rate, event timing, and source/profile metadata. Require comparable target support before interpreting model scores across regimes.
- Obtain one exact ISEE CDF file URL from the archive, record its station/date/units/use policy, and store the unchanged file under
data/raw/vlf/japan/. Do not mark the source usable until the pull is reproducibly nonempty. - After installing
cdflib, runINPUT=data/raw/vlf/japan/<file>.cdf ./scripts/normalize-japan-vlf-cdf.sh; inspect epoch variables and channel units before building features. - For the first ISEE sample, retain the CDF metadata JSON as the source contract. Confirm whether the archive variable is a scalar trace or a time-frequency array before adding a feature adapter; do not flatten a spectrum without preserving its time and frequency axes.
- The native CDF spectrum adapter is implemented in
extract-japan-vlf-cdf-features.sh. Validate its band definitions against additional Moshiri months, preserveresearch_use_only, and compare features with Cumiana only in explicitly declared scientific experiments. - Use
build-japan-vlf-cdf-window-features.shagainst Japan seismic windows after the Japan USGS history is populated; require nonempty overlap and retain Japan-only research reports before any cross-region representation experiment. - Completed the initial Japan temporal extension through 2025-07-15: 319 normalized events, 26 mature windows, and one overlapping window for each Moshiri sample. Keep this as an ingestion gate only; it is not sufficient model coverage.
- Use
./scripts/process-japan-vlf-manifest.shas the standard Japan preprocessing entry point. Add more manifest rows only after station/date/permission metadata are recorded, then rerun the workflow and audit overlap before model training. - Install and monitor
elfquake-japan-vlf.timeras a separate Japan research-data collector. Confirm the archive's publication delay and adjustLOOKBACK_MONTHSorMAX_FILESonly after checking storage and overlap growth. - Run
./scripts/build-japan-vlf-cdf-dataset.shafter each refresh to produce one combined Japan VLF row per seismic window; use this artifact as the input to the Japan design-matrix join. - The Japan refresh now rebuilds the combined CDF windows and model-input table automatically when
WINDOWSis set. The current table has 78 target windows but 75 missing VLF rows; acquire matching CDF dates before training or cross-region comparison. - Use
data/derived/models/japan_vlf_model_input.m5.csvas the current Japan smoke-training table only. Its comparable M5.0 target has49/29positive/negative windows; eight now contain observed VLF, including three negative and five later/test-era windows. The refreshed 80/20 tabular run scored0.375calibrated balanced accuracy and failed negative recall; do not tune on this sample. - Run
./scripts/probe-japan-target-thresholds.shafter each Japan refresh. Select thresholds using class balance and VLF overlap; do not optimize the threshold against model scores while only three VLF windows are observed. - Run the Japan VLF sequence smoke test with the capture-specific manifests listed in
data/derived/models/japan_moshiri_sequences/manifests.txt; treat it as an interface check only until the number of VLF-observed target windows grows substantially. - Require more than one observed Japan VLF capture in both chronological train and test periods before evaluating the Japan Transformer. The absolute coverage blocker is cleared, but seven windows remain insufficient for a reliable score and most target rows are still masked.
- Use
data/derived/models/mixed_source_transformer_fixture.alignment.jsonand Transformer Fixture as the current cross-source inventory. Implement the common window builder only after preserving domain-specific time scales and missing-modality masks. - Use
./scripts/build-common-transformer-fixture.shto refresh the 5,546-row mixed window fixture. Treat itsready_for_smoke_trainingstatus as a tabular/tensor interface gate only; build continuous per-dataset sequence inputs before patch-Transformer training. - Use
./scripts/materialize-common-transformer-sequences.shfollowed by a two-epochsequence_common_multimodalCPU smoke run. The current run completes across 48 manifests but scores0.489320calibrated balanced accuracy, below the majority baseline; retain it as an interface/masking test only and do not tune against it. - Run
./scripts/audit-common-transformer-alignment.shbefore any mixed-source model comparison. The current audit finds 5,301 Italy seismic/VLF/astronomy rows, 8 Japan seismic/observed-VLF rows, and 167 fully co-observed synthetic sensor rows; acquire more temporally matched Japan VLF before evaluating Japan transfer. - Use
./scripts/compare-japan-synthetic-shapes.shand Japan And Synthetic Shape Comparison as the current signal-shape gate. The first run finds Japan VLF low-band power0.771versus synthetic piezo0.361, and Japan seismic event energy is much sparser and heavier-tailed than the synthetic catalog. Tune rate/clustering and the causal piezo envelope before another transfer sweep. - Run
./scripts/evaluate-piezo-japan-shape-variants.sh. Retain a slow-envelope setting only if it moves the piezo PSD and low-band ratio toward the Japan feature trace across multiple seeds without creating an artificial trend. - Run
./scripts/tune-japan-avalanche-events.shover multiple seeds and time-held-out episodes. Treat the current 25-event candidate as a rate-calibration control only; improve clustering without relying on a global event cap. - Use
data/derived/reports/japan-avalanche-policy-seeds/summary.csvas the current multi-seed gate. The fixed policy is rate-stable enough for a control but fails clustering, so do not promote it as the simulator default. - Add a configurable clustered-loading/relaxation regime to the sandpile simulation, preserving localized source locations and deterministic seeds. The first per-source persistence smoke run was stable but did not improve clustering; do not promote it.
- Retain
SOURCE_REGIME_DECAY=0.2,SOURCE_REGIME_BOOST=0.8, andTARGET_FILL_REGIME_FLOOR=0.25only as a negative control. The 5,000-step probe remained stable but failed event-shape alignment. - Refactor the synthetic event aggregation boundary or add a longer-lived stress-release state. Compare event inter-arrival, burst-run, and PSD metrics without changing source coordinates or injecting independent events.
- Use
data/derived/reports/avalanche-burst-extractor/summary.csvas the current burst-extraction diagnostic. Thedecay99_gap120candidate improves rate, PSD slope, and tails without a global event cap, but remains a single-seed control. - Use
data/derived/reports/avalanche-burst-seeds/summary.csvas the multi-seed diagnostic. Rate and tail behavior are promising, but burst clustering and PSD sign are not stable; do not use it for model fixtures yet. - Add train-only burst-threshold calibration: estimate the baseline-score threshold from training episodes, apply it unchanged to held-out seeds, and report event rate, burst runs, tails, and PSD without per-test-episode retuning.
- Use
data/derived/reports/avalanche-burst-train-test/summary.csvas the leakage-safe gate. The fixed threshold fails held-out rate transfer (0.101–0.170versus0.084), so the extractor is not ready for fixtures. - Retain the relative-baseline normalization as a negative control. It does not improve held-out rate transfer, so do not use it for fixtures.
- Use the bounded source stress reservoir as the next simulator candidate. The 500-step probe is stable and produces localized releases, but it has not yet passed event-shape evaluation.
- Retain the tested stress-reservoir parameters as a stable negative control. They produce releases without safety failure but only one extracted event over 5,000 steps.
- Do not increase stress release mass blindly. The per-source cooldown control (
SOURCE_STRESS_RELEASE_COOLDOWN_STEPS=120) is stable but still yields one extracted direct event over 5,000 steps. Redesign the stress-release coupling or event representation so localized releases create distinct, short-lived global activity episodes, then repeat the causal burst and safety gates. - Use the optional
*.source_stress.csvoutput to compare source-local stress-release pulses with nearby avalanche activity using causal, per-regime normalization. The output is implemented and preserves source coordinates; evaluate it against the existing direct signal rather than replacing it silently. - Build the release-aware diagnostic and report lead/lag, local activity, and event-shape metrics. Promote only if it improves held-out multi-seed alignment without safety failures or independent event injection.
- Run
scripts/analyze-source-stress-alignment.shover tagged episodes. The first 1,000-step cooldown result has 938 release rows, only5.9%with positive local excess activity, local/global excess-AUC ratio0.037, and median local peak lag96steps. This does not support a source-local precursor effect yet. - Repeat the release-aware diagnostic over multiple seeds and radii. Completed on seeds
40–43: positive local excess was2.2%at radius 16,6.8%at radius 32, and23.5%at radius 64; local/global excess-AUC ratios were0.010,0.043, and0.188, with median lags near 90–102 steps. This is weak and spatially broad, so the stress reservoir remains a negative control. - Improve the spatial avalanche activity representation before further simulator tuning. Compact
*.avalanche_regions.csvoutput is now available as a configurable regional grid, preserving locality without per-cell output. Use it to rerun the source-stress diagnostic and compare against the existing global signal. - Add a region-aware source-stress diagnostic using the regional table. Report activity in the release region versus matched non-release regions, with time-held-out seeds.
- Track the Japan VLF archive until 28 July data are available. The first pre-event check covers 13 daily Moshiri CDFs from 15–27 July; July 26 is the highest robust-deviation day, but earlier elevated days prevent a precursor claim. Re-run with hourly event-day/post-event coverage and matched controls.
- Keep the Italy transfer-trial artifact at
data/derived/models/real_transfer_trial/report.jsonas the current chronological baseline. Compare future multimodal runs against its confusion matrix and historical-rate control, with missing-modality masks reported explicitly. - Compare the two Italy baselines using identical time ranges and target contracts before interpreting any apparent improvement. The mismatch is documented in Italy Baseline Comparison; do not attribute the transfer-trial difference to VLF or astronomy until the spatial feature and label definitions are matched.
- Build a real-VLF holdout with observed variation before making a modality claim. A new Cumiana image was captured at
2026-07-29T08:45Zand integrated; the descriptive association table now has four VLF-observed weeks, but the new target is pending. The separate M2.5 central-Italy table has 229/50 positive/negative rows, but its chronological test has only one negative and its0.990909score is majority-class driven. Keep it as a data-shape artifact, not model evidence. - Extend Cumiana capture coverage until at least three positive and three negative VLF-observed target weeks exist in the same threshold and horizon contract. Then run matched seismic-only, VLF-image-only, and full multimodal time-held-out baselines with training-only threshold calibration.
- Completed the self-supervised VLF refresh: 280 rows, 257 causal windows, and 41 exploratory alerts at score
>=0.8. Re-label the new2026-07-29T08:51Zwindow after its horizon matures, keeping the anomaly threshold and model checkpoint fixed for the audit. - Added the dated current-window audit
data/derived/reports/italy_data_coverage_20260729.json: 280 INGV events, 284 VLF metadata records, 257 anomaly windows, and 4 VLF/seismic overlap weeks. Use this alongside the longer historical coverage report to avoid mixing time ranges. - Added capture continuity monitoring with
./scripts/report-vlf-capture-gaps.sh. The current report finds 280 captures and 8 gaps over one hour, including a 308-hour gap before the July 29 capture; use it to verify the systemd collector is producing sustained VLF coverage before interpreting future anomaly/earthquake overlap. - Leave the collector running and rerun
./scripts/report-vlf-capture-gaps.shafter several 30-minute intervals. Confirm that new captures are being added and that no multi-hour gaps recur before using future VLF anomaly windows in analysis. - The collector has since added a
2026-07-29T11:15ZCumiana capture. Current prospective summaries have 280 rows and one pending target each; continue monitoring the 30-minute cadence and rerun the gap report before the next matured-label refresh. - Ran the refreshed real-VLF versus synthetic-piezo embedding probe. The closest 25% synthetic windows improved centroid distance
3.045->2.531and nearest distance2.186->1.404, but synthetic reconstruction MSE remained11.604versus real0.562. Treat inlier filtering as diagnostic only; next improve simulator signal-shape statistics before model training. - Ran the 20,000-step piezo shape sweep.
gain_burstis the leading single-run candidate (1.512centroid,1.028nearest distance), withfast_burstclose behind; validate both across multiple seeds and compare against the current profile before changing defaults. - Completed the multi-seed variant check with
./scripts/evaluate-piezo-vlf-variant-seeds.sh.gain_burstled narrowly on the fixed alignment seed; the independent model-seed rerun gives means of1.7488centroid /1.0537nearest forgain_burst,1.7558/1.0636forfast_burst, and1.7490/1.2575for current. The preference is weak because per-run ranges are wide; do not promote a transform yet. - Repeat the cross-region smoke run with at least three seeds. Measure coordinate error, in-Italy rate, spatial dispersion, and duplicate-location rate; compare event count against the historical spatial-rate baseline before treating the output as more than an interface artifact.
- Use
./scripts/trial-weekly-event-forecast.shas the current end-to-end event-list contract smoke test, not as a validated predictor. - Use
./scripts/balance-italy-synthetic-episode-rates.shonly as an auditable training/observation-model diagnostic. It can thin overactive episodes, but it must not synthesize events for underactive episodes; the matched rerun is preferred. -
Four pipeline defects were fixed and covered by regression tests (
tests/test_common_window_fixture.py,tests/test_cross_region_smoke_map.py,tests/test_japan_model_input.py): the common-window fixture split now counts only labeled rows, so a growing pending-future tail can no longer empty the test partition; the cross-region smoke map now renders the most recently matured held-out week instead of the oldest; Japandataset_idis hashed when a window is covered by many hourly CDFs, keeping sequence directory names within path limits while the full source list stays in its own column; and the burst extractor treats a zero quantile as "no quantile filtering" instead of silently dropping the weakest step. The regenerateddocs/images/cross-region-generative-smoke.pngnow shows 4 generated coordinates against 0 actual events in the newest matured week, replacing the previous oldest-week view; the map remains an engineering visualization, not a forecast. -
Two stale-input defects were found and fixed on 2026-08-09, both of which had been silently inflating apparent reproducibility:
refresh-prospective-labels.shrewrote only theCOMBINE_START_DATE-scoped combined catalogs and never touchedevents_italy_all_available.combined.normalized.csv, which is what the transfer trial, coverage report, VLF/event association, weekly forecast, catalog calibration, and cross-region smoke all read. That catalog was frozen at 2026-07-07 for a month. The refresh now rebuilds bothall_availablecatalogs; verified purely additive against a fullbackfill-ingv-history.shrun (5,007 -> 5,013 rows, 0 removed).prepare-italy-spatial-model-inputs.shrebuilt its two upstream inputs only when missing, so a "refresh" reused Aug-4 spatial targets and reported an unchanged 478 anchors / 5,301 labeled rows. It now rebuilds by default (REBUILD_INPUTS=0restores the old behaviour). After the fix the table is 11,020 rows / 7,258 labeled across 580 anchors.- Treat any score that reproduces to six decimal places across a refresh as a staleness signal, not a stability result. Audit the remaining scripts in the
all_availablelist for the same pattern.
-
Checked the Cumiana VLF record for precursors to the 2026-08-04 M4.3 near Pisa (event
46769822,2026-08-04T08:15:18Z, 43.6925N 10.3263E, depth 8.2 km, 275 km from the Cumiana receiver). No supportable precursor. Details in Pisa M4.3 VLF Check. Two blocking facts: the collector has no captures at all between 2026-07-16 and 2026-07-29, so the first 8 of the 14 pre-event days have zero data; and the two highest-scoring days in the whole record (2026-07-29 max0.9877, 2026-07-30 max0.9765) are a capture-gap artifact, not a signal. Withlookback-steps=24, every window straddling the 13-day gap mixes pre- and post-gap frames: those 21 windows average0.9113and the next 24 clean windows drop as a step function to0.4074. The clean pre-event stretch averages0.4127, below the pre-gap baseline0.5429, while the post-event period is the highest in the record at0.7214. The gap-aware guard this called for is now implemented; see item 91. -
Implemented the gap-aware guard in
score-sequence-anomalies(item 90 follow-up). Each window now carriesmax_step_secondsandspans_capture_gap; a window is flagged when any internal inter-frame interval exceeds--max-capture-gap-seconds, defaulting tolookback_steps x median_step(12 h for the current 24-step / 30-minute Cumiana record). Flagged windows can never raise an alert, and a flagged latest window sets the forecast status toinvalid_capture_gap. Regression cover is intests/test_sequence_anomaly_capture_gap.py, which pins the contiguous-block and step-recovery behaviour and confirms ordinary capture jitter is tolerated. The rescored record shows 66 of 558 windows span gaps, and 43 of the 101 raw>=0.8alerts were gap artifacts — 43% of the historical alert record. Gap-spanning windows average0.7908versus0.5143for clean windows. After filtering, 2026-07-29 and 2026-07-30 leave the top clean days entirely. Any earlier count of "exploratory alerts" from this scorer, including the 41 recorded in item 77, is inflated and should be recomputed before use. -
Resolved 2026-08-10; see item 93 and Capture-Era Shift. One confound plausibly explains three separate negative results from 2026-08-09 at once — the chronological spatial baseline scoring below chance (
0.4154, item 6), all five shuffled controls beating real time order (item 8), and the self-supervised scorer treating the collector restart as the record's top anomaly (item 91). The Cumiana record splits into a sparse early era (2026-06-30 to 2026-07-16, with multi-day gaps and single-capture days) and a dense era from 2026-07-29 onward at a roughly 30-minute cadence. Chronological splits put the eras on opposite sides of the boundary; shuffling mixes them, which is why shuffling helps.Steps:
- Compare VLF image-feature distributions between the two eras directly: per-feature mean, spread, and a two-sample distance for each of the 14
vlf_image_*and 7vlf_metadata_*features. Report which features move most. - Check whether the shift is physical or instrumental.
vlf_capture_count,vlf_latest_age_seconds, andvlf_total_bytesare aggregation artifacts of cadence, not signal, and will shift mechanically with capture density. Separate those from the intensity/band/streak features before drawing conclusions. - Re-run the grouped temporal baseline restricted to the dense era only. If the sub-chance score is a cross-era artifact it should move toward the majority baseline; if it persists within one era, the problem is the features or targets, not the split.
- Re-run the permutation controls within the dense era only. A clean null requires controls that cannot leak era membership.
- Do not "fix" this by dropping cadence-derived features or reweighting until the diagnostic says which mechanism is operating. Record the outcome here either way, including a negative one.
Until this resolves, treat every Italy score in items 1, 6, 7, and 8 as uninterpretable rather than as evidence against multimodal value. They are currently confounded, not refuted.
- Compare VLF image-feature distributions between the two eras directly: per-feature mean, spread, and a two-sample distance for each of the 14
-
Completed the capture-era diagnostic (item 92). The confound is real, it explains the sub-chance score, and removing it does not rescue the model. Full write-up in Capture-Era Shift; reproduce with
./scripts/diagnose-vlf-capture-era-shift.sh, then./scripts/evaluate-italy-spatial-baseline.shand./scripts/evaluate-italy-spatial-coordinate-control.shagainst the per-era CSVs it writes.- Item 92's premise was wrong on one point. The record is not a sparse era followed by a dense one. It is two dense eras at the same 30-minute cadence —
era_02026-06-28 to 2026-07-05 (277 anchors, 5,263 labeled) andera_32026-07-28 to 2026-08-07 (301 anchors, 1,957 labeled) — separated by a collector outage with gaps of 104 h, 127 h, and 308 h and two isolated captures. The largest within-era gap is 15 h, an overnight stop. - The chronological split boundary is the outage boundary. Training runs to 2026-07-29T08:53Z and testing from 2026-07-29T09:23Z, so training is almost all
era_0and the test partition is entirely insideera_3. That is why shuffling helped: it removed a shift the real split imposes. - The shift lives in image content, not cadence. Median absolute standardized mean difference by family: VLF signal
0.842(max1.325), VLF cadence-derived0.321(max0.474), seismic0.508, astronomy0.261, quality0.000. All nine largest shifts are content features — bands 0-3, intensity, high-intensity ratio, and hot-colour ratio all fall, vertical streaks rise, bands 4-5 do not move (d+0.03), image size is unchanged. That pattern suggests a gain or colour-scale change across the outage, but derived features cannot establish it; compare raw spectrograms next. - Targets shift too, and this is genuine, not an artifact: positive rate
0.1543->0.2427,seismic_max_magnitude2.65->3.29,seismic_event_count4.94->6.85. Separately,astro_capture_countgoes0.823->0.000, so astronomy is absent fromera_3entirely and every chronological astronomy ablation tests on a constant-zero feature. - Restricted to one era, the sub-chance score disappears:
0.655320inera_0and0.575000inera_3, against0.412604on the full table. The0.4154in item 6 was a cross-era artifact.era_0's0.655320is the same figure as the original grouped-time smoke baseline, because that 5,301-row table was essentiallyera_0alone. - The within-era permutation null is clean, and the answer is unchanged. Five controls per era at
EPOCHS=600to match the real run — the earlier item 8 comparison ran controls at the script default of 100 epochs against a 600-epoch real run, which was not like-for-like.era_0controls mean0.650519(range0.603404--0.667172),era_3mean0.592576(range0.572778--0.630354); three of five beat real order in each era. - The decisive control: dropping the cell coordinate columns collapses both eras to exactly
0.500000.target_cell_latitudeandtarget_cell_longitudecarry the largest weights in every fitted model. The fixed-cell spatial model is a static per-cell base-rate lookup with no temporal component, which is consistent withseismic_onlyandvlf_onlyalready collapsing to0.5. - Do not reweight eras or drop cadence features on the strength of this. The blocking finding is the absence of temporal signal in either era, which no reweighting addresses.
- Item 92's premise was wrong on one point. The record is not a sparse era followed by a dense one. It is two dense eras at the same 30-minute cadence —
-
Fixed a latent standardization defect found while reading item 93's fitted coefficients. All five copies of
scales.append(scale if scale else 1.0)treated a near-constant column as varying: 4,199 copies of125.69accumulate a mean of125.68999999999998, giving variance2.02e-28and scale1.42e-14, which is nonzero and therefore used. The constant column then standardized to1.0instead of0.0andastro_noaa_solar_cycle_f107_valuecarried the largest weight (-0.894) in theera_0model. Here it was benign — same constant in train and test, so it acted as a second intercept, and the full-table score moved only0.415351->0.412604— but a held-out partition carrying a different constant (next month's F10.7, a quality flag that flips after a collector change) would standardize to order1e13and saturate every prediction. Now guarded by a relative tolerance insrc/elfquake/models/scaling.py, applied acrosstemporal_holdout,ablation_smoke,logistic_smoke,torch_tabular, andtorch_sequence, with regression cover intests/test_capture_era_shift.py. -
Next up, in order — superseded by item 100, which takes priority. (a) Completed 2026-08-14; see item 96. (b) Re-examine whether the fixed-cell target design can express anything beyond per-cell base rate, given that removing coordinates zeroes the model — either the temporal features carry no information at this horizon, or the target contract needs per-cell rate residuals rather than raw occurrence. (c) Keep extending
era_3coverage; its labeled window is four days and 399 test rows, too small to carry a within-era conclusion on its own. (d) Audit the remaining scripts for the item-89 staleness pattern, still outstanding. -
Completed item 95(a). The Cumiana receiver's colour scale was changed during the outage, so
era_0andera_3image features are not on a common scale and must not be pooled. Full write-up in Cumiana Colour-Scale Change; reproduce with./scripts/diagnose-vlf-palette-shift.sh. Everylast_E_VLFcapture embeds its own 96-step colourbar above a fixed-100 dB … 0 dBtick ruler. Across all 699 captures the ramp takes exactly two values with no intermediates: solid-red onset at step59for all 277 captures up to2026-07-06T21:45Z, and step48for all 422 captures from2026-07-11T06:00Zonward — a shift of 11 steps =11.58 dB, downward. The ruler, the right-hand frequency tick rows, and the842x573geometry are pixel-identical across both, so this is a colour-scale setting and not a re-plot. Three consequences. First, the pooling question is settled on its own terms:vlf_intensity_*,vlf_hot_color_ratio,vlf_high_intensity_ratio, andvlf_band_*_meanare all functions of pixel colour, and the same colour denotes a level11.58 dBlower after the change. Second, the change point sits inside the outage (2026-07-06→2026-07-11), so it is invisible to any diagnostic that compares only denseera_0against denseera_3. Third, the item-93 "bands 0-3 fell, bands 4-5 unchanged" split is not frequency-selective physics: bands 4-5 read the separate sub-1500 Hz zoom panel and sit deep in the palette's saturated region in both eras. Decoding pixels back to absolute dB through each image's own colourbar — hour-matched to11:00–13:00UTC against the diurnal cycle, over the rightmost 45 columns of the upper panel — leaves the late era15.8–23.2 dBlower across the four bands resolvable under both palettes (-80.0 … -49.5 dB, the overlap of the two displayed windows; the other four are censored by saturation and reported as such). Not settled: whether that underlying level change is instrumental or atmospheric. The evidence leans instrumental — broadband, roughly uniform over two decades of frequency, step-like, and coincident with an operator changing a display setting — but images alone cannot separate a front-end gain reduction from a quieter period, and this needs station metadata or operator contact. Regression cover is intests/test_vlf_palette_shift.py. -
Next, from item 96. (a) Add palette-inverted absolute-dB features to
src/elfquake/features/vlf_image.py. Each image carries the colourbar it was drawn with, so dB features are era-invariant by construction and would remove the need to keep the eras apart — but they must record the censored fraction per capture, because the two palettes resolve different dB windows and a band below the shared floor is missing, not quiet. (b) Until then, do not poolera_0andera_3raw pixel features, and do not read any cross-era comparison built from them as physical. (c) Re-run./scripts/diagnose-vlf-palette-shift.shafter each capture refresh; a third palette variant would invalidate pooling again. (d) Ask the Cumiana operator whether receiver gain changed in the2026-07-06–2026-07-11window; that is the only route to settling the instrumental-versus-atmospheric question. -
Raw capture coverage now runs to
2026-08-14, well past the four-dayera_3labeled window recorded in item 93. Dense days run2026-07-29to2026-08-12at the nominal 30-minute cadence (with2026-08-06and2026-08-13missing), against2026-06-29–2026-07-06forera_0. Rebuild the spatial model inputs so item 95(c) is evaluated against the coverage that exists rather than the coverage recorded a week ago — but note this is raw-capture coverage, and labeled rows still lag it by the seven-day target horizon. -
Status of astronomical data in transformer training, audited 2026-08-14: it is not incorporated in any meaningful sense, and the missing-modality mask that is supposed to say so is broken. Evidence, from
data/derived/models/common_transformer_fixture_sequences/italy_all_astronomy_sequence/anddata/derived/multimodal/all_italy.spatial_vlf_image_windows.labeled.csv:- Acquisition is not running.
data/raw/astronomy/captures/holds 11 files across two days,2026-06-29and2026-07-06, against 699 Cumiana captures across 24 days. Nothing has been pulled in five weeks. - Nothing writes to the astronomy root.
deploy/systemd/elfquake-prospective.servicepassesELFQUAKE_ASTRONOMY_METADATA_ROOTinto bothupdate-prospective-vlf-tablecalls on every 30-minute run, but noExecStartline fetches astronomy. The timer has re-read a frozen directory for five weeks. This is the item-89 staleness class in the service unit rather than in a script, and it should be counted against item 95(d). - Exactly two channels reach the transformer, per the fixture manifest
channel_fields:astro_capture_countandastro_noaa_solar_cycle_f107_value. Neither is usable. astro_noaa_solar_cycle_f107_valueis constant at125.69across all 11,020 table rows and all 9,082 sequence rows — zero variance, no information. It is the monthly solar-cycle series andastro_noaa_solar_cycle_f107_monthis stuck at2026-05while the table runs into August, so it is also stale. This is the exact column that produced the item-94 standardization defect.astro_capture_countis collector bookkeeping, not a measurement: 10,051 of 11,020 rows are0, and the nonzero values (1x19,2x589,7x57,9x304) fall on 3 of the 17 fixture days — the days someone ran the fetch by hand. Feeding it to a model feeds it an indicator for collector activity, the same artifact class as the capture-gap and capture-era defects.- The missing-modality mask never fires.
quality_missing_astrois0for all 11,020 rows and the sequence masks arepresent=1for all 9,082 rows, including the 10,051 rows with no astronomy capture at all. Cause:src/elfquake/features/astronomy.py:60sets the flag present ifcaptures or moon_phase or f107_value, andf107_valueis always non-empty because it comes from a once-pulled historical monthly series.src/elfquake/models/real_transfer_trial.py:133documents astronomy as "represented by an explicit missing-modality mask"; the mask exists but is unconditionally true, so the model is told astronomy is observed everywhere when it is observed almost nowhere. - The connectors already exist and are unused.
fetch-gfz-kp-ap,fetch-kyoto-dst,fetch-ncei-goes-xrs,fetch-f107-dailyand their four normalizers are wired into the CLI, andsrc/elfquake/normalize/space_weather.pydefines the output schemas. There is nodata/derived/astronomy/directory: they have never been run into the derived layer. - Some history is already unrecoverable from the live endpoints.
data/raw/astronomy/manifest.csvmarksnoaa_swpc_kp_3h,noaa_swpc_dst_1h,noaa_goes_xray_7d, andnoaa_swpc_f107_30d"confirmed not archival" — rolling windows. The June–August geomagnetic history must come from the archival mirrors (GFZ Kp/ap since 1932, Kyoto Dst, Spaceweather Canada daily F10.7, NCEI GOES XRS), not from these.
Consequence for the modeling record: no astronomy ablation to date is a negative result.
seismic_astronomyandfull_multimodalcannot separate an astronomy contribution from a constant plus a collector counter, so astronomy's value is untested, not disproven. Do not describe it as tested. - Acquisition is not running.
-
Priority queue for astronomy, ahead of items 95(b)–(d) and 97.
(a) Fix the mask contract in
src/elfquake/features/astronomy.py.quality_missing_astromust reflect whether the window was actually observed, not whether a once-pulled monthly constant is on disk. A slowly varying historical series is background context, not an observation of that window. Add regression cover pinning that a window with no captures marks the modality missing.(b) Drop both current astronomy channels from the fixture.
astro_noaa_solar_cycle_f107_valueis zero-variance and stale;astro_capture_countis collector bookkeeping and must never be a model input. Keep them in the table as provenance if useful, but exclude them fromtensor_specchannel selection.(c) Add a channel gate to the sequence/fixture builder that fails loudly on a channel that is constant across the whole axis or whose mask is
present=1everywhere while its values are imputed. This generalises the item-94 fix from the standardizer to the builder, where it would have caught this five weeks earlier.(d) Backfill real geomagnetic history for the Cumiana window (
2026-06-28onward) with the existing connectors: GFZ Kp/ap (3-hourly, CC BY 4.0), Kyoto Dst (hourly, non-commercial), Spaceweather Canada daily F10.7 (daily, from 2004-10-28). Normalize to UTC, preserve source identifiers, URIs, and provenance per the data rules, and write todata/derived/astronomy/.(e) Define the alignment from those cadences (3-hourly, hourly, daily) onto the 30-minute VLF anchors before building features. State the interpolation or hold rule explicitly and carry a per-anchor staleness field; do not let a daily value silently present as a 30-minute observation. This is the multimodal time-window alignment concern in the project priorities, and astronomy is the modality where the cadence mismatch is largest.
(f) Replace
astro_usno_next_phasewith a continuous quantity. A next-event category is a sawtooth countdown, not a physical state; a lunar phase angle or tidal potential at the anchor time is both continuous and cheap to compute.(g) Only after (d)–(f) land, re-run the
seismic_astronomyandfull_multimodalablations. Until then those runs measure a constant.(h) Add an astronomy fetch to
elfquake-prospective.service, or a separate timer, so the collector stops reading a directory nothing writes to.
Modeling
- Run
./scripts/run-transfer-experiments.shafter each real-data refresh. It compares historical rate, real-only random initialization, synthetic transfer, rolling-origin folds, and a train-only grid selection before one final holdout evaluation. The default synthetic corpus now includes four long episodes; add more 20,000-step episodes before treating transfer changes as stable. - Generate more independent warmed episodes and rerun leave-one-episode-out evaluation; nine episodes are not enough to estimate regime robustness tightly.
- Combine at least five scope-matched long episodes, apply calibration using training dates only, and report rate, magnitude, inter-event, sample-matched clustering, and occupancy metrics together.
- Keep the five-episode candidate as a diagnostic benchmark, not a training default, until its corrected rate and spatial metrics survive held-out episode and cell checks.
- Add regime-conditioned reporting or a mixture-of-regimes simulation before another global calibration pass; the current episode rate spread is too large to treat one global thinning factor as a physical correction.
- Investigate the remaining matched rate and clustering differences using the
4600--4800source/loading trajectories; change simulation dynamics only if a stable cause is found. - Do not add the default piezo potential channel to model training yet. Its spatial average failed a nine-episode causal lead-time check; event-nearest diagnostics are positive but use future event locations and are not valid inputs.
- Calibrate weekly event counts against historical INGV
>M2rates before trusting any neural score scale. - Compare every weekly forecast run with
./scripts/compare-weekly-forecasts.shand track Stage 1/Stage 2 pass/fail status. - Keep direct avalanche-derived seismic features separate from piezo/VLF-like features; use ablations to test their contribution independently.
Data
- Keep accumulating Cumiana VLF image captures and refreshing image features.
- Refresh prospective INGV labels as target windows mature; train supervised real models only after one table has both positive and negative labels.
- Validate Abelian Cumiana live/archive audio only if a reproducible nonempty pull is found; current probes returned zero usable bytes.
- Extend historical INGV backfill earlier than 2024 only if weekly baseline calibration needs longer seasonal coverage.
- Repeat mixed real/synthetic VLF alignment after new Cumiana captures; require improvements over centroid and random controls before relying on inlier selection.
- Keep event-count, energy, and spatial-occupancy targets alongside binary occurrence; do not make one thresholded event label carry all timing, magnitude, and location information.
- Fit magnitude calibration on the real training period only, then compare calibrated and uncalibrated synthetic catalogs before adding temporal-rate or spatial-density transforms.
- Treat rate thinning as an observation model, not a simulation fix; retain the raw event catalog and test whether spatial reweighting improves cell occupancy without moving localized source events.
- Add a joint alignment score with minimum sample gates: rate ratio, magnitude distance, inter-event distance, nearest-neighbour distance, and spatial occupancy must be reported together.
- Preserve the combined-episode time offsets and calibration metadata in every synthetic training artifact; do not collapse episodes back onto their shared demonstration clock.
- Use sample-size-matched nearest-neighbour statistics for catalog clustering. Do not compare a 32-event synthetic catalog directly against all 594 real events.
Simulation
- Run
./scripts/run-longer-synthetic-transformer-batch.shwhen CPU time is available, validate drift, then rerun./scripts/evaluate-piezo-group-holdout.shagainst the larger episode set. - Keep
damage_totalas a validated synthetic precursor diagnostic, not a default Transformer feature. A matched nine-fold screen regressed from0.599648without damage channels to0.586848with them. - Keep the duration-aligned
SOURCE_COUNT=64, refill470, removal interval20, andq=0.998/window=120profile as a valid synthetic target baseline (47.0%positives, temporal drift0.182). It has no confirmed piezo lead and is not a precursor-training profile. - The first two-stage mature-weakness profile failed its nine-episode causal confirmation despite stable target drift. Do not tune its scalar parameters immediately or train a model. Document a stronger physical mechanism proposal, such as a spatially propagating rupture/nucleation state, before another synthetic dynamics run.
- Compare future episode-batch h6 drift against the current scaled
WARMUP_STEPS=3000delta0.187025. - Revisit structured initial fill only with delayed bottom-layer removal; the first fill probe drifted at
0.307937. - Tune the piezo/VLF mapping only from
*.piezo.csvand compare against Cumiana VLF shape reports.
Maintenance
- Keep docs concise: one current source doc, one simulation doc, one modeling doc, one operations/steps doc, and one report.
- Split
tests/test_acquisition_scaffold.pyby subsystem if test maintenance starts slowing changes. - Add chunked sandpile snapshot storage only if larger pretraining runs outgrow current
.npysanity snapshots. - Keep optional dependencies CPU-compatible on this system; do not add GPU-only paths.
Japan parallel data path
- Run
./scripts/backfill-japan-history.shand verify nonempty USGS raw and normalized outputs. - Identify one reproducible current passive broadband ELF/VLF Japan sample and add it to
data/raw/vlf/japan/manifest.csv; prioritize ISEE Moshiri or Kagoshima over WALDO. - Compare Japan and Italy source coverage before any cross-region model training.
- Use the confirmed ISEE permission to obtain one recent Moshiri or Kagoshima digital sample, then build the Japan VLF adapter for its native CDF format.
- Keep WALDO out of the main acquisition schedule; revisit it only for a defined historical case study or optional self-supervised pretraining corpus.
Italy data refresh (2026-07-16)
- Refreshed Italy data through 2026-07-16: 67 new INGV events were pulled, one new Cumiana
last_E_VLFimage was captured, and the prospective tables now contain 279 rows with 277 mature rows. Both all-Italy (277/0) and central-Italy (0/277) remain class-blocked. - Rebuilt the real VLF sequence and model inputs: 279 image rows and 256 anomaly windows now extend through 2026-07-16. The label-free smoke forecast remains a novelty artifact, not a seismic prediction.
- Audited the mirrored all-Italy/central-Italy label counts. Equal row counts are correct because both scopes use the same VLF anchors; the one-class labels are target saturation, not a region-filter bug. All-Italy is
277/0at M3+ and central Italy is0/277; at M2.5+ central Italy is228/49but all-Italy remains277/0. - Added
./scripts/report-italy-data-coverage.sh. The latest report contains 4,836 INGV events, 283 Cumiana capture metadata records, 256 VLF anomaly windows, and only two weeks with both VLF and seismic observations. This is descriptive coverage evidence, not an association result. - Added
./scripts/analyze-italy-vlf-event-association.sh. The first refreshed permutation-controlled association remainsinsufficient_controls: three VLF-observed weeks provide only one M2.5+ event week and two controls.
Italy coverage diagnostics
- Run
./scripts/report-italy-data-coverage.shafter each refresh. It reports INGV event coverage, Cumiana capture coverage, label-free anomaly coverage, and descriptive weekly overlap. - Treat anomaly/event overlap as exploratory only until enough mature windows contain both positive and negative targets.
- Replace binary all-Italy targets with fixed spatial-cell targets or count regression; use central-Italy M2.5+ only as a temporary exploratory control.
The fixed-cell implementation is available in data/derived/multimodal/all_italy.spatial_vlf_image_windows.labeled.csv and is prepared by ./scripts/prepare-italy-spatial-model-inputs.sh. The current smoke artifact has 5,301 rows across 19 cells, with 812 positive, 4,451 negative, and 38 pending labels. This fixes target saturation but does not fix the short time coverage or establish predictive skill.
The first grouped-time logistic smoke baseline reached calibrated balanced accuracy 0.655320 for the all-feature ablation. The seismic-only and VLF-only ablations collapsed to balanced accuracy 0.5 under their calibrated thresholds. These figures are a single short-window diagnostic and are not evidence that either modality predicts earthquakes.
The first 19-cell leave-one-cell-out probe is stored under data/derived/models/all_italy_spatial_cell_holdouts_v2. Only 5 cells have positive test labels; the other 14 folds are one-class. The valid folds range from 0.146597 to 0.855263 calibrated balanced accuracy, with mean 0.333370 across all folds. This instability and class sparsity block meaningful spatial transfer evaluation.
The timestamp-permutation null control is stored under data/derived/models/all_italy_spatial_permutation_controls. It preserves each timestamp's complete spatial label pattern but shuffles those patterns across time. Five controls scored 0.643309--0.709108, mean 0.679362; all five matched or exceeded the real-order 0.655320. The current multimodal score therefore has no demonstrated temporal signal.
Japan event-window follow-up
- Checked the official ISEE/ERGSC archive on 2026-07-31. It lists 24 hourly Moshiri CDF files for 2026-07-28 and further files for 2026-07-29.
- Decoded and scored 2026-07-28 00:00--06:00 UTC. The extended floor-aware robust anomaly score ranged from
2.891to5.538; 2026-07-27 18:00 scored8.772, so the available event-day elevation is not event-specific evidence. - The next acquisition retry should process the remaining 2026-07-28 07:00--23:00 and 2026-07-29 files from
data/raw/vlf/japan/manifest.csv. The previous transfer degraded to roughly 15 KB/s and was stopped; interrupted partial files are cleaned by the downloader. -
After acquisition, rebuild the Japan windows and rerun the anomaly report with a longer pre-event baseline, matched local-time controls, and separate pre-/post-event summaries. Japan data remains restricted to scientific research use.
-
Re-ran the regular CPU controls on 2026-07-31: the real transfer trial remains
0.693435balanced accuracy, the 27-run piezo holdout remains unstable at mean0.578712(0.275641--0.758730), and the grouped Italy spatial baseline completed on 5,301 rows with 1,064 held out. These remain control results, not evidence of multimodal predictive value. - Re-ran
./scripts/evaluate-italy-synthetic-episode-alignment.shacross the five configured profiles. Seeds40--42produce14.324--14.990times the real event rate, while seeds4300and4500produce0.555and0.278; sample-matched spatial distance ranges from9.316to225.626km. This confirms configuration drift, so these profiles remain diagnostics rather than a training corpus. - Re-ran
./scripts/evaluate-avalanche-burst-seeds.shacross seven seeds. The causal burst extractor produces16--30events per episode with broadly stable nonzero rates, but burst-run counts, lag-1 autocorrelation, and PSD slopes remain unlike the real reference. Keepdata/derived/reports/avalanche-burst-seeds/summary.csvas a diagnostic and do not promote the extractor to the training default. - Ran
./scripts/evaluate-avalanche-burst-train-test.shwith a threshold learned only from seeds40--4300. The fixed threshold0.221864346produced25--50training events and48--58held-out events; held-out nonzero rates0.145--0.176exceed the real0.082, and autocorrelation/PSD remain mismatched. Threshold calibration alone does not resolve regime drift; retaindata/derived/reports/avalanche-burst-train-test/summary.csvas a negative control. - Re-ran the source-stress alignment on the 1,000-step stress episode: 938 release rows,
5.9%with positive local excess activity, local/global excess-AUC ratio0.037, and median local peak lag96steps. The result does not support a localized causal precursor signal; retaindata/derived/reports/mountain_256x256_seed40_1000.stressdiag.source_stress_alignment.csvas a negative control. - Re-ran
./scripts/evaluate-piezo-japan-shape-variants.shwith the available Japan CDF features. The slow-envelope variants leave synthetic PSD slope near0.50versus Japan-0.23, and low-band ratio near0.17versus Japan0.76;slow_strongraises kurtosis but does not improve spectral alignment. Retaindata/derived/reports/piezo-japan-shape-variants/summary.csvas a negative shape-control result. - Ran
./scripts/tune-japan-avalanche-events.shon the current 20,000-step profile. The nominal best isq=0.975, window120, capped at 25 events, with shape score0.291279and normalized distance2.083974; it still has 7 burst runs versus 595 in the real reference. Because the apparent improvement depends on a global event cap, retaindata/derived/reports/japan-avalanche-event-tuning-reduced.csvas a calibration diagnostic only. - Completed the Japan archive retry: all 24 hourly Moshiri files for 2026-07-28 and all 24 for 2026-07-29 are now decoded, with one 2026-07-30 file also available. The expanded anomaly report shows 28 July scores of
1.529--5.418, with the maximum after the main event; 27 July reached6.305before it. This does not support an event-specific precursor claim. Keep Japan data restricted to scientific research use. - Fixed the self-supervised Transformer evaluator so its default synthetic-only run skips the unavailable
synthetic_then_japan_then_italyregime and records it as skipped; explicit requests still require both Japan and Italy manifests. The full CPU run completed with full-input balanced accuracy0.413--0.443and piezo-only0.500, so no representation-transfer utility is demonstrated. The targeted Transformer test passes. - Rebuilt the Japan M5 CDF window dataset after the archive refresh. It now scans 129 feature files and produces 78 seismic windows, but only 8 windows contain VLF rows and the catalog currently ends on 2026-07-01; the new 28--29 July event-day files therefore do not yet enter the model table. Extend Japan seismic windows through the event before retraining or evaluating transfer.
- Extended the combined Japan seismic catalog through 2026-08-01: 1,353 normalized events and 133 complete weekly M5 windows. The rebuilt model input has 9 VLF-observed windows and 124 missing. The 2026-07-27 event week is not yet a complete seven-day target window because its end falls on 2026-08-03; keep it pending until the target horizon matures rather than treating the absence as a join bug.