Skip to content

docs: canonical acronym expansions - #3

Merged
NicholasEhsanRoy merged 1 commit into
mainfrom
docs/correct-acronym-expansion
May 8, 2026
Merged

docs: canonical acronym expansions#3
NicholasEhsanRoy merged 1 commit into
mainfrom
docs/correct-acronym-expansion

Conversation

@NicholasEhsanRoy

Copy link
Copy Markdown
Contributor

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.

* 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
NicholasEhsanRoy merged commit 7b9674b into main May 8, 2026
5 checks passed
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant