Skip to content

api: move the pause image from ActorTemplate to SandboxConfig - #848

Merged
Julian Gutierrez Oschmann (juli4n) merged 1 commit into
agent-substrate:mainfrom
BenTheElder:pause-image-to-sandboxconfig
Aug 11, 2026
Merged

api: move the pause image from ActorTemplate to SandboxConfig#848
Julian Gutierrez Oschmann (juli4n) merged 1 commit into
agent-substrate:mainfrom
BenTheElder:pause-image-to-sandboxconfig

Conversation

@BenTheElder

Copy link
Copy Markdown
Collaborator

The pause image holds the sandbox's namespaces and runs no workload code. It is an implementation detail of the sandbox, not something actor authors pick, so it belongs with the sandbox binaries that already moved off the ActorTemplate onto the cluster-scoped SandboxConfig.

It now travels with those binaries end to end: resolved from the pool's SandboxConfig, carried on ateletpb.SandboxAssets rather than WorkloadSpec, and recorded in the per-actor sandbox record so Checkpoint pins it into the snapshot manifest and Restore rebuilds the sandbox from the image the snapshot was taken with (the golden's on a DATA_ON_GOLDEN restore). A record without one is rejected outright rather than pulling an empty image.

  • Tests pass
  • Appropriate changes to documentation are included in the PR

The pause image holds the sandbox's namespaces and runs no workload
code. It is an implementation detail of the sandbox, not something
actor authors pick, so it belongs with the sandbox binaries that
already moved off the ActorTemplate onto the cluster-scoped
SandboxConfig.

It now travels with those binaries end to end: resolved from the
pool's SandboxConfig, carried on ateletpb.SandboxAssets rather than
WorkloadSpec, and recorded in the per-actor sandbox record so
Checkpoint pins it into the snapshot manifest and Restore rebuilds
the sandbox from the image the snapshot was taken with (the golden's
on a DATA_ON_GOLDEN restore). A record without one is rejected
outright rather than pulling an empty image.
@juli4n
Julian Gutierrez Oschmann (juli4n) merged commit da8414b into agent-substrate:main Aug 11, 2026
11 checks passed
@BenTheElder
Benjamin Elder (BenTheElder) deleted the pause-image-to-sandboxconfig branch August 11, 2026 14:59
eliranw added a commit to eliranw/substrate that referenced this pull request Aug 11, 2026
A non-positive limit means "unlimited" in the OCI spec, so it is not a claim on
the guest. Summing it let a negative offset a sibling's real limit and slip the
total past the envelope check: 1536Mi + 1024Mi + (-1536Mi) reads as 1024Mi
against a 2048Mi guest, so a 2560Mi overrun was accepted. cpuLimitMillis already
skipped a non-positive quota; memory now matches.

Also repoints the SandboxConfig anchor in api-guide.md, which went stale when
agent-substrate#848 renamed the section.

Signed-off-by: Eliran Wolff <eliranw@nvidia.com>
haiyanmeng added a commit to haiyanmeng/substrate that referenced this pull request Aug 11, 2026
unmarshalSandboxRecord rejects a manifest with no pauseImage since agent-substrate#848,
but TestUploadLocalCheckpointDir's fixtures still write one without --
the two landed together and neither saw the other -- so eight subtests
fail on the manifest read before they reach what they assert.

Fill the field in writeLocalSnapshot rather than in each fixture: none
of these subtests is about the pause image, and the one that is
(TestSnapshotManifestRequiresPauseImage) builds its manifest by hand.
haiyanmeng added a commit to haiyanmeng/substrate that referenced this pull request Aug 11, 2026
agent-substrate#848 moved the pause image onto the SandboxConfig and made the
ActorTemplate schema strict about it, so the egress demo's template is
now rejected outright: "unknown field spec.pauseImage". Nothing deploys,
and the networking suite fails on a missing ActorTemplate.

The install step reported success anyway, which is why this took an e2e
run to find. The dispatcher runs a demo's _cmdline from an `if`, which
disables errexit for everything under it, and _cmdline returns 0 no
matter what the deploy did. Make the egress deploy exit on failure so
the next one says so where it happens.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/api User-facing API changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants