Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

What's new

San Diego State University

What’s new

Release-style changelog. Most recent change first. Curated from the development log. For the live test count across the three tiers, see the test dashboard; the dated entries below keep their point-in-time counts as historical records.

2026-06-20 — Documentation site hardening pass (v0.1.0)

A section-by-section review and hardening pass over the whole documentation site (the pages you are reading now):

The internal-but-built pages are collected in the unlisted index.

2026-06-20 — Test-registry harness hoist + local release gate

A pre-release engineering-hardening pass on the test infrastructure (no physics change):

2026-06-19 — Binary-misspecification optimal-design demo

A scripts-only optimal experimental design (OED) demonstration (held out of the released v0.1.0 wheel) showing the cost of a binary-blind survey design: a binary-free fit of binary-contaminated mock clusters biases the inferred dynamical mass high while reporting a far-too-tight uncertainty, and a binary-aware fit removes the bias and recovers the binary fraction. Worked-design detail page at OED for robustness — when binaries lie to your mass estimate (Stage 4) (see the unlisted index).

2026-06-14 — ZAMS stellar relations internalized

The Tout et al. (1996) zero-age-main-sequence mass–luminosity–radius relations were internalized into src/progenax/stellar.py (luminosity, radius, effective temperature, surface gravity, and a differentiable inverse), removing the binary-IMF demo’s dependency on fluxax. All coefficients are cited to the Tout+1996 tables and PDF-verified. Validation page: ZAMS relations validation.

2026-06-10 — Standalone-DF sampler fusion (cached tables + jitted cores)

Profile-driven follow-up to the memory batch (staged peak-RSS decomposition at N=2×104N=2\times10^4 anisotropic):

Gate. Released-core 1163 tests passing (unit 895, integration 34, validation 234).

2026-06-10 — Memory-bounded kernels, table-routed standalone DFs, numerics consolidation

A production-scale memory + consolidation pass over the cluster and kinematics stack:

Gate. Released-core 1150 tests passing (unit 882, integration 34, validation 234).

2026-06-09 — Unified multi-component equilibrium clusters (two engines)

The multimass arc (Phases 1+2) merged to main: ONE differentiable MultiComponentCluster (eqx.Module → ICResult) spans mass segregation, GC 1G/2G, binaries-vs-singles, and halo+core populations in a single self-consistent shared potential, via two independent engines:

sample_cluster returns an ICResult whose new component_id field labels each star’s generating component; per-component theory oracles prove Qj=0.5Q_j = 0.5 for every component. energy_sorted_segregation stays as the labeled PRIMORDIAL (non-equilibrium) generator.

Retired (pre-launch, no backwards compat): the populations module (generate_two_component_cluster/TwoComponentConfig — it fed the full cluster mass to each sub-population’s velocity DF, a real physics bug for unequal-mass IMFs), the string-dispatch generate_cluster_ic/ClusterState/ SpatialStructureParams/MassSegregationLayer, the lambda_seg catalog blend (intermediate states drift from per-mass-group virial balance), and MultiMassLIMEPY (subsumed by MultiComponentCluster). src/ is now dataclass-free (all containers are Equinox modules).

2026-06-04 — Binaries SoTA arc: review, completion, and faithful Moe composition

A paper-grounded review + completion pass over the whole binaries/ module (Batches 4a–4k).

Correctness (4a–4e). Fixed a Critical STELLAR-unit mean-motion bug (an absolute floor made realistic stellar-binary velocities ~100% wrong in pc), a SanaOBPeriod(power=-1) divide-by-zero + NaN gradient, an e→1 gradient singularity, and a non-PyTree config; split population.py and kepler.py to the size limits; replaced the mislabelled eccentricity heuristic with the faithful MoeEccentricity p(e) ∝ e^η(logP, M₁) + Roche cap (Moe & Di Stefano 2017 Eqs. 3, 17–18), keeping the old logistic blend honestly cited as LogisticThermalEccentricity (Duquennoy & Mayor 1991).

Completion (4f–4k). The binary-population engine is now end-to-end:

Impact. Realistic primordial-binary cluster ICs with the empirically-calibrated Moe & Di Stefano (2017) interrelation, differentiable end-to-end, paper-grounded, green under jax 0.10.1 and 0.7.0. The mass-only BinaryIMF.sample_systems path (used by the Confidently Wrong IMF-inference paper) is unchanged. Suite 1074 → 1201.

2026-06-03 — Engineering hardening: CI coverage decoupling + coverage to 91%

Decoupled coverage from the CI pass/fail gate — a coverage-tooling crash (the documented jaxlib/abseil narrow-scope class) can no longer red a build whose tests pass — and added ~60 discriminating tests lifting five under-covered modules (imf/binary/mass_ratio 53→96, imf/smooth 64→100, imf/binary/imf 61→93, imf/environment/mapping 69→96, kinematics/api 72→100). Package coverage 86 % → 91 %; full suite passing, no existing test weakened. The 500-LOC file limit was relaxed to a guideline (cohesive files ≤~600 accepted). A deliberate SoTA-design + per-module validation pass — including the fdf.py split and a cumulative-shared-grid CDF for smooth.py — is queued for release.

2026-06-03 — Follow-up audit: two launch-blockers closed

A five-lane post-hardening audit re-verified every 2026-06 fix and surfaced two Critical “untested twins”, now closed: build_spatial_ic crashed under jax.grad (float(softening)jnp.asarray), and the default mode="bm19" tail sampler still OOM’d at production scale (random.categorical Gumbel-max → cumsum+searchsorted inverse-CDF). Also fixed two Major (a NaN gradient in compute_potential_energy at the default softening=0, via a double-where; a seed-fragile BM19 test) and ~10 Minor (a differentiable BM19 resolution guard, the energy_sorted_segregation top-level export, profiles/api.py coverage 37 % → 100 %, a c(W₀)↔King-1966-Table-II regression guard, doc fixes). Test suite spans three tiers (unit / integration / validation). These were the blockers the audit said would take it from A− to a solid A.

Impact. Gradient-based inference through build_spatial_ic and production-scale mode="bm19" substructure now work. No previously-trusted result was affected — both Criticals manifested as a crash / OOM, never as a silent wrong number.

2026-06-02 — Audit hardening: true King/EFF velocity DFs

Resolved the 2026-06-01 expert audit (2 Critical, 9 Major). The King and EFF velocity DFs are now sampled in detailed equilibrium — King via the lowered-Maxwellian f(E)eE/σ21f(E)\propto e^{E/\sigma^2}-1 with a self-consistent σ\sigma, EFF via exact Eddington inversion f(E)f(E) of the truncated density — so both are virial (Q=T/V0.5Q=T/|V|\approx0.5) with no external rescale. A latent density–potential bug (the King ODE sampled a non-King, 2–30× over-extended profile) was fixed, so the concentration c(W0)c(W_0) now matches King (1966) Table II to 0.02\le 0.02. Also fixed: GG was silently dropped from velocity sampling (C1); the King KK-function had a NaN gradient and a non-JIT-able constructor (C2). Test suite: 848 across 3 tiers (724 / 21 / 103), with tightened, regime-anchored tolerances.

Impact. ICs built with King or EFF velocities before this release were not in equilibrium and should be regenerated. The unused king_K_function was removed; the corrected density is king_lowered_maxwellian_density.

Reference. Code reviews.

2026-04-28 — PP20 ζ(p) transcription bug fix

The magnification_factor(p) function was producing systematically wrong values for typical p[1,2]p \in [1, 2] due to a transcription error of Parmentier & Pasquali (2020) Eq. 6. Fixed; replaced with the canonical analytic form ζ(p)=2(3p)3/2/[33/2(2p)]\zeta(p) = 2(3-p)^{3/2}/[3^{3/2}(2-p)], which is equivalent to PP20 Eq. 6 to 0.08% across the physical domain. 35 new regression tests anchor every spot value on PP20 / analytic / Kainulainen+14 references.

Impact. All BM19 forward-chain ζ outputs computed before this fix are systematically wrong. The validation plots b5_zeta_comparison.png, b6_pp20_diagram.png, and e5_pp20_diagram.png need regeneration.

Reference. PP20 ζ(p) transcription fix; chapter at The magnification factor ζ — three ways to compute it.

2026-04-28 — progenax docs website launched

The single-source-of-truth documentation site you are reading now went live. Migrated and rewrote ~12K lines of source material into ~120 chapters of structured MyST-MD content. The legacy raw source docs are preserved in the repository for provenance.

2026-02-13 — Binary-aware IMF recovery v1

End-to-end forward-model + likelihood for binary-aware IMF inference. Reproduces the “confidently wrong” regime where the naive single-star likelihood produces a posterior 95% CI that shrinks below the bias and excludes the truth at N104N \gtrsim 10^4. The binary-aware likelihood eliminates the bias.

Reference. Binary-aware IMF recovery; Binary-aware IMF validation.

2026-02-12 — IC redesign: protocol-based composition

Comprehensive redesign of the IC API. Replaced the inheritance-based, partially-stateful, implicitly-united legacy design with the protocol-based, immutable, explicitly-united architecture. Breaking change; legacy preserved at progenax_legacy.

Reference. IC redesign history; spec at IC redesign spec (2026-02-12).

2025-12-07 — Phase 1 milestone

First production-grade release with full IMF / spatial profile / velocity DF / mass segregation / fractal substructure / binary support. Validation suite reaches 432 tests across 3 tiers.

Reference. progenax Phase 1 - COMPLETE.

2025-12-07 — IMF stack fix

Correction to the cumulative-mass integration in PowerLawIMF for multi-segment forms; prior version produced subtle off-by-one errors at segment boundaries.

Reference. IMF Stack Fix Implementation Plan.

References
  1. Parmentier, G., & Pasquali, A. (2020). A new parameterization of the star formation rate–dense gas mass relation: Embracing gas density gradients. The Astrophysical Journal, 903, 56. 10.3847/1538-4357/abb8d3