Repository navigation
Description
Tracks SEP 47: Backend-owned execution sessions, proposal PR #589.
Make the backend the sole owner of a propagation's mutable numerical state and schedule. Python constructs the scientific problem and handles files, reporters and external callbacks. Native owns its complete numerical session, including controller/monitor state, observations, accounting, export preparation and workspace lifetime. NumPy uses an independent host session in both retained precisions; native has no host-over-native kernel executor. MLX is retired early without an adapter or numerical migration/qualification work.
Where it stands
- Status: Draft. Review: In review, with both Opus 5.5 reviews and individual responses to R1–R17 and A1–A6 recorded in Part III. The re-review accepts the original responses; its remaining checkpoint/device-scope gaps and smaller corrections are addressed. Implementation: not started.
- Requires: SEPs 21, 22, 24, 25, 29, 33, 39, 44, 45 and 46. SEP 46 / SEP 46: calibrating the native backend to its machine #582 is now Final.
- Revised against main at eee57c65. Original measurements retain their own baseline and window.
- Reports were read, not rerun. No new performance measurement or universal speedup is claimed.
What comes next
- Resolve the original seven architectural decisions, including API freedom (2026-11-09).
- Record both independent AI review rounds and answer R1–R17 and A1–A6; preserve the reviewer's original reasoning.
- Resolve the delivery, native-interface, restart and control arbitrations with John Travers (2026-11-09).
- Include MLX retirement, A saved plane of a large Cartesian field costs about 3 s in copies, and a kept native save on Linux is unexplained #346/The node chunk is sized at translation, whatever the device, and each chunk is a kernel launch #361/Native CPU: a stage's forward transforms as one batched region (#560 item 4) #584 and the revised sequencing; clarify phase 1 as design readiness without a minimum speedup (2026-11-09).
- Review the revised whole proposal and record the human/frontier-AI review status required by SEP 0.
- Record explicit acceptance, deferral or rejection.
- If accepted, implement the five phases through a small number of coherent phase PRs under the recorded SEP 0 exception. Every merge leaves main usable, reports remaining adapters and preserves required qualification; Final requires their removal and complete qualification.
Agreed direction — 2026-11-09
- Complete backend-owned numerical sessions; structured scientific descriptions with backend-owned packing/execution; private backend layouts.
- Native session only. Custom Python controllers and benchmark-only comparison methods remain reference-only. Built-in production capabilities, including coupled flows and carrier tables, are ported.
- Explicit group ownership and coarse native scheduling, preserving the existing distinction between per-member boundary outcomes and group-fatal numerical failures.
- API compatibility is not a constraint. Freely break APIs for cleaner code or structure; keep solprop working and tests meaningful/passing, update callers and documentation, and list changes in the changelog. No shims, deprecation periods or migration guides.
- Record restart retention/restoration/reset decisions and reasons, with one warning on resume for unexpectedly omitted Adams history. Full RK continuation is separate work in Qualify full Runge–Kutta checkpoint continuation #596.
- Native atomic stop token checked between attempts, finishing the current attempt safely; retain bounded returns for Python signals. Snapshot requests are independent of
step_planes=1and persist valid checkpoint/history before copying. - Retire MLX at the start of phase 2. Retain NumPy single precision; Julia is a separate future possibility, not a replacement dependency.
- Include A saved plane of a large Cartesian field costs about 3 s in copies, and a kept native save on Linux is unexplained #346 copy reduction, The node chunk is sized at translation, whatever the device, and each chunk is a kernel launch #361 backend-owned device chunks and the measured Native CPU: a stage's forward transforms as one batched region (#560 item 4) #584 CPU transform experiment. They need no separate prerequisite PRs; a documented negative Native CPU: a stage's forward transforms as one batched region (#560 item 4) #584 result does not block the architecture. Attribute their gains separately from session changes.
- Phase 1 is a design-readiness checkpoint: single ownership, lifecycle correctness, bounded traffic/storage, deletion plan and small difficult-case probes. A sound prototype with neutral performance can proceed; protocol defects are revised, and unavoidable tradeoffs come to the maintainer with context and alternatives.
- Land descriptors/reference/service loop early (phases 1–2); common native observations/export/groups follow (phase 3); bulk difficult ports and CUDA/HIP qualification come later (phase 4). Timeboxes trigger reports and explicit decisions, never automatic capability cuts. Final deletion and qualification are phase 5.
- Structural simplification is a valid primary benefit. Exact identical-input controller/lifecycle tests accompany independent numerical qualification. Per-case and aggregate non-regression checks prevent small widespread slowdowns being hidden by the 5% investigation threshold.
These decisions do not constitute formal acceptance of the whole proposal. The SEP remains Draft until John Travers has read it and explicitly requests acceptance.
Related
- Design request Write a SEP for the step loops and the kernel seam: one march protocol, the batch axis, the integrator and its tolerance #110: march protocol, batch axis, route union and tolerance split.
- Included workstreams A saved plane of a large Cartesian field costs about 3 s in copies, and a kept native save on Linux is unexplained #346, The node chunk is sized at translation, whatever the device, and each chunk is a kernel launch #361 and Native CPU: a stage's forward transforms as one batched region (#560 item 4) #584; related live-buffer accounting
node_budgetstill counts 20 column-equivalents per node, about three times the live group buffers #349 and the built-in execution gap A z table's carrier frame steps solprop's Python march instead of the native one #255. - Related work
PiecewiseChebyshevsums every coefficient row and ignores an interval's recorded degree #351, A lockstep batch of small runs on a GPU reaches a fraction of the throughput of large ones #356, Device steps are bound by kernel launches and buffer copies, not by arithmetic #357, Native performance ideas from the Julia backend experiment #560, Native CPU: transforms' width by rows and row length, not element count #587, Per-step plasma statistics cost about a source evaluation under Adams #300, Each requested population statistic rescans every node #301, The Python Adams march: per-step allocations and casts #104 and One host statistics module fed by a backend hook #107. - Deferred full RK continuation: Qualify full Runge–Kutta checkpoint continuation #596. Field/running checkpoints retain the existing format and rounding-level normalization inverse; coincident saved planes share their export.
- Every native port's CUDA/HIP disposition and actual-device qualification gate is explicit in §6.3; no additional production device capability is dropped.
- SEP 46 landed no chunk default: The node chunk is sized at translation, whatever the device, and each chunk is a kernel launch #361 is now included in phase 3 lowering and phase 4 device qualification. Preserve an independently qualified rule if concurrent work lands first. The phased-merge exception is also indexed in SEP 0's History.
- Evidence: Native CPU push: spin within native work, top-tier budget, SLEEF on macOS, lower thresholds under libomp, kernel fixes #576, A run's fixed host cost, a fresh process's BLAS spin, and the edge's read backstop #585, Native: free-space stage propagators through vector maths; x86-64-v4 against v3 #586, SEP 46: calibrating the native backend to its machine #582 and Julia backend experiment (do not merge) #559.
- Closed issues A per-backend buffer plan behind both allocation and
estimate_memory, including the monitor's rows #89 and The native Adams controller stays on the host on CUDA and HIP #362 remain accounted for: no restored memory admission or mandatory device-resident controller.
Drafting or accepting the SEP does not close implementation issues.
Done when
The SEP reaches Final, Rejected, Withdrawn or Superseded, and this tracking issue closes with it. A Deferred SEP keeps it open. At Final, replaced driver machinery and transitional adapters are removed, the admitted capabilities are working, and numerical, lifecycle, export, actual-device and performance qualification is complete.
Activity
jtravs commentedon Nov 9, 2026
Implementation started: milestone 1 (phases 1–2) is draft PR #605 on
feature/sep-0047-contract. Phase 3 (native session) is developed on a branch stacked on it plus #598 and #602.