Skip to content

feat(registry): viva-pde-particle composed, for the PDE + particle + ODE mash-up (composition 7c-4) - #450

Merged
jcschaff merged 2 commits into
mainfrom
feat/composition-7c4-pde-particle
Oct 27, 2026
Merged

jcschaff merged 2 commits into
mainfrom
feat/composition-7c4-pde-particle

Conversation

@jcschaff

@jcschaff jcschaff commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Part 7c-4 of docs/plan-environment-composition.md. It is the last piece before 7c-5, the live run.

Changes

  • New entries (all kind: library):
  • viva-pde-particle becomes composable:
  • members_of for a prebuilt image now includes its bundled entries' requirements, which the image installs its own way. Without this, a document of viva-pde-particle's classes alone would no longer be covered by its image and would make a mash-up. The tests caught it.
  • Compliance case viva-pde-particle/fokker-planck-ensemble: its own example, four seeded PDE + Smoldyn trials, with the emitter fully qualified (D7c.2), and the seeded results as exact expectations. To support it, a scalar expectation's field may now be a path (values.2.0).
  • One behaviour change: when viva-pde-particle's image isn't offered, a document of its classes now needs a mash-up. Only a signed-in caller may cause one, so an anonymous caller gets 401 ("sign in to have one made for this run") instead of a 400 saying the classes aren't installed.

Checked with compose-api's own code, in Docker (linux/amd64, the pinned pixi image), for a document of FokkerPlanckEnsemble + CopasiUTCStep + RAMEmitter (rerun at 21dfe46):

  1. needed_entries gives ten entries; no declared environment covers them; composable agrees, so the service would make mash-05956395cf.
  2. The generated pixi.toml locked in 45 s (462 packages).
  3. The definition's URL check (_url_checks, from 7c-2) passed against the release.
  4. pixi install --frozen succeeded.
  5. compose-api's runner ran both cases, and its evaluator passed both: viva-pde-particle's nine expectations, and pbsim-common's COPASI case against its reference CSV.
  6. find_violations admits the case document in the mash-up.

Tests: the case and the scalar path, the mash-up admitting all three classes, and the prebuilt image still chosen for viva-pde-particle's classes alone. make check passes. The full suite has only the 3 known order-dependent local failures.

EnsembleRunner (decided): it imported whatever its trial: "module:function" config named. viva-pde-particle#67 replaced it with one Ensemble class per trial function, so the case document names local:viva_pde_particle.ensemble.FokkerPlanckEnsemble and its config has no trial. The expected values are unchanged. The prebuilt image moves to the same commit as viva-pde-particle@2, an admin registration rather than a code change.

🤖 Generated with Claude Code

…ODE mash-up (composition 7c-4)

- Entries: smoldyn-vcell (the OPTION_VCELL wheel from virtualcell/Smoldyn's
  release vcell-pyhybrid-e86d552, by URL and sha256), vcell-fenics (git),
  pyvcell-fvsolver 0.11.1, zarr 3.4.1. viva-pde-particle gains its install
  (git 8c16827, the deployed image's commit; the `reference` extra), its
  conda engines and `requires`.
- A prebuilt image's members include its bundled entries' requirements, which
  it installs its own way: a document of viva-pde-particle's classes alone
  still runs in its image (D7c.3) instead of making a mash-up.
- Compliance case viva-pde-particle/fokker-planck-ensemble: its own seeded
  four-trial PDE + Smoldyn ensemble, emitter fully qualified (D7c.2). A scalar
  expectation's field may be a path (values.2.0).
- Not offered anywhere, such a document now needs a mash-up, so an anonymous
  caller is told to sign in (401) instead of refused as not installed.

Checked with compose-api's code in Docker: EnsembleRunner + CopasiUTCStep +
RAMEmitter resolves to mash-05956395cf, locks (462 packages), passes the URL
check, installs, and both cases pass compose-api's evaluator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
viva-pde-particle#67 replaced EnsembleRunner, which imported whatever "module:function" a document's
config named, with one Ensemble class per trial function. The entry installs its merge commit, the
compliance case names FokkerPlanckEnsemble with no trial in its config (the values are unchanged), and the
plan records the decision and that the prebuilt image moves to the same commit as viva-pde-particle@2.

Checked in Docker with compose-api's own code: the mash-up with COPASI locks, passes its URL check,
installs, and both compliance cases pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jcschaff
jcschaff merged commit 176a658 into main Oct 27, 2026
8 checks passed
@jcschaff jcschaff mentioned this pull request Oct 27, 2026
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