Skip to content

[Feature]: Parameterized run sweeps over locked environments and scheduler hosts #928

Description

@carlkaub

Preflight checklist

  • I searched existing issues and discussions and this hasn't been proposed yet.

What problem does this solve?

Parameter sweeps are among the most common things a computational researcher does — run the same analysis across 20 thresholds, 12 cell types, 8 random seeds — and Open Science currently has no way to express one.

The workaround is asking the agent to loop, which serializes the work, buries 20 runs in a single conversation, and produces artifacts whose distinguishing parameter exists only as prose in the transcript. Comparing the results afterwards means reading the conversation.

Notably, every primitive needed already exists or is separately proposed: durable run history, immutable per-run artifacts, environment binding, remote hosts, and provenance that records exact inputs.

Proposed solution

A parameterized run: a script plus a parameter grid, executed once per combination, in the spirit of papermill.

  • Parameters are first-class provenance. Each run's artifact version records its parameter set as structured data, not prose. This is what makes the results comparable afterwards, and it is a small addition to what the provenance repository already records about inputs.
  • Execution targets follow the existing hierarchy. Local kernels for small grids; scheduler submission for large ones, where per-run sbatch is exactly the right shape.
  • The environment is pinned once for the whole sweep using an exported lock, so every cell of the grid is comparable by construction. A sweep whose runs used different environments is not a sweep.
  • Results surface as a grid, not 20 separate sessions — parameters on one axis, output artifacts on the other.

Fan-out across agent sessions (as opposed to across kernel runs) should defer to the orchestration design in #458 rather than inventing a second concurrency model.

Alternatives considered

  • Let the agent write a loop. Today's behavior. Serial, and the parameter that distinguishes each result never becomes queryable data.
  • Adopt Nextflow/Snakemake. The right answer for a production pipeline, far too heavy for "try eight thresholds", and it moves execution outside the app's provenance boundary.

Additional context

Sequenced last in #917 deliberately — it is mostly composition. Its dependencies are the environment lock export, the scheduler submission driver, and #458 for any agent-level fan-out.


Part of #917 (preserve-the-backend blend plan). This proposal is additive: it does not change the ACP runtime, artifact/provenance store, notebook execution semantics, or the Prisma schema.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions