Version: v0.0.1

Upstream RFC drafts

Status: drafts, 2026-10-13, filed upstream as issues on 2026-10-23 (the Issue column). Needed-by dates updated 2026-10-14 for milestone M4b (D37). Upstream progress updated 2026-10-26 (the table below the list). The 2026-10-14 reuse audit (survey §6) verified that each ask names a real gap: none of U1–U15 duplicates existing upstream code.

These are the changes EarthSciIntegrator needs in sibling repos. Each draft follows the EarthSciAST RFC format and cites current upstream code by file:line. Anything a draft could not verify is labelled as an assumption. The integrator-side context is in ../architecture.md §13 and ../decisions.md .

#TargetDraftIssueNeeded by
U1EarthSciAST specsolver.external : a document points at its run config (esm 1.3.0)EarthSciAST#538M2
U2EarthSciAST flattenPer-term provenance : equation_contributions beside flattened equationsEarthSciAST#539M2
U3EarthSciAST runtimesRange-restricted RHS : operator subsets over tiles with halos, and lanes; bitwise assembly contractEarthSciAST#540M3, M5
U4EarthSciAST runtimesReentrant RHS : Rust RhsProgram (Send + Sync), plus a reentrant Julia entryEarthSciAST#541M3
U5EarthSciASTFloat32 integration : what a declared Float32 governs, and what the integrator ownsEarthSciAST#542M5g, M7
U6EarthSciASTStrip and expose : events, parameter updates and algebraic equations returned to the caller; standalone observed kernelsEarthSciAST#543M4b (eqice on shared memory, D37)
U7EarthSciASTDiffForcing and array-parameter columnsEarthSciASTDiff#1M4
U8EarthSciASTDiffSecond-order bands for Rosenbrock discrete adjointsEarthSciASTDiff#2M4
U9EarthSciASTDiffFiltered faq, non-+ reductions, recurrences ; column_block structure; VJP modelsEarthSciASTDiff#3M4, M4b, M7
U10EarthSciASTDiffProduction-rate Rust assembly , after a catch-up stepEarthSciASTDiff#4M3
U11EarthSciIOAsync prefetch and rank windowsEarthSciIO#8M5 (prefetch from M3)
U12EarthSciIORust streaming region writer : commit protocol, indexed recordsEarthSciIO#9M4, M5
U13EarthSciAST.jl (Reactant ext)Traceable per-operator StableHLO for the Julia GPU pathEarthSciAST#544M5g
U14EarthSciAST specDeclared vs unspecified precision (D29)EarthSciAST#545M5g, M7
U15EarthSciAST.jlRecurrence execution , native and StableHLOEarthSciAST#546M7
U16EarthSciAST specsolver.time_span : the run interval a document asks for (D60)EarthSciAST#550M2
U17EarthSciASTDiffTime-derivative bands : ∂f/∂t as a specified, golden-gated band model, for Rosenbrock’s f_tEarthSciASTDiff#11M3 (restores M2’s time-dependent Rosenbrock cases)

Upstream progress (2026-10-26; U7, U8 and U9 updated 2026-11-01 for EarthSciASTDiff 0.2.0; the M2 pins updated 2026-11-04 for EarthSciAST 0.9.0 and EarthSciASTDiff 0.4.0, and 2026-11-08 for EarthSciAST 0.10.0 and EarthSciASTDiff 0.5.0):

#State
U1Done: released in EarthSciAST v0.4.0 (esm 1.3.0), esm-spec §2.2.6, with the location accessor.
U2Done: released in EarthSciAST v0.4.0, equation_contributions (esm-libraries-spec §4.7.5), plus Rust’s equation_lifted.
U3Done: released in EarthSciAST v0.5.0 (EarthSciAST#557; esm stays 1.3.0), range-restricted right-hand sides over tiles and lanes in Julia and Rust (API_SPEC §5.8, CONFORMANCE_SPEC §5.50). Published 2026-10-26 to Julia’s General registry, crates.io and PyPI.
U4Done: released in EarthSciAST v0.5.0 (EarthSciAST#561), rhs_program with forcing sets in Julia and Rust’s RhsProgram (Send + Sync) (API_SPEC §5.8, CONFORMANCE_SPEC §5.51). Rust’s M2 end-to-end runs can use it (spec/toy-problems.md §4).
U10Merged on EarthSciASTDiff main, closing EarthSciASTDiff#4: catch-up (W0, #5), trimmed evaluation document (W1, #8), scatter plans (W3, #10), Rust production assembly (W2, W4, W5, #12). Released in EarthSciASTDiff 0.1.0, its first registered release (commit 743d140; registered in Julia’s General registry and published on crates.io on 2026-10-30).
U7Done: merged on EarthSciASTDiff main (EarthSciASTDiff#28, closing #1) and released in EarthSciASTDiff 0.2.0 (registered in Julia’s General registry, 2026-11-01): forcing-buffer and array-parameter columns (wrt = "forcing") in Julia, Rust and Python (esm-jacobian-spec.md §4.3). Array parameters are now columns on the parameters axis; 0.1.0 dropped their cells.
U8Done: released in EarthSciASTDiff 0.2.0 (EarthSciASTDiff#29, closing #2): second-order bands ("wrt": [a1, a2], esm-jacobian-spec.md §4.4) and the hvp_document product document in Julia, Rust and Python.
U9Mostly done: released in EarthSciASTDiff 0.2.0 (EarthSciASTDiff#35 and #42, closing #3): filtered faq, max/min/* reductions and the max_product semiring, value-indexed reads, column_block structure and factorization plans, and the vjp_document product document. Causal recurrences (esm-jacobian-spec.md §4.5) are differentiated in Rust and Python only; Julia waits on EarthSciAST.jl executing recurrences (U15).
U16Done: released in EarthSciAST v0.4.0 (esm 1.3.0), esm-spec §2.2.7, with resolve_time_span in every binding.
U17Done on EarthSciASTDiff main (EarthSciASTDiff#13, closing #11): esm-jacobian-spec.md §4.2 specifies wrt: "time" bands, §8 their evaluation document, and the tgrad_photolysis goldens gate them in Julia, Rust and Python. Released in EarthSciASTDiff 0.1.0, its first registered release (commit 743d140; registered in Julia’s General registry and published on crates.io on 2026-10-30).
othersOpen. M2 is written against EarthSciAST 0.10.0 and EarthSciASTDiff 0.5.0 (spec/plan.md §0.2). EarthSciASTDiff 0.5.0 accepts EarthSciAST 0.6 through 0.10 in Julia and >=0.5, <0.11 in Rust, and since 0.4.0 carries the structure-only mode the planner’s pass 2 reads (EarthSciASTDiff#59), and SciMLBase is no longer its concern: 0.2.0 removed its evaluators and its SciMLBase extension. The two upstream gaps M2 worked around in its derived documents are closed: EarthSciAST 0.8.0 records a lifted state’s index sets (EarthSciAST#623), and EarthSciASTDiff 0.3.0’s evaluation document of a flattened system loads and builds (EarthSciASTDiff#49, #50), so the planner writes it as the Jacobian document (spec/plan.md §6.2, §10 items 1 and 2).

Cross-cutting prerequisites (architecture §13):

  • esm 1.3.0 for the three model repos.
  • EarthSciAST’s unmerged fix/f59-mounted-leaf-precision branch (for U14).
  • A spec clarification permitting batched recurrence positions (for U15).
  • The EarthSciASTDiff Rust/Python catch-up (U10 step W0).