Skip to content

docs: cross-project links use absolute URLs - #2

Merged
NicholasEhsanRoy merged 1 commit into
mainfrom
docs/cross-project-link-fix
May 7, 2026
Merged

docs: cross-project links use absolute URLs#2
NicholasEhsanRoy merged 1 commit into
mainfrom
docs/cross-project-link-fix

Conversation

@NicholasEhsanRoy

Copy link
Copy Markdown
Contributor

Avoid MyST resolving ../mime/ style relative links as internal-doc xrefs. Render correctly when the docs are built as a subproject of microrobotica.org.

MyST's relative-path links (../mime/, ../) got resolved as
internal-doc xrefs and rendered as href="#../mime/". Use full
microrobotica.org URLs instead — same outcome on the deployed site,
no warning, working link.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@NicholasEhsanRoy
NicholasEhsanRoy merged commit efec70d into main May 7, 2026
5 checks passed
NicholasEhsanRoy added a commit that referenced this pull request May 19, 2026
…pling

M5: HeatNode.update_padded for sharded 1-D heat under any shard count.
ShardedStencilNode caches its shard_map wrapper per state-shape and
wraps it in jax.jit so eager .update() calls stay fast (1500x faster
than bare shard_map on CPU). Sharded heat converges to the Fourier
analytic solution within 5% on 2/4/8/16-device meshes; 4th-order
stencil (halo=2) works the same. MIME suite (669 tests) still green
under the compat shim.

M6: _stream_padded -- halo-aware streaming via indexed slicing,
replacing jnp.roll's periodic wrap for sharded LBM. Bit-exact
regression vs legacy _stream on periodic-padded input (3 seeds,
D3Q19 and D2Q9). LBMNode.update_padded implements collide+stream on
the padded distribution; collision runs on the full padded array so
streaming reads across the halo see what the neighbour shard would
have produced (BGK is purely local, so this matches exactly).
LBMNode._has_walls flag set at __init__ so the JIT-traceable check
in update_padded stays at Python level. Walls + Zou-He BCs under
sharding are deferred to v0.2.x.

M7: Sharded LBMNode regression: matches unsharded for one step and
50 steps on 8-device 2x4 / 4x2 and 16-device 4x4 pencil meshes; mass
matches unsharded step-for-step. Full Hagen-Poiseuille validation
needs walls/BCs and is the next thing on the v0.2.x list.

M8: Multi-device gradient audit: jax.grad through a 5-step sharded
heat rollout matches centred FD to rtol=5e-3; gradient remains
finite through 50-step rollouts. ShardedStencilNode integrates with
GraphManager -- single-node compile+step, two-node edge-coupled run
(boundary scalars via transforms), and run_scan all work and stay
finite. MIME gate #2: 669 tests pass.

Total cloud/multigpu + halo_width + lbm_stream_padded: 112 tests
across M1-M8. Full in-tree suite ~1450 (sharded gradient adds 2;
not all run in the fast multigpu subset).

M9 (RunPod smoke) deferred: local CPU virtual-device coverage is
comprehensive enough that the only thing real GPUs would add is
NCCL semantics + perf numbers -- both flagged for when GPU access
is available.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
NicholasEhsanRoy added a commit that referenced this pull request May 19, 2026
Introduces the v0.2 surrogates restructure without breaking a single
v0.1 import path.  Subpackage layout per the brief:

  surrogates/primitives/  — reusable NN building blocks; future-home
                            for decoders/encoders pulled out of MIME
                            (currently empty + documented).
  surrogates/weights/     — save_weights / load_weights /
                            load_train_result (re-export of checkpoint).
  surrogates/training/    — lazy re-exports of trainer / callbacks /
                            physics_losses (equinox+optax only loaded
                            on attribute access).
  surrogates/replace/     — was a leaf module; promoted to a
                            subpackage so future helpers can live
                            alongside replace_node without growing
                            one monolithic file.  Public path
                            `from maddening.surrogates.replace import
                            replace_node` is unchanged.

Tests (38 new in tests/surrogates/test_subpackage_layout.py):

  - primitives subpackage exists, has __all__, no optional-dep import
  - weights re-exports the three checkpoint functions; the new path
    yields the SAME object identity as the legacy import (no
    accidental shadowing).
  - training subpackage lazy __getattr__ resolves Trainer / Callback
    / loss names; unknown attrs raise AttributeError; dir() reports
    every __all__ name; access is cached on repeat lookup.
  - replace/__init__.py re-exports replace_node; legacy
    `from maddening.surrogates import replace_node` keeps working;
    `_core` submodule present.
  - Parametrised back-compat test pins 14 legacy import paths so
    every (module, attr) pair from v0.1 stays callable after the
    restructure.
  - Top-level surrogates package re-exports (SurrogateArchitecture,
    SurrogateNode, DatasetGenerator, lazy Trainer, ...) unchanged.

Out of scope here (queued for v0.2.x or later):
  - Pulling MIME's cholesky_decoder + decoder zoo into
    surrogates/primitives/ — requires cross-repo move + MIME PR.
  - Decoupling SurrogateTrainer from the SurrogateArchitecture ABC.
  - File-level moves of trainer/callbacks/physics_losses into
    training/.  The lazy re-export pattern lets us defer the
    physical move without breaking imports.

Full MADDENING suite: 1499 passed (up from 1461), 3 skipped, no
regressions across 144 surrogate-specific tests.

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
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>
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