TL;DR The original agenda (2026-08-07) collected 13 open questions from the muphys + TMX integration. The parallel-coupling redesign of 2026-08-18/19 and the v08 validation of 2026-08-20 resolved most of them — the outcomes are documented in the as-built reference. This page keeps only the points still open.

Open points

B1. Input-contract validation

Context (updated). The output side is now enforced by construction — the driver routes on outputs_properties. The input side is still a convention: that as_component_input() keys cover the component’s inputs_properties is checked by one tmx unit test, not by the driver.

Question. Cheap registration-time completeness check in PhysicsDriver.__init__ (fail at construction, not at step N)? Units/dims interpretation stays with OngChia’s proposal.

Suggested position. Yes to the completeness check — a few lines, zero step-time cost.

B4. Read-only by convention

Context (updated). Pointers everywhere, by design: the façade binds model-state pointers and as_component_input() returns references. The frozen-entry invariant is now tested (the entry state must be bitwise untouched until apply) — but nothing enforces that a component doesn’t mutate an input at runtime.

Question. Document-and-trust (protocol docstrings now state it), or an enforcement/ownership notion in a future StateView?

Suggested position. The tested invariant + docstrings are proportionate for now; revisit with OngChia’s proposal.

C1. Physics diagnostics → output files

Context (updated, simpler than before). All per-process diagnostics now land in one place — driver.diagnostics[process][name], ICON field% spirit — instead of being scattered across process states. The IO hook design reduces to: walk that dict, wrap fields as DataArrays, register with the IO monitor.

Question. Hook it into the NetCDF writer at init (names from outputs_properties metadata) — when the APE run needs scientific output.

Suggested position. Straightforward now; schedule with the first scientific use.

C4. Ocean bulk-flux provider

Context (updated, downgraded from blocker to refinement). The v08 validation showed the zero-flux residual is ~0.3 % relative (theta_v) and below — the 11.3 K gap previously attributed to the missing fluxes was mostly granule/coupling issues, since fixed. The seam is unchanged: open-water branch only, prescribed SST 303.15 K, compute_sfc_roughness → Louis exchange coefficients → q_sat(SST) → compute_sfc_fluxes (mo_tmx_surface.f90).

Question. Scope + interface as before — plus the clean validation experiment: a reference run without surface fluxes would isolate the pure coupling error (expected: residuals drop to the noise tier everywhere).

Suggested position. Own design session; nothing else blocks on it.