docs: canonical acronym expansions - #3
Merged
Conversation
* MADDENING — drop the hyphen: "Data-Enhanced" → "Data Enhanced" in the Data Enhanced Neural-network INteracting Graph expansion. * MADDENING — replace the old "Modular Acausal Dataflow Differential Equation Node Network" tagline on docs/index.md with the canonical expansion (was a leftover from an earlier rename). * MICROROBOTICA — fix capitalisation in cross-references: "MICROROBOTs Iterative Simulation" → "MICROROBOTics Iterative simulation" (mirrors the proper expansion: it's "ROBOTics", not "ROBOTs"). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
NicholasEhsanRoy
added a commit
that referenced
this pull request
May 19, 2026
Adds the third tensor channel on `SimulationNode`:
* **State** — evolves in time, flows through `update(state, ...)`.
* **Parameters** — Python-level constants in `self.params`.
* **Static data** — array-valued constants closed over by `update`
(meshes, wall masks, lookup tables). Default `{}` so existing
nodes are unaffected.
API
* `SimulationNode.static_data` property — override in subclasses
that carry mesh/LUT/basis arrays.
* `SimulationNode.static_data_hash()` — hashes `(key, shape, dtype)`
tuples (arrays) and `(key, repr(value))` (scalars). Contents are
NOT hashed (a 1 GB mesh has the same hash as long as shape+dtype
don't drift).
* `GraphManager._static_data_hashes` — snapshot taken at
`compile()`; `_check_static_data_dirty()` recomputes per-node
hashes at each `step`/`run*` entry and sets `_dirty = True` if any
drifted. Typical drift case: `replace_node` swaps a different
mesh size in; the next `step()` silently recompiles.
The 7 step/run entry points in GraphManager now invoke
`_check_static_data_dirty()` ahead of the standard `_dirty` check.
Checkpoint contract: static_data is **not** serialized. The decision
is documented in DESIGN.md §2: nodes carrying static_data must make
it reconstructable from `self.params` (the static_data_provider
pattern). FVM meshes and USD geometry would otherwise blow up
checkpoint files for negligible recovery gain.
Tests (22 new in tests/core/test_static_data.py):
- default empty static_data + hash=0 on pointwise nodes
- override semantics for JAX-array and scalar static data
- hash is by shape+dtype not contents (1 LUT vs another with the
same shape hash identically)
- shape/dtype/scalar-value changes do change the hash
- GraphManager snapshots hashes on compile
- mutation post-compile triggers `_dirty = True` automatically
- `step()` after such mutation recompiles transparently
- `remove_node`+`add_node` round-trip refreshes the hash snapshot
- constant static_data does NOT trigger recompile (5 steps, 0 recompiles)
- large (1M-element) LUT smoke test
- replace-node-style swap of pointwise → static_data node dirties graph
Full MADDENING suite: 1446 passed (up from 1424), 3 skipped, no
regressions.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
NicholasEhsanRoy
added a commit
that referenced
this pull request
May 19, 2026
Items #3, #4, #5, #6, #7, #8, #9 marked ☑ complete. Item #2 marked ◐ in-progress: the subpackage scaffolding (primitives/, weights/, training/, replace/) landed with full backwards-compat; the MIME decoder-zoo extraction and the SurrogateArchitecture ABC decoupling remain v0.2.x follow-ups. Per-item caveats called out in the section headers: #4 — ships as warnings in v0.2; v0.2.1 flips to hard errors. #7 — credential lifecycle for AWS/GCP fully tested; live end-to-end launch deferred (would require real cloud accounts). #8 — file:// + manifest path covered; spot-kill end-to-end test deferred until RunPod sandbox is wired in CI. #1 sharding remains ◐ — M9 multi-GPU smoke test still pending; all M1-M8 milestones plus the LBM-Guo / wall_mask / replace_node v0.2.x follow-ups are complete. Full MADDENING suite after all eight: 1552 passed, 3 skipped, 0 failed — no regressions across the sequence. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
NicholasEhsanRoy
added a commit
that referenced
this pull request
May 19, 2026
Goes through every subtask box and updates status: [x] = done; [~] = partial (caveat in trailing note); [ ] = deferred Marks v0.2 item #1's last v0.2.x follow-up (`static_data` channel) as done now that #3 has landed. No content changes beyond status — narrative text and metrics are unchanged. Remaining open boxes are the cross-repo / live-cloud / docs items that need either MIME-side work, real cloud credentials, or a written migration guide: - #2: decoder zoo pull-over from MIME; SurrogateTrainer ABC decoupling; physical move of trainer/callbacks/physics_losses out of the v0.1 leaf modules; CHANGELOG note - #3: checkpoint provider-config pattern; sharded-static_data semantics; HeatNode / FVM mesh consumer migrations - #4: lab-facing migration guide; v0.2.1 flip-to-errors tracking issue; MIME-graph smoke check - #5: runnable LBM-velocity subscription demo script - #6: per-field change-detection wire-format extension; explicit latency-budget timing assertion; 256³ live benchmark - #7: live end-to-end launches on Lambda / AWS / GCP - #8: S3/GCS/Azure blob URLs in download_and_load_state; real RunPod spot-kill end-to-end; top-level cloud_resume.md - #9: standalone "profile an LBM step" example Plus #1 M9 (RunPod multi-GPU smoke). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
NicholasEhsanRoy
added a commit
that referenced
this pull request
May 19, 2026
First in-tree consumer of the static_data channel. HeatNode now:
* Builds its grid-coordinate array once in __init__ (instead of
rebuilding a fresh JAX array on every _grid_x access).
* Exposes it via the static_data property as {"grid_x": ...}.
* Keeps the _grid_x property as a thin alias for callers that
haven't migrated to static_data yet.
This closes the v0.2 brief's 'at least one node uses static_data
for real' bullet under item #3.
The checkpoint/restore round-trip works without any additional
plumbing: HeatNode's __init__ reconstructs grid_x from self.params
(length, n_cells, optional grid_points list), so a load_state call
followed by a re-constructed graph picks up the right grid for
free — verified by test_checkpoint_roundtrip_with_static_data.
Tests (9 new in tests/core/test_static_data.py::TestHeatNodeStaticData):
- grid_x exposed via static_data with correct shape
- uniform-grid coords match np.linspace at cell centres
- non-uniform grid_points argument round-trips through static_data
- static_data['grid_x'] has stable object identity across calls
(so JAX doesn't retrace per step)
- _grid_x property aliases static_data['grid_x'] (same id)
- static_data_hash() differs between different n_cells values
- static_data_hash() ignores grid_points *contents* (only shape+dtype)
— same n_cells with different point positions hash the same
- end-to-end checkpoint round-trip with a non-uniform grid restores
both the temperature state and rebuilds the grid from params
- HeatNode in a GraphManager steps successfully through the
static_data closure path
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
NicholasEhsanRoy
added a commit
that referenced
this pull request
May 19, 2026
The autonomous follow-up batch landed six concrete artifacts that close out the remaining subtask boxes: #3 — HeatNode migration to static_data + checkpoint round-trip (9e1fc5b) #4 — edge_validation_migration.md guide (9e8e72d) #5 — runnable WS subscribe demo (76f606e) #6 — encode-latency budget test + slow marker (fc3a6c8) #8 — cloud_resume.md top-level guide (9e8e72d) #9 — profile_lbm_step example (f70ae23) Plus the umbrella docs work in 9e8e72d: - release_notes/v0.2.md - developer_guide/versioned_docs.md (multi-version design) - _static/switcher.json - installation.md row for the [compression] extra - index.md toctree wiring Remaining open boxes (rolled to v0.2.x / v0.3): - #2 decoder pull-over from MIME; ABC decoupling; CHANGELOG note - #3 sharded-static_data semantics; FVM mesh migration - #4 GitHub issue for the 0.2.1 flip; MIME-graph smoke check - #6 per-field-skip wire format - #7 live cloud-launch validations - #8 s3:// / gs:// URL schemes; live RunPod spot-kill round-trip - #1 M9 multi-GPU smoke Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
NicholasEhsanRoy
added a commit
that referenced
this pull request
May 20, 2026
Marks the four pre-tag design decisions (commit ec70c19) as resolved across items #3, #4, #1, #8: #3 — sharded static_data semantics decided + documented; HeatNode migrated to StaticArray(shard, axis=0); Definition-of-done is fully ticked. #4 — v0.2.1 flip trigger pinned to MIME-migration-complete; units permanently advisory (closed in UnitMismatchWarning docstring). #1 — requires_halo warning escalated to FutureWarning and now references the new MigrationError that takes over in v0.3. Grep CI for unmigrated callsites lives on MIME's side. #8 — schema version bump policy pinned (N reads N and N-1; older raises CheckpointVersionError naming the intermediate release). Policy is the module docstring on checkpoint.py + enforced by verify_manifest. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Normalises MADDENING / MIME / MICROROBOTICA expansions across all prose and the package docstring. Drops the hyphen in 'Data Enhanced'; replaces the legacy 'Modular Acausal Dataflow Differential Equation Node Network' tagline; fixes 'MICROROBOTs Iterative Simulation' → 'MICROROBOTics Iterative simulation' in cross-refs.