Skip to content

feat: add systemInfo volume source with actorIdentity data source - #803

Draft
Max Thompson (thompsonmax) wants to merge 3 commits into
agent-substrate:mainfrom
thompsonmax:actor-identity
Draft

feat: add systemInfo volume source with actorIdentity data source#803
Max Thompson (thompsonmax) wants to merge 3 commits into
agent-substrate:mainfrom
thompsonmax:actor-identity

Conversation

@thompsonmax

Copy link
Copy Markdown
Collaborator

Part of #802 (first PR: the actorIdentity data source; does not close the issue).

What changed and why

Adds a systemInfo volume source to ActorTemplate — a read-only volume whose files are generated by atelet on every Run/Restore, analogous to Kubernetes projected volumes. The initial data source, actorIdentity, writes the actor's own name to a configurable relative path:

spec:
  volumes:
  - name: system-info
    systemInfo:
      dataSources:
      - actorIdentity:
          path: actor-id
  containers:
  - name: main
    volumeMounts:
    - name: system-info
      mountPath: /run/ate   # the actor reads /run/ate/actor-id

Because the files are regenerated before the sandbox starts, they carry the resumed actor's own values regardless of what checkpointed state it boots from — the property the old hardcoded /run/ate identity mount provided, now as an explicit, extensible API that future data sources (identity JWTs, certificates — see #802) can slot into.

Behavior change: the automatic /run/ate/actor-id mount is removed; actors must opt in by declaring the volume (the e2e identity probe in this PR is the reference example).

Reviewer notes:

  • Over half the diff is vendored + generated code (cmd/atelet/internal/third_party/atomicwriter/, atelet.pb.go, zz_generated.deepcopy.go, the CRD manifest). The hand-written surface is ~700 lines.
  • System-info volume roots live under a new ActorPath/system-info/ host dir, deliberately separate from durable-dir/: the micro-VM durable machinery snapshots everything under the durable-dir root, and generated identity files must never be captured into snapshots.
  • Known gap (pre-existing, tracked in Add a SystemInfo volume source to ActorTemplate for delivering per-actor generated files #802): the micro-VM runtime drops all non-default mounts, so systemInfo volumes are gVisor-only for now, which is the same limitation the old identity mount had.
  • The e2e identity suite exercises the new API end-to-end with unchanged probe binary and assertions. It runs in the kind-cluster CI job (not run locally).

Checklist

  • Issue is linked above
  • Tests pass locally (go test ./...)
  • Root-gated tests pass if applicable (N/A — no root-gated packages touched)
  • Documentation updated if behavior changed (docs/api-guide.md: SystemInfo Volumes section with example)

Taahir Ahmed (ahmedtd) and others added 3 commits August 7, 2026 15:24
This commit defines a new volume type, SystemInfoVolume, that will serve
a similar purpose as Projected volumes in Kubernetes.  It will support
writing information from multiple sources to automatically-updating
files in the Actor's filesystem.

For a first pass, I have converted the existing hardcoded Actor ID file
to be one of the available information sources in a SystemInfoVolume.

Further work will add Actor Identity JWTs and Actor Identity
certificates.
Complete the initial actorIdentity data source support:

- e2e: declare a systemInfo volume in the identity probe's ActorTemplate,
  mounted at /run/ate, replacing the removed automatic identity mount so
  the restore-identity regression gate exercises the new API.
- Validate actorIdentity paths at admission: must be a clean relative
  Unix path (no absolute paths, '..', '.', '//', ':', or control
  characters), and paths must be unique within a volume. Previously bad
  paths were only rejected by the atomic writer at Run/Restore time.
- Unit tests for the ateapi systemInfo conversion and for atelet's
  system-info volume population (extracted into writeSystemInfoVolume).
- Update the stale micro-VM known-gap comment to reference systemInfo
  volumes instead of the removed /run/ate identity mount.
@thompsonmax Max Thompson (thompsonmax) changed the title Actor identity feat: add systemInfo volume source with actorIdentity data source Aug 7, 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.

2 participants