Skip to content

Releases: zachtheyek/Aetherscan

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 27 Aug 12:26
Immutable release. Only release title and notes can be modified.
v1.2.0
4e7e32e

Aetherscan v1.2.0 is a retrain release: it blesses the new train_20260806_063117 weights — trained with a curriculum 5× longer than the prior production run's (50 rounds vs 10) that extends into the SNR 1–10 faint decade the previous model never saw. Qualification evidence: zero false positives at the production threshold (t = 0.99) on 9,984 held-out negatives, ROC-AUC 0.9993 / recall@1%FPR 0.9951 on the hardest (SNR 1–100) eval to date, calibration ECE < 0.003, all 8 latent dims active. The model contract is unchanged (same latent_dim, z_mean/48-feature RF layout, and artifact formats — old configs still load, new code loads old weights), so the retrain is a MINOR change. The release also bundles the post-v1.1.0 inference-throughput, caching, and artifact-resolution work.

Features

  • Candidate triage & RFI forensics (#404): per-candidate survey-relative and training-relative OOD scores plus a candidate_triage_<tag>.csv review ordering; a standalone read-only RFI report (utils/candidate_rfi_report.py) flagging multi-target frequency coincidences and known GPS/GLONASS/Iridium allocations; repeatable --report-exclude-frequency-range START_MHZ END_MHZ reporting-only exclusions (detections, DB rows, and science figures are never touched); the candidate frequency map is now a per-target-colored dot-histogram (#423).
  • Content-addressed stamp cache (#412): cadence stamps are keyed by the energy-detection config fingerprint + the cadence's ordered raw-file identity — renamed, subset, or superset catalogs over the same files reuse preprocessing work, and re-scores with new weights/thresholds skip preprocessing entirely. Size/mtime sidecar guards re-extract stale stamps; the PFB response cache moved under the same unified data_path/cache/ root.
  • Catalog-derived RAM preflight (#408): startup estimates the pending catalog's worst-case prefetch footprint and warns with a suggested --prefetch-depth when it exceeds ~90% of host RAM — a warning only, never a silent clamp.
  • Version-ceiling-bounded artifact resolution (#424): GHCR image and HF weight auto-resolution now select the newest release at or below the running code's version, with pulled-image digest tracking and automatic re-pull on retags — a checkout can never silently run weights or an image newer than its own code.

Performance

  • Inference consumes prefetched cadences in completion order, eliminating head-of-line stalls behind RFI-heavy stragglers (~12% of a measured run previously idled with zero preprocessing in flight) (#404).
  • The default prefetch_depth rises 3 → 4 on full-grid evidence (~5–9% faster on the measured 350-cadence catalog; depth 5 regressed). Hosts near the 288 GB RAM floor should pass --prefetch-depth 3 (#406).
  • SHAP-values caches now carry an input fingerprint of the explained data + persisted RF artifact, so stale explanations are recomputed instead of silently reused (#414).

Upgrade note (#412): pre-existing cache trees under the old layout are orphaned in place (delete by hand), and a --save-tag started before this release must not be resumed across the upgrade. Migration notes: docs/INFERENCE_PIPELINE.md.

Disk note: retained stamps average ~1 GB/cadence — pass --prune-stamps on catalog-scale runs.

Dependencies

  • 2026-W33 dependency refresh within documented ranges (#419); claude-code-action rolled back to proven v1.0.183 (#425).

Docs / CI & Automation

  • W33/W34 documentation inventory reconciliation (#421) and maintainer-knowledge consolidation into the agent docs (#410).
  • Weekly automation workflows staggered across Monday-UTC hours with per-workflow concurrency groups (#413); Slack log buffer tuned to 20 (#418).

Versioning

MINOR per docs/RELEASE.md: new blessed weights on an unchanged model contract ("the weights are the product") + backward-compatible features + config-default changes judged per the v1.1.0/#372 precedent; no CLI removals, artifact/config-format breaks, or runtime-floor changes. Full determination: #429 (scope corrected to the retrain by maintainer direction).


Auto-generated notes

What's Changed

  • chore: reset master to 1.1.1.dev0 after v1.1.0 + release-cycle follow-ups by @zachtheyek in #391
  • docs(release): note the CITATION.cff coupling is CI-enforced by @zachtheyek in #393
  • Inference triage + throughput: frequency filtering, OOD review ordering, completion-order streaming by @zachtheyek in #404
  • Raise inference.prefetch_depth default to 4 (grid-search evidence) by @zachtheyek in #407
  • Catalog-derived RAM preflight warning at inference startup by @zachtheyek in #409
  • Fold local handoff-doc knowledge into CLAUDE.md and the repo-context skill by @zachtheyek in #411
  • Content-addressed stamp cache + unified cache root under data_path/cache by @zachtheyek in #417
  • Weekly-automation stagger + SHAP-values-cache fingerprint (+ dot-plot & Slack-buffer fold-ins) by @zachtheyek in #418
  • W33 maintenance bundle: deps, doc inventories, dot-histogram frequency map, version-ceiling artifact resolution by @zachtheyek in #425
  • release: v1.2.0 — inference throughput + caching features, same weights (re-bless train_20260729_152426) by @zachtheyek in #430

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 06 Aug 02:57
Immutable release. Only release title and notes can be modified.
v1.1.0
c5f3774

Aetherscan v1.1.0 — a MINOR release bundling backward-compatible features, the off-cluster tf_keras packaging fix, and raised training-scale defaults. Same weights as v1.0.0: the HF tag v1.1.0 re-blesses training run train_20260729_152426 under the unchanged model contract.

⚠️ Behavior changes to know about (backward-compatible, but read this)

  • Default training scale is up (#378): a bare train run now does 50 rounds (was 20) with the injection SNR window 1–100 (easiest round; the hardest narrows to 1–10; was 10–50 → 10–20). Explicit flags behave exactly as before; released artifacts and saved configs are unaffected. Plan disk accordingly: --keep-round-data at the new default retains ~7.4 TB (~147 GB × 50).
  • One-time DB migration stall (#382): schema v9 adds two indexes; the first launch against an existing catalog-scale database builds them with a full-table scan + sort — expect minutes to tens of minutes on an ~80 GB DB, with transient WAL disk headroom. Later launches are unaffected; fresh databases don't stall.
  • pip install aetherscan is now self-contained (#340, fixes #323): the manifests declare tf_keras and the package sets TF_USE_LEGACY_KERAS at import time — the v1.0.0 two-step workaround is gone. Only a v1.0.0 install still needs it (see KNOWN_ISSUES §19).

Features

  • GHCR runtime image + pull-first wrapper (#365, #369): CD publishes ghcr.io/zachtheyek/aetherscan:vX.Y.Z; utils/run_container.sh pulls it instead of requiring a local .sif build (build stays as the fallback). With this release, :latest exists for master/.devN checkouts. The v1.1.0 image is a genuine rebuild (new fp- digest) — its inputs moved via #340.
  • Inference-run observability (#318): variant-selection plot, RF feature guard, per-band performance plot, candidate frequency axis.
  • RF variant-identity guard (#346): inference verifies the forest's self-described latent variant/active dims, not just feature count — same-width variant mispairings now fail loudly.
  • Machine-scoped display tags (#322): filenames + plot titles carry {command}_{machine}_{datetime}, collision-free across cluster nodes.
  • HF_HOME container support (#361): run_container.sh binds + forwards a scratch HF cache (fail-fast if not an existing absolute dir).
  • DB schema v9 (#375/#382): a round-scoped injection_stats index (training-resume supersede UPDATE ~18× faster on replicas; round-bounded time-span aggregate becomes a covering scan) and a covering partial index for the latent-keys enumeration — with planner guards keeping the v7 plot-pass plans intact, pinned by builder-traced EXPLAIN QUERY PLAN contract tests.
  • SHAP cache self-validation (#359/#381): the {tag}-keyed SHAP joblibs validate shape/config on load and the clustering cache carries a content fingerprint of the SHAP matrix it was fit on — stale split-cache states recompute/refit automatically instead of IndexError-ing (or silently plotting wrong points). Manual cache deletion after shap_max_samples_* changes is no longer needed.
  • Dead VAE regularization removed (#324): the never-applied L1/L2 declarations are gone after the #293 sweep found no benefit; existing artifacts unaffected.

Automation & CI

  • claude-update-docs is now a weekly batch scan with a deterministic window anchored on scheduled successes (#377); the contribution check skips maintainer-authored PRs and issues (#376, #385); weekly dependency-check learned the base-provided-package convention (#340).

Docs

  • Post-v1.0.0 consolidation and drift sweeps (#338, #343, #348, #350, #353, #355, #358), the GHCR-canonical container setup reframe (#369), and a unified reconciliation pass (#387) covering the GHCR/publish-image surface, legacy-Keras facts, HF_HOME, the PyPI install path, and 50-round derived numbers.

Install

pip install aetherscan==1.1.0            # off-cluster (Ampere; Blackwell needs the container)

Bare inference resolves and downloads the v1.1.0 HF weights automatically. On clusters, ./utils/run_container.sh now pulls the prebuilt image.

Full changelog: v1.0.0...v1.1.0

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 01 Aug 11:50
Immutable release. Only release title and notes can be modified.
v1.0.0
4562dab

What's Changed

  • Add system monitoring and resource management infrastructure by @zachtheyek in #2
  • Add Claude Code GitHub Workflow by @zachtheyek in #1
  • Fix resource cleanup and memory leaks in multiprocessing pipeline by @zachtheyek in #4
  • Fix exponential SNR schedule off-by-1 error by @zachtheyek in #6
  • Restructure project to use src/ layout for library packaging by @zachtheyek in #7
  • Fix multiprocessing pool deadlock caused by logging in signal handlers by @zachtheyek in #9
  • Deprecate TensorBoard support by @zachtheyek in #11
  • Improve plot formatting and add metadata to titles by @zachtheyek in #13
  • Config updates and preparation for multiprocessing optimization by @zachtheyek in #14
  • Feature: Database integration for training metrics and injection statistics by @zachtheyek in #19
  • Feature: Slack logging integration with threaded messages and image uploads by @zachtheyek in #25
  • Fix distributed dataset batch size allocation causing NaN RF training data by @zachtheyek in #29
  • Add Claude GitHub Actions integration by @zachtheyek in #28
  • Minor workflow and config improvements by @zachtheyek in #32
  • Implement inference pipeline for SETI signal detection by @zachtheyek in #36
  • Update project documentation and housekeeping by @zachtheyek in #38
  • Improve GitHub Actions workflows by @zachtheyek in #41
  • Fix encoder/decoder asymmetry in Beta-VAE by @zachtheyek in #43
  • Fix numeric filter truthiness checks and empty list guard in db.py by @claude[bot] in #50
  • Optimize plotting functions: fix memory leaks and improve query performance by @zachtheyek in #46
  • Fix missing tool permissions in Claude workflow actions by @zachtheyek in #48
  • Add help descriptions for plot injection CLI flags and update README by @claude[bot] in #52
  • Add latent space visualization pipeline with UMAP parameter sweep by @zachtheyek in #54
  • Update claude-code-action to v1.0.85 by @zachtheyek in #57
  • Update DataHolder reference in AGENTS.md by @claude[bot] in #58
  • Fix bot actor restriction and add CI workflow guardrails by @zachtheyek in #61
  • Add Random Forest diagnostic visualization suite by @zachtheyek in #63
  • Skip auto-assign for bot/agent senders by @zachtheyek in #68
  • Prevent triage from re-triggering Claude via claude label by @zachtheyek in #70
  • Add energy detection preprocessing for raw .h5 inference inputs by @zachtheyek in #72
  • Update inference CLI reference and usage examples for energy detection by @claude[bot] in #74
  • Blackwell GPU support + preflight CLI validation, docs, CI, and utils overhaul by @zachtheyek in #82
  • Rename cryptic abbreviations to descriptive variable names by @claude[bot] in #85
  • Harden Claude CI workflow chain (bot self-trigger + update-docs contract execution) by @zachtheyek in #89
  • Add manual workflow_dispatch re-scan to claude-update-docs by @zachtheyek in #91
  • Fix claude-update-docs dispatch validation (gh field name) by @zachtheyek in #93
  • Raise claude-update-docs timeout to 30 min for large PRs by @zachtheyek in #96
  • Fix claude-update-docs follow-up loop (bot allowlist, CI noise, CLI embedding) by @zachtheyek in #100
  • Tighten follow-up loop (strict verbatim, handle-mention rule, PR label sync) by @zachtheyek in #104
  • Update README CLI Reference blocks after cli.py overhaul by @claude[bot] in #106
  • Neutralize --num-replicas help text + regen README CLI Reference by @zachtheyek in #108
  • Untrack PIPELINE_OPTIMIZATION_HANDOFF.md; gitignore local planning docs by @zachtheyek in #110
  • Housekeeping: KNOWN_ISSUES #16, GPU legend grouping fix, run_container.sh extra binds by @zachtheyek in #112
  • Implement testing suite: pytest scaffolding, unit tests for existing pure logic, CI workflow by @zachtheyek in #116
  • Training data pipeline: disk-backed memmap rounds, background producer, batched tf.data input by @zachtheyek in #117
  • Training fault tolerance: stage-based resume, run manifest, DB supersede semantics by @zachtheyek in #122
  • Latent-dimension traversal visualization (decoder-based interpretation of latent dims) by @zachtheyek in #126
  • Inference performance: vectorized energy detection, fused per-channel workers, per-cadence streaming, downsample-at-extraction by @zachtheyek in #120
  • PFB static passband equalization as default bandpass flattener; tag-scoped preprocess output dir by @zachtheyek in #125
  • Inference: stage-aware retries (run manifest, supersede-on-retry) + visualization suite by @zachtheyek in #129
  • HuggingFace Hub integration: opt-in weight upload after training, default weight download for inference, tag dedup guards by @zachtheyek in #130
  • Benchmarking suite: always-on stage timing, annotated resource plots, report tooling, micro-benchmarks by @zachtheyek in #134
  • Live Streamlit dashboard over the pipeline SQLite DB by @zachtheyek in #170
  • Packaging + release CD: PyPI trusted publishing, GitHub Releases, version-coupled HF weights by @zachtheyek in #133
  • docs: full technical documentation suite indexed in docs/README.md by @zachtheyek in #135
  • docs: post-docs-suite polish (README dedup, SECURITY reorder, ARCHITECTURE format) by @zachtheyek in #186
  • docs: drift sweep — SKILL.md/CONTRIBUTING/CLAUDE/SECURITY residuals the #135 suite missed by @zachtheyek in #187
  • Update KNOWN_ISSUES.md for training data pipeline overhaul (PR #117) by @claude[bot] in #147
  • docs: update project structure, known issues, and SKILL.md for PR #122 by @claude[bot] in #149
  • Add missing None-guards for singleton accessors by @claude[bot] in #162
  • style: add missing get_config() None guards by @claude[bot] in #166
  • build(deps): raise setuptools + python-dotenv floors past the W30 security advisories by @zachtheyek in #188
  • docs: sort the docs/README.md index table alphabetically by @zachtheyek in #189
  • fix(monitor): cache psutil Process objects across intervals to fix child-CPU undercount by @zachtheyek in #193
  • fix(train): runtime divisibility assert for effective_batch_size vs global train batch by @zachtheyek in #190
  • fix: guard the resume footgun — round_XX load-tag validation, no silent latest-tag fallback, qualified success by @zachtheyek in #194
  • misc: post-v1 nit sweep (#163, #167, #176 n1/n2) by @zachtheyek in #191
  • feat(dashboard): aetherscan-dashboard console entry point for manual runs by @zachtheyek in #202
  • test/docs: pin the CASPER GBT512 bug=true PFB response delta as negligible by @zachtheyek in #195
  • fix: PFB follow-up nit cleanup — plot decimation, duplicate-CSV fail-fast, ratio zero-floor, stale-stamp test (#155) by @zachtheyek in #192
  • PFB sanity check: residual-flatness statistic + banded float32 reads by @zachtheyek in #199
  • PR #129 follow-ups: viz-collection guards, legacy --test-files supersede, inference-viz correctness nits by @zachtheyek in #197...
Read more