Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1052 commits
Select commit Hold shift + click to select a range
133596a
Wire atmodeller into CI install and let mors test self-prime spada tr…
timlichtenberg May 17, 2026
a50f72d
Pin jax<0.10 and accept both case variants of the spada track folder
timlichtenberg May 17, 2026
bb749ee
Unblock aragog integration tests by defaulting eos_dir to the legacy …
timlichtenberg May 17, 2026
2e6eca2
Re-initialise integration-fixture dirs after applying config overrides
timlichtenberg May 17, 2026
acfeaec
Bump aragog integration test timeout from 300 s to 600 s for macOS ru…
timlichtenberg May 17, 2026
a303ab7
Harden mors+zephyrus test: parametrize over 3 IC scenarios + Pxuv err…
timlichtenberg May 17, 2026
ffa688e
Harden atmodeller-dummy test: parametrize over redox + inventory axis…
timlichtenberg May 17, 2026
a2550d2
Harden outgas xcheck: sweep fO2 axis + outgas module error contract
timlichtenberg May 17, 2026
547b938
Harden aragog+calliope test: sweep fO2 + interior_energetics module e…
timlichtenberg May 17, 2026
83907ad
Harden aragog+atmodeller test: sweep fO2 + solver_multistart error co…
timlichtenberg May 17, 2026
63c4598
Apply ruff format to aragog_atmodeller test (parametrize line layout)
timlichtenberg May 17, 2026
3ae96b7
Drop aragog parametrize: single-scenario integration + schema-validat…
timlichtenberg May 17, 2026
f1b8169
Add mocked unit tests for the diffrax-aragog JAX entropy runner
timlichtenberg May 17, 2026
f838566
Pin numpy backend on aragog integration tests; add CI diagnostic logs
timlichtenberg May 17, 2026
1b90a28
Move aragog two-timestep tests to slow tier; restore production backend
timlichtenberg May 17, 2026
89a1414
Guard aragog slow tests against silent FD-Jacobian fallback
timlichtenberg May 18, 2026
1c6c420
Install scikits-odes-sundials so aragog runs CVODE, not Radau
timlichtenberg May 18, 2026
f9747a3
Move setup-proteus onto miniforge + conda-forge sundials
timlichtenberg May 18, 2026
3f9db97
Give the aragog slow tests headroom for the Linux CVODE path
timlichtenberg May 18, 2026
703a868
Pin juliacall<0.9.33 to keep PythonCall.jl dev-path working
timlichtenberg May 18, 2026
152ffa7
Stream aragog diag logs and preserve Linux slow-tier output
timlichtenberg May 18, 2026
88e43c6
Split aragog setup_solver and jax_cvode_factory diag timing
timlichtenberg May 18, 2026
8fff858
Cache EntropyEOS and EntropyEOS_JAX per eos_dir
timlichtenberg May 18, 2026
ae1ccab
Key the EntropyEOS cache by content fingerprint
timlichtenberg May 19, 2026
99e9f23
Lock GITHUB_TOKEN to contents:read on the remaining workflows
timlichtenberg May 20, 2026
8168c5b
Bump AGNI to v1.10.2 and SOCRATES to build 2603.6
timlichtenberg May 20, 2026
f784309
Add lightweight Atmos_t schema check at allocate_b
timlichtenberg May 20, 2026
b8021c3
Surface AGNI 1.10.2 optical depth and convection diagnostics into hf_row
timlichtenberg May 20, 2026
7ed948e
Add ColourSystem unit tests in tests/utils/test_visual.py
timlichtenberg May 20, 2026
14ff0df
Cover escape/wrapper.py baseline rebuild and unfract fallback branches
timlichtenberg May 20, 2026
d00fd6b
Cover orbit/wrapper.py dispatch branches and Roche-limit warnings
timlichtenberg May 20, 2026
088e60c
Add unit tests for the PHOENIX parameter resolver
timlichtenberg May 20, 2026
7e043c7
Cover star/wrapper Baraffe branches + Stefan-Boltzmann equilibrium
timlichtenberg May 20, 2026
b897f9f
Cover atmodeller wrapper warning + early-return + solver-exception paths
timlichtenberg May 20, 2026
1b6a4aa
Cover utils/coupler git-revision and version-validation error paths
timlichtenberg May 20, 2026
108fc07
Address Track 0 + Wave A independent-review findings
timlichtenberg May 20, 2026
90aa8ff
Cover BoundaryRunner init clamps and run_solver CSV logging
timlichtenberg May 20, 2026
e81e291
Cover NetCDF error branches and Albedo_t init/evaluate fallbacks
timlichtenberg May 20, 2026
f1f0e9a
Cover offchem_read_grid and offchem_slice_grid aggregators
timlichtenberg May 20, 2026
55b3dd0
Address Wave A residual review findings
timlichtenberg May 20, 2026
31f5b7f
Extract _check_atmosphere_deadlock helper and cover the detector
timlichtenberg May 20, 2026
719ff28
Cover Proteus.observe and Proteus.offline_chemistry postprocessing
timlichtenberg May 20, 2026
826b400
Strengthen Wave B test discrimination and drop stale comment paths
timlichtenberg May 20, 2026
3b53aed
Add AGNI x aragog integration tests with optical-depth invariant
timlichtenberg May 20, 2026
c2ef0f4
Run Pkg.instantiate before AGNI deps/build.jl + cover diagnostics fal…
timlichtenberg May 20, 2026
f93d03c
Add AGNI x calliope integration tests with optical-depth invariant
timlichtenberg May 20, 2026
e377b60
Pin Calliope include_* field count and drop internal plan label
timlichtenberg May 20, 2026
14ce961
Add AGNI x atmodeller integration tests with optical-depth invariant
timlichtenberg May 20, 2026
43f334c
Pin Atmodeller enum set, field counts, and design-lock invariant
timlichtenberg May 20, 2026
6187b3b
Add AGNI x MORS integration tests with optical-depth invariant
timlichtenberg May 20, 2026
36bfc9b
Cover Mors rotation constraints and use pytest.approx on bol_scale
timlichtenberg May 20, 2026
d563d34
Add AGNI x ZEPHYRUS integration tests with hard-coupled MORS+spada gate
timlichtenberg May 20, 2026
ebbaf25
Split Zephyrus Pxuv tests by validator layer
timlichtenberg May 20, 2026
8f84674
Add aragog x MORS integration tests
timlichtenberg May 20, 2026
2fa5e92
Pin Aragog solver_method enum and use pytest.approx for float zero
timlichtenberg May 20, 2026
4b5a24c
Add aragog x ZEPHYRUS integration tests with hard-coupled MORS+spada …
timlichtenberg May 21, 2026
8ce98ac
Narrow zephyrus efficiency test to the round-trip path; drop janus dep
timlichtenberg May 21, 2026
992a0a6
Add calliope x MORS integration tests
timlichtenberg May 21, 2026
0917e07
Cover Mors rotation constraints in the calliope x MORS pair
timlichtenberg May 21, 2026
3402d06
Add calliope x ZEPHYRUS integration tests
timlichtenberg May 21, 2026
9b0f105
Remove latent stop.escape.enabled dependency and add field-validator …
timlichtenberg May 21, 2026
42f6433
Add atmodeller x MORS integration tests
timlichtenberg May 21, 2026
715b0d2
Pin solver_max_steps/solver_multistart gt(0) boundary and extend none…
timlichtenberg May 21, 2026
d907f33
Add atmodeller x ZEPHYRUS integration tests
timlichtenberg May 21, 2026
7384248
Use rel tolerance at efficiency=1.0 and pin ge(0) selectivity at effi…
timlichtenberg May 21, 2026
0584eee
Add Zalmoxis schema-tier integration tests for aragog/spider/calliope…
timlichtenberg May 22, 2026
21aa70a
Add slow-tier real-boot test for Zalmoxis with dummy energetics
timlichtenberg May 22, 2026
3fe344f
Add slow-tier real-physics tests for zalmoxis+aragog+calliope and jan…
timlichtenberg May 22, 2026
3e17f5d
Add mocked unit tests for PLATON spectral synthesis and LovePy tidal …
timlichtenberg May 22, 2026
0bacb0d
Fix slow-tier nightly failures in zalmoxis_dummy and janus_aragog
timlichtenberg May 22, 2026
42808a3
Skip slow_zalmoxis_dummy and slow_janus_aragog on macOS pending follo…
timlichtenberg May 22, 2026
3976bcf
Refresh slow_zalmoxis_dummy runtime-budget docstring after macOS skip
timlichtenberg May 22, 2026
fb3c98a
Split nightly slow tier into a parallel matrix of shards
timlichtenberg May 22, 2026
946c2a6
Tolerate macOS brew post-install warnings in setup-proteus
timlichtenberg May 22, 2026
cde4017
Pin --cov-fail-under=0 on per-tier pytest in the parallel matrix
timlichtenberg May 22, 2026
ca38a05
Upload .coverage SQLite files + raise slow-shard timeouts
timlichtenberg May 22, 2026
b56ff46
Fix xarr/parr length mismatch in cpl_chem_atmosphere plot
timlichtenberg May 23, 2026
245394f
Relax slow_janus_aragog F_atm assertion to allow transient negative flux
timlichtenberg May 23, 2026
ec3754a
Split slow-zalmoxis nightly shard and skip corrupt coverage SQLite
timlichtenberg May 23, 2026
3a6bddf
Fail nightly aggregator when every collected SQLite is corrupt
timlichtenberg May 23, 2026
0e87db6
Merge origin/main into tl/interior-refactor
timlichtenberg May 23, 2026
35bcd09
Apply ruff format to test_path_c_atmodeller.py
timlichtenberg May 23, 2026
e4bc020
Add mocked unit tests for atmos_clim/janus.py wrapper
timlichtenberg May 23, 2026
a529bf5
Add unit tests for ShallowMixedOceanLayer
timlichtenberg May 23, 2026
c234d01
Add unit tests for dummy.py fixed_flux + boundary branches
timlichtenberg May 23, 2026
b6cfe95
Sharpen discrimination guards on new atmos_clim tests
timlichtenberg May 23, 2026
42ce212
Raise zalmoxis_dummy per-test timeout from 3600 s to 7200 s
timlichtenberg May 23, 2026
f89b261
Tolerate missing-source warnings in nightly coverage xml/json
timlichtenberg May 23, 2026
5882d41
Give zalmoxis_dummy more wall-time budget on GHA Linux
timlichtenberg May 23, 2026
d7bef9a
Fix zalmoxis_dummy test: skip the equilibration loop it never needed
timlichtenberg May 23, 2026
4b4ff33
Expose update_dw_comp_abs and add minimal_zalmoxis_overrides helper
timlichtenberg May 23, 2026
2c42818
Raise coverage gate to 90 percent and add real-AGNI slow-tier shard
timlichtenberg May 23, 2026
6bec1b1
Set fast coverage gate to 84 percent (current measured floor)
timlichtenberg May 23, 2026
feac6e9
Relax zalmoxis_dummy mass-closure tolerance to match dry_mantle gap
timlichtenberg May 23, 2026
2349ebf
Use three-term closure for zalmoxis_dummy mass invariant
timlichtenberg May 23, 2026
abaf801
Reclaim Linux runner disk before PROTEUS setup
timlichtenberg May 23, 2026
94ee107
Fix R_core/R_int window for actual Zalmoxis mass-frac behaviour
timlichtenberg May 23, 2026
0946df2
Fix aggregator fail-under and raise shard cap to 150 min
timlichtenberg May 23, 2026
ff66e05
Remove commit hash and line-number references from shipped comments
timlichtenberg May 23, 2026
b113bd9
Add 6 targeted unit tests for the final push toward 90 percent
timlichtenberg May 23, 2026
2995adc
Add mocked unit tests for the four largest coverage gaps
timlichtenberg May 24, 2026
c4f113c
Harden test suite: fix float comparisons, add timeout markers, expand…
timlichtenberg May 24, 2026
6f0e526
Merge remote-tracking branch 'origin/main' into tl/interior-refactor
timlichtenberg May 24, 2026
f1f5837
Fix two new smoke tests that fail on CI
timlichtenberg May 24, 2026
e580798
Mark CALLIOPE solver dIW=-2.0 round-trip as xfail
timlichtenberg May 24, 2026
6d75c42
Allow negative F_atm in JANUS integration test
timlichtenberg May 24, 2026
26ad8ad
Standardize logging: fix hierarchy, convert print() to log, unify var…
timlichtenberg May 24, 2026
fe5669f
Add DEBUG logging to config, grid, and interior_struct modules
timlichtenberg May 24, 2026
64612e0
Remove unused logger definitions from 6 files
timlichtenberg May 24, 2026
4dc8253
Align interior_energetics.boundary indentation in all_options.toml
timlichtenberg May 24, 2026
8eaf412
Clean up TOML config comments: remove development language, homogeniz…
timlichtenberg May 24, 2026
f20e37d
Clean up all_options.toml: restructure sections, fix stale fields
timlichtenberg May 24, 2026
30a2767
Add missing delta_T_super and liquidus_super mode to all_options.toml
timlichtenberg May 24, 2026
1aa8324
Add missing config parameters to all_options.toml
timlichtenberg May 24, 2026
faf219b
Add defaults for planet.mass_tot and planet.elements.O_mode
timlichtenberg May 24, 2026
fcd2f2e
Add coupling loop explanation and output format reference
timlichtenberg May 24, 2026
c1f7e7a
Add 7 config reference pages covering all ~400 parameters
timlichtenberg May 24, 2026
2267496
Add 6 tutorials covering dummy through production workflows
timlichtenberg May 24, 2026
9bb9724
Consolidate test docs, add development standards, add Cambridge IoA f…
timlichtenberg May 24, 2026
94d835e
Remove superseded test and AI usage documentation pages
timlichtenberg May 24, 2026
a636309
Rewrite Home and Getting Started pages, update Cambridge logo
timlichtenberg May 24, 2026
9234bc8
Remove DOI badge from README and docs landing page
timlichtenberg May 24, 2026
87b7da0
Remove DOI from expected README badges list
timlichtenberg May 24, 2026
bee1271
Add white background to Cambridge logo on funding page
timlichtenberg May 24, 2026
8aabd20
Restore Julia 1.11 version pinning warning in installation guide
timlichtenberg May 24, 2026
858c9aa
Add unified installer script with tests
timlichtenberg May 24, 2026
9387a2d
Harden installer against adversarial review findings
timlichtenberg May 24, 2026
f3f8491
Fix SOCRATES detection to check radlib.a (verified in isolated env)
timlichtenberg May 24, 2026
768c9a1
Fix PHOENIX download: pass --feh and --alpha flags in --all-data mode
timlichtenberg May 24, 2026
a44f54c
Restructure installation page: add automated installer, keep manual f…
timlichtenberg May 25, 2026
d5d8a9d
Add missing items to installation page
timlichtenberg May 25, 2026
2938145
Fix missing FastChem/FC_DIR in installer and add cmake/unzip checks
timlichtenberg May 25, 2026
8276b7e
Install all submodules as editable checkouts in install.sh
timlichtenberg May 25, 2026
3be739e
Pin CALLIOPE to tl/fo2-source-framework branch in installer and docs
timlichtenberg May 25, 2026
a1c60ae
Expand model description, fix code architecture, add cross-links
timlichtenberg May 25, 2026
4495da7
Harden installer for HPC clusters (Kapteyn NFS, small home dirs)
timlichtenberg May 25, 2026
f2de90c
Switch installer to non-interactive by default, add --interactive / -i
timlichtenberg May 25, 2026
53ab4a1
Fix SPIDER section heading and description in installation docs
timlichtenberg May 25, 2026
373356c
Clarify SPIDER description: Aragog has no compiled dependencies
timlichtenberg May 25, 2026
de03c22
Rewrite proteus doctor as structured check system, add proteus update
timlichtenberg May 25, 2026
8ad8fac
Fix four bugs in doctor found by adversarial review
timlichtenberg May 25, 2026
f918b64
Add documentation page for proteus doctor and proteus update
timlichtenberg May 25, 2026
d66eb53
Add submodule links, document missing CLI commands, complete output r…
timlichtenberg May 25, 2026
1ab00ec
Add module versions reference page with badges and version pinning guide
timlichtenberg May 25, 2026
39efe5c
Auto-generate module version badges from pyproject.toml at build time
timlichtenberg May 25, 2026
d537f89
Replace mkdocs-macros with static badges and in-place generator
timlichtenberg May 25, 2026
c3346f0
Add footnote citations with DOI and SciX links across all docs
timlichtenberg May 25, 2026
02186e8
Remove BOREAS from docs and configs, add dummy module descriptions
timlichtenberg May 25, 2026
fabf5aa
Add dummy modules page, fix 3 citation errors from adversarial review
timlichtenberg May 25, 2026
ebc2120
Fix 5 dummy module descriptions from review, add conda to local machi…
timlichtenberg May 25, 2026
b83eab4
Fix CI test_doctor failure, fill install dependency gaps
timlichtenberg May 25, 2026
551cc71
Fix CI failures: git config in doctor tests, update test quality base…
timlichtenberg May 25, 2026
a9efb58
Add dummy tutorial reference plot and tutorial config files
timlichtenberg May 25, 2026
2468083
Fix tutorial config validation errors caught by CI
timlichtenberg May 25, 2026
fb04eeb
Fix dummy tutorial: run to solidification instead of early escape
timlichtenberg May 25, 2026
7fee07e
Fix dummy outgas to preserve element budgets and show atmosphere
timlichtenberg May 25, 2026
78abcfc
Switch dummy tutorial to linear-axis plot for better readability
timlichtenberg May 25, 2026
c703f0c
Rewrite dummy tutorial text to match plot and actual config
timlichtenberg May 25, 2026
0463aa1
Update dummy outgas tests for f_atm_floor partition formula
timlichtenberg May 25, 2026
f4cfe6f
Update earth tutorial config to CHILI Nominal Earth parameters
timlichtenberg May 25, 2026
eb27abe
Rewrite earth analogue tutorial to CHILI Nominal Earth case
timlichtenberg May 25, 2026
bf8bcb4
Add CHILI intercomparison tutorial, Venus config, and comparison plotter
timlichtenberg May 25, 2026
d5c7ed3
Replace old schematic with interactive SVG from home page
timlichtenberg May 25, 2026
6ef2dbc
Add CHILI tutorial configs, comparison plots, and reference images
timlichtenberg May 26, 2026
a58fac0
Fix review findings in CHILI comparison plotter and tutorial docs
timlichtenberg May 26, 2026
82362a9
Move tutorial configs to input/tutorials/ and update references
timlichtenberg May 26, 2026
6d0d8a6
Rewrite Earth analogue tutorial with results analysis, add caption CSS
timlichtenberg May 26, 2026
6aaad7d
Fix Earth analogue caption to match actual plot panels
timlichtenberg May 26, 2026
d65b5dc
Fix 12 factual errors in Earth analogue tutorial
timlichtenberg May 26, 2026
5f087dc
Add CHILI intercomparison tutorial with Earth+Venus plots and grid co…
timlichtenberg May 26, 2026
81d0d7a
Convert tutorial images to AVIF, fix review findings
timlichtenberg May 26, 2026
58b812d
Add AVIF and Wong palette standards to docs plot conventions
timlichtenberg May 26, 2026
710a8bb
Add Venus atmospheric composition figure to CHILI tutorial
timlichtenberg May 27, 2026
99556e6
Fix numerical values in tutorial captions against actual output
timlichtenberg May 27, 2026
0a5e6ab
Add grid solidification timescale plot to CHILI comparison script
timlichtenberg May 27, 2026
2c24ac8
Finalize CHILI tutorial and plotting script for user reproduction
timlichtenberg May 27, 2026
1b5b8cf
Fix 18 issues from adversarial review of CHILI tutorial
timlichtenberg May 27, 2026
8767fd4
Fix resume remelting: restore evolved entropy instead of t=0 IC
timlichtenberg May 27, 2026
3bb289d
Improve resume entropy restoration: set dSdr_cmb directly
timlichtenberg May 27, 2026
239efe8
Eliminate resume skin-layer transient via T_magma anchoring
timlichtenberg May 27, 2026
2c88593
Address 12 review findings on resume fix
timlichtenberg May 27, 2026
19721b4
Refresh AVIF assets from latest plotting script
timlichtenberg May 27, 2026
a00e0f6
Rewrite Fig 2 as 3-panel milestone plot matching Nicholls+ layout
timlichtenberg May 27, 2026
132472b
Move Fig 2 legend to lower right, strengthen PROTEUS line styling
timlichtenberg May 27, 2026
0d39053
Update Fig 2 caption and AVIF asset for new PROTEUS line styling
timlichtenberg May 27, 2026
d2838b0
Remove figure numbers from CHILI tutorial section headings
timlichtenberg May 27, 2026
7cdf251
Rewrite Figs 3 and 5 as stacked bars matching Nicholls+ layout
timlichtenberg May 27, 2026
143c5ea
Sharpen all CHILI tutorial AVIF assets (400 dpi, quality 85)
timlichtenberg May 27, 2026
5a6dd98
Increase CHILI AVIF resolution to 600 dpi, quality 95
timlichtenberg May 27, 2026
69c02e7
Fix blurry AVIF assets: convert from PNG source, bump to 300 dpi
timlichtenberg May 27, 2026
dae6b81
Switch CHILI tutorial images from AVIF to PNG for pixel-sharp rendering
timlichtenberg May 27, 2026
b955a27
Rewrite Fig 4 as 3-panel Nicholls+ layout, fix row selection for all …
timlichtenberg May 27, 2026
e7e8018
Rewrite Figs 5-9 to match Nicholls+ paper, fix bugs from review
timlichtenberg May 27, 2026
8c4712c
Remove stale CHILI tutorial figure assets from old numbering
timlichtenberg May 27, 2026
5439fb8
Complete CHILI grid with Hhigh runs, fix plot formatting
timlichtenberg May 27, 2026
34158e4
Add code organization conventions to development docs
timlichtenberg May 28, 2026
5de034f
Plot CHILI Fig 9 mantle front in Mm, mark true core boundary
timlichtenberg May 28, 2026
cedce6e
Add code organization rules to agent guidelines
timlichtenberg May 28, 2026
cce6687
Clean up config descriptions to state current behaviour
timlichtenberg May 28, 2026
da0483c
Merge remote-tracking branch 'origin/main' into tl/interior-refactor
timlichtenberg May 28, 2026
52184de
Clean up source comments and docstrings to state current behaviour
timlichtenberg May 28, 2026
86a414b
Fix interior config docstrings and remove dashes from comments and docs
timlichtenberg May 28, 2026
726571b
Reformat CHILI volatile-retention figure to match paper layout
timlichtenberg May 28, 2026
a8789c9
Match CHILI OLR figure to paper layout and smooth PROTEUS curve
timlichtenberg May 28, 2026
d47f0b4
Polish CHILI geodynamics, OLR, pressure and grid figures
timlichtenberg May 28, 2026
d5595c6
Expand CHILI tutorial discussion and correct figure captions
timlichtenberg May 28, 2026
e6184da
Explain the early oxygen-driven surface-pressure peak in the CHILI tu…
timlichtenberg May 28, 2026
f5cae1f
Number the CHILI tutorial figures and tidy data-source citations
timlichtenberg May 28, 2026
7249d8d
Spell the CHILI project name consistently as atmospHere
timlichtenberg May 28, 2026
587cb18
Frame the CHILI tutorial as the Solar System intercomparison
timlichtenberg May 28, 2026
0e2d904
Clarify that the submitted CHILI curve is an earlier PROTEUS version
timlichtenberg May 28, 2026
663d50b
Label the current PROTEUS Earth curve in the melt-fraction figure
timlichtenberg May 28, 2026
b206cbc
Link the CHILI data repository and fix a missing word in the intro
timlichtenberg May 28, 2026
fce59ec
Show the submitted PROTEUS curve in the 5% solidification panel
timlichtenberg May 28, 2026
a04589f
Trim the milestone figure caption
timlichtenberg May 28, 2026
c8517ba
Trim the melt-fraction figure caption
timlichtenberg May 28, 2026
9758eac
Show all models in the atmosphere figures and outline the T_surf stars
timlichtenberg May 28, 2026
cf41113
Drop the smoothing note from the OLR and geodynamics captions
timlichtenberg May 28, 2026
59a3b0e
Drop the t=0 initialization row when loading comparison data
timlichtenberg May 28, 2026
0caf57d
Remove citations from the submitted-PROTEUS description paragraph
timlichtenberg May 28, 2026
9d80e15
Trim the submitted-PROTEUS paragraph and point to the CHILI papers
timlichtenberg May 28, 2026
bbc2ecd
Replace the CHILI comparison detail with a takeaways section
timlichtenberg May 28, 2026
6038327
Move the relative-fO2 panel label to the top right
timlichtenberg May 28, 2026
408a77b
Correct the Aragog description in the CHILI tutorial
timlichtenberg May 28, 2026
d7c1d0f
Remove the super-Earth, sub-Neptune and reduced-H2 tutorials
timlichtenberg May 29, 2026
4bf9c7d
Expand the ensemble grid docs and harden grid status/packaging
timlichtenberg May 29, 2026
51db88e
Split the Usage docs into focused topic pages
timlichtenberg May 29, 2026
5845c7f
Move the CHILI intercomparison configs under the tutorials folder
timlichtenberg May 29, 2026
c542525
Remove the CHILI intercomparison generator and dev configs
timlichtenberg May 29, 2026
890c182
Drop the orphan chili.csv gitignore entry
timlichtenberg May 29, 2026
5f1b6e2
Rewrite the parameter grid tutorial around a runnable dummy grid
timlichtenberg May 29, 2026
3d4f977
Link the grid tutorial prominently from the grids how-to
timlichtenberg May 29, 2026
1361a07
Add initial thermal conditions guide and config defaults section
timlichtenberg May 29, 2026
5bc8d25
Make liquidus_super the default initial temperature mode
timlichtenberg May 29, 2026
59f1e90
Harden the liquidus_super default IC and fix its liquidus citation
timlichtenberg May 29, 2026
d15deb3
Link SOCRATES to its docs site in the module versions table
timlichtenberg May 29, 2026
3419de6
Merge main into tl/interior-refactor
timlichtenberg May 29, 2026
2c1630f
Rework the repository README
timlichtenberg May 29, 2026
e48e85f
Align config reference docs with current schema defaults
timlichtenberg May 30, 2026
39b26d8
Fix broken copy-paste examples in how-to and tutorial pages
timlichtenberg May 30, 2026
a72ec9f
Correct output and validation reference pages
timlichtenberg May 30, 2026
30985a8
Fix small documentation inaccuracies
timlichtenberg May 30, 2026
cc7687b
Harden submodule setup scripts and two config edge cases
timlichtenberg May 30, 2026
0f9bd0e
Fix interior tolerance alias resolution edge cases
timlichtenberg May 30, 2026
89a5080
Fix Zalmoxis table cache reuse and per-planet density seeding
timlichtenberg May 30, 2026
1ec28ef
Harden interior structure and energetics edge cases
timlichtenberg May 30, 2026
4124e68
Fix volatile and escape mass-accounting edge cases
timlichtenberg May 30, 2026
0b78d78
Fix atmosphere, config, and diagnostic edge cases
timlichtenberg May 30, 2026
98c19fb
Improve override path, deterministic re-exec, and editable diagnostics
timlichtenberg May 30, 2026
7607ecc
Pin module installs, add inference timeout, unify FWL_DATA path
timlichtenberg May 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
106 changes: 106 additions & 0 deletions .github/.claude/rules/proteus-code-review.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
---
description: PROTEUS-specific code review criteria for the generator-evaluator pattern. Applies domain expertise (physics, coupling, pitfall patterns) to all code review in this repo.
---

# PROTEUS Code Review Criteria

When reviewing PROTEUS code (either your own or via code-reviewer agents), apply these domain-specific checks in addition to standard code quality review.

> **Discovery note.** PROTEUS keeps its Claude-Code rule files under `.github/.claude/rules/` (not the conventional repo-root `.claude/`) so they can be tracked in git and shared across collaborators. Claude does NOT auto-discover them at this path; the repo-root `CLAUDE.md` (symlinked to `.github/copilot-instructions.md`) names this file and `proteus-tests.md` explicitly. **Before opening any review pass, read both this file and `proteus-tests.md`.**

## Physics plausibility

- Temperature must be positive everywhere (Kelvin). Flag any code path where T could reach zero or go negative.
- Pressure must be positive and monotonically increasing with depth in interior profiles.
- Mass fractions must sum to 1.0. Flag any volatile partitioning code that doesn't enforce or verify normalization.
- Escape rates must not exceed total atmospheric mass. Flag unbounded escape calculations.
- Outgassing rates must be non-negative.
- Energy fluxes at module boundaries (atmosphere-interior, interior-core) must be consistent. If two modules independently compute the same flux, verify they agree.
- Stefan-Boltzmann: F = sigma * T^4. When reviewing radiative flux code, check the exponent is 4, not 3 or 5.

## Unit convention boundaries

PROTEUS has a split unit convention:
- **Config values**: "human" units (M_sun, bar, Gyr, K)
- **Internal hf_row values**: SI-ish (kg, Pa, yr, K)
- **Submodule APIs**: may expect either convention

When reviewing code that passes values between config, hf_row, and submodule calls, verify the unit is correct at each boundary. The ZEPHYRUS stellar-mass bug (audit 1.1) was exactly this class of error.

## Config mutability

The `Config` attrs object must not be mutated at runtime. Flag any code that sets `config.X.Y = value` outside of config initialization. Use local variables instead. Known violation: Zalmoxis sets `config.orbit.module = 'dummy'`; this is a known debt, not a pattern to replicate.

## Coupling parameter echo-back

When module A computes a quantity self-consistently (e.g., Zalmoxis computes core mass from EOS) and module B has its own internal model for the same quantity (e.g., SPIDER's `-rho_core`), module B's output can overwrite A's value in hf_row. Review any new submodule integration for this pattern.

## Whole-element aggregation symmetry (issue #677 lesson)

When reviewing code that aggregates element masses, all four sites of the cycle must use the same element set:

1. Initial-budget population (`calc_target_elemental_inventories`, `_resolve_oxygen_budget`)
2. M_planet bookkeeping (`update_planet_mass`)
3. Structure dry-mass target (`load_zalmoxis_configuration`)
4. Escape rate distribution (`calc_unfract_fluxes`, `calc_new_elements`)
5. Desiccation gate (`check_desiccation`)
6. First-call baseline (`M_vol_initial` in `run_escape`)

Issue #677 surfaced when one site (M_atm via `gas_list` sum) implicitly included oxygen mass while every other site (M_ele via `element_list` with `if e == 'O': continue`) excluded it. The fix is to make the element set explicit and consistent across all aggregation sites. A new `if e == 'O': continue` skip in any of these sites is a red flag during review; it likely re-introduces the asymmetry.

The runtime invariant `assert_mass_conservation(hf_row)` is called at the end of every iteration to hard-fail on a regression. If a review finds someone has weakened or removed that assertion, push back: it's the safety net that catches future O-skip reintroductions.

## IC consistency checks at unit boundaries

When a user supplies a value via config that gets re-derived by a downstream solver (e.g., O_budget from `planet.elements.O_mode` vs CALLIOPE's IC equilibrium), a one-shot reconciliation check at IC catches mis-specifications loudly rather than letting them silently corrupt the trajectory. Pattern from issue #677:

1. Stash the user-supplied value in `hf_row` under a sentinel-style key (e.g., `O_kg_user_ic`).
2. After the first solver call, compare the solver-derived value against the user budget.
3. Hard-fail if relative divergence exceeds a threshold (50% for O; threshold can be tuned per case).
4. Flip the sentinel so subsequent init-stage calls don't re-fire the check.

Applies to any future user-specified quantity that has a solver-derived equivalent. Examples worth retro-fitting: T_magma_init vs SPIDER's IC entropy, fO2_shift_IW vs the atmospheric chemistry it implies, surface gravity vs Zalmoxis's structure output.

## hf_row temporary overrides

When overriding hf_row values to pass different boundary conditions to a submodule, require a save/restore pattern:
```python
saved = {k: hf_row[k] for k in keys_to_override}
try:
hf_row[k] = override_value
result = call_submodule(hf_row)
finally:
hf_row.update(saved)
```
Without restore, the helpfile CSV records override values instead of true planet state.

## Cross-module constant duplication

Physical constants (G, year length, solar mass, Stefan-Boltzmann) are defined independently in PROTEUS, CALLIOPE, ZEPHYRUS, and other submodules. When reviewing code that uses physical constants, check which definition is used and whether it matches the expected value.

## PALEOS / EOS tables

- SPIDER needs P-S tables (phase-specific S ranges, complete rectangles, uniform P spacing).
- Aragog needs P-T tables (full rectangular grid, identical for solid and melt).
- Phase-filtering P-T tables for Aragog creates irregular grids that cause scipy to use slow unstructured interpolation. Flag any table generation that filters by phase before writing Aragog tables.

## Interior-atmosphere coupling timing

The main loop advances Time before the atmosphere step runs. Any function comparing hf_row (current, time-advanced) with hf_all.iloc[-1] (previous) must get argument ordering right.

## Validator liveness

attrs validators can silently become dead code if they compare a dataclass instance against a primitive (e.g., `StopEscape is False`). When reviewing validators, check that both valid and invalid inputs are tested.

## Test marker discipline

Every test file must begin with a module-level `pytestmark = [pytest.mark.<tier>, pytest.mark.timeout(<budget>)]` (unit/30 s, smoke/60 s, integration/300 s, slow/3600 s). Per-function markers are additive but do not replace the module-level marker; CI runs `pytest -m "unit and not skip"` and any file missing the tier marker ships untested.

## Test quality (cross-reference)

Test-content rules (anti-happy-path, discriminating-value guards, physics-invariant tiering, `physics_invariant` / `reference_pinned` certification markers, adversarial-review trigger, mocking discipline, `importorskip` + module-constant-monkeypatch traps) live in [`proteus-tests.md`](proteus-tests.md). When reviewing tests, apply both files: this one for marker discipline and review-pass gate, the deep-dive for the content contract.

## Sister rules (cross-link)

- [`.github/copilot-instructions.md`](../../copilot-instructions.md) "Testing Standards" -- high-level rules visible to all readers. Repo-root `CLAUDE.md` is a symlink to this file.
- [`proteus-tests.md`](proteus-tests.md) -- test quality deep-dive; the canonical source for anti-happy-path patterns and the validation certification markers.
Loading
Loading