Skip to content

demos/{sandbox,jupyter,multi-template}: fix tutorial prerequisites, walkthroughs, and counter volume - #3500

Merged
Zoe Zhao (zoez7) merged 3 commits into
agent-substrate:mainfrom
moficodes:fix/3494-core-tutorials-docs
Nov 2, 2026
Merged

Zoe Zhao (zoez7) merged 3 commits into
agent-substrate:mainfrom
moficodes:fix/3494-core-tutorials-docs

Conversation

@moficodes

Copy link
Copy Markdown
Collaborator

The sandbox, jupyter, and multi-template tutorials linked to retired root README.md anchors, omitted required ingress and ko settings, and had walkthrough steps out of sync with current CLI and runtime behavior. demos/multi-template/counter-template.yaml.tmpl also omitted the /home/counter volume mount, so counter printed preserved file counter: -1.

  • Mount a durableDir volume at /home/counter in demos/multi-template/counter-template.yaml.tmpl and update the expected curl output for all three counters.
  • List the atenet-router --ingress-allowed-spiffe-ids, SNAPSHOT_LOCATION, and KO_DOCKER_REPO (ko.dockerRepo) prerequisites in all three tutorials (including the ATE_INSTALL_KIND=true defaults on kind), and point their install links to docs/get-started/quickstart.md and docs/guides/operator-install.md.
  • Clarify per-request subprocess execution in demos/sandbox/README.md (sandbox-client sends sh -c to /process), add a non-interactive piped sandbox-client command, and remove the duplicate go install ./cmd/kubectl-ate step.
  • Update demos/jupyter/README.md and cmd/ate-setup/internal/demos/jupyter/jupyter.go to remove unimplemented idle-suspend claims, use quay.io/jupyter/base-notebook and ACTOR_STATE_SUSPENDED, add a curl -s http://localhost:8888/api check, fix step numbering, and document full teardown.
  • Drop the retired actor DNS routing claim and inaccurate delete-suspend note in demos/multi-template/README.md, and stop the background kubectl ate proxy actor processes during cleanup.

Fixes #3494

AI use: AI-assisted, I reviewed and verified the changes on kind and Kubernetes clusters and built the docsite locally.

  • Tests pass (./hack/verify/gofmt.sh, ./hack/verify/boilerplate.sh, go test -race ./cmd/ate-setup/..., ./hack/site.sh build, and live walkthrough verification)
  • Docs updated

Comment thread demos/sandbox/README.md Resolved
The counter binary writes its file counter to /home/counter/a.txt and
returns -1 when that directory is missing. Mount a durableDir volume at
/home/counter in demos/multi-template/counter-template.yaml.tmpl to match
demos/counter/counter-template.yaml.tmpl, and update the multi-template
walkthrough output for all three counters.

Signed-off-by: Mofi Rahman <[email protected]>
…d walkthroughs

The sandbox, jupyter, and multi-template tutorials linked to retired root
README anchors and omitted the atenet-router SPIFFE allowlist and ko
image repository needed to deploy and reach demo actors. Point those
links to docs/get-started/quickstart.md and docs/guides/operator-install.md,
and list the ingress, snapshot, and image settings in Prerequisites.

Several walkthrough steps and descriptions also drifted from the code.
The sandbox tutorial showed only interactive REPL prompts and did not
explain per-request subprocess execution. The jupyter demo claimed
unimplemented idle suspension, skipped step 3, and showed the old
STATUS_SUSPENDED state name. The multi-template tutorial referenced
retired actor DNS names and left background proxies running at cleanup.
Update the three READMEs and the jupyter package comment to match current
behavior.

Signed-off-by: Mofi Rahman <[email protected]>
The interactive REPL step writes test.txt and suspends the actor on exit.
Have the piped sandbox-client example read test.txt back instead of
overwriting it so the walkthrough also verifies that rootfs state
persisted across the snapshot.

Signed-off-by: Mofi Rahman <[email protected]>
@zoez7
Zoe Zhao (zoez7) added this pull request to the merge queue Nov 2, 2026
Merged via the queue into agent-substrate:main with commit a2cc5e4 Nov 2, 2026
7 checks passed
Dmitry Berkovich (dberkov) pushed a commit that referenced this pull request Nov 3, 2026
Bring `release-1.0` up to `main` at
5a5b192 with the 19 changes merged
since the previous batch in #3536. The final tree matches that commit
exactly.

**Please use Rebase and merge to preserve the individual commits and
author attribution.** All 19 applied cleanly in upstream order. Original
authors, author dates, co-author and sign-off trailers, and `-x` source
references are retained.

Upgrade notes:

- #3533: old gVisor MEMORY snapshots, including goldens, no longer
restore. Recreate them after upgrading. MicroVM MEMORY snapshots still
resume with their old mounts until recreated. `/tmp` is now always
tmpfs; ROOTFS snapshots no longer preserve its contents, and
image-provided files there are hidden. MicroVM `/tmp` counts against
actor memory and is capped at half the guest's memory. gVisor `/dev/shm`
is now a 64 MiB tmpfs. Mount a `durableDir` at either path when
persistence or more space is needed. `/run` now comes from the image
rootfs.
- #3447: remove `--actor-jwt-jwks-file` from custom credential-exchange
sidecar configs. Set `--actor-jwt-issuer-ca-file` only when the issuer
uses a private CA other than the service DNS CA.

- #3450: do not reuse a deleted atespace name. See the updated atespace
name-reuse guidance.

Includes #3505, which overlaps the open backport in #3547. GKE
provisioning and teardown now live in
[substrate-gke](https://github.com/ai-on-gke/substrate-gke) rather than
this repository.

<details>
<summary>Included PRs, in cherry-pick order</summary>

1. #3500: demos/{sandbox,jupyter,multi-template}: fix tutorial
prerequisites, walkthroughs, and counter volume
2. #3498: demos/counter: inline gVisor walkthrough and fix setup
commands
3. #3511: e2e tests: Extend the existing tests to cover tag actor.
4. #2775: Generate API reference documentation and publish it on
Substrate website
5. #3119: Document how people, pods and CI jobs should authenticate to
ate-api
6. #3505: tools: remove setup-gcp and hack/teardown.sh
7. #3147: e2e: resume fidelity after SandboxConfig version edits
8. #3370: ate-setup: reconcile ate-api-server ConfigMaps and roll out on
config changes
9. #1607: hack: reject breaking proto changes across each proto package
10. #3415: docs: update and add security diagrams
11. #3485: Resuming a microVM actor on the same node no longer reads its
rootfs upper back from disk
12. #3447: Verify actor JWTs in the credential exchange through OIDC
discovery
13. #3533: ocispec: mount tmpfs at /dev/shm, and /tmp on both runtimes
14. #3450: docs: Document that atespace names must not be reused
15. #3410: Document using more than one egress credential provider
16. #3486: atelet: register the device plugin on a new socket each time
17. #3553: ate-setup: wait for the demo namespace in delete demo
18. #3560: Fix multiple issues in claude-code-multiplex demo
19. #3517: docs: remove inaccurate early-stage architecture
documentation

</details>

Validation: every intermediate tree matches its upstream source commit,
all 19 authorship records and original attribution trailers are
preserved, and `git diff --check` passes. The original 18 backport
commits are unchanged.

AI use: AI-assisted cherry-picking, attribution checks, and review.

- [ ] Tests pass
- [x] Docs updated

---------

Signed-off-by: Mofi Rahman <[email protected]>
Signed-off-by: Eitan Yarmush <[email protected]>
Signed-off-by: Nayana Bidari <[email protected]>
Signed-off-by: Julian Gutierrez Oschmann <[email protected]>
Signed-off-by: Max Thompson <[email protected]>
Signed-off-by: Steven Shriver <[email protected]>
Signed-off-by: Grant McCloskey <[email protected]>
Signed-off-by: Shrutiya <[email protected]>
Signed-off-by: Haiyan Meng <[email protected]>
Signed-off-by: Greg Castle <[email protected]>
Signed-off-by: Benjamin Elder <[email protected]>
Signed-off-by: Anish Ramasekar <[email protected]>
Signed-off-by: Shruti Nair <[email protected]>
Signed-off-by: Haven Xia <[email protected]>
Co-authored-by: Mofi Rahman <[email protected]>
Co-authored-by: nybidari <[email protected]>
Co-authored-by: Julian Gutierrez Oschmann <[email protected]>
Co-authored-by: Max Thompson <[email protected]>
Co-authored-by: Grant McCloskey <[email protected]>
Co-authored-by: Steven Shriver <[email protected]>
Co-authored-by: shrutiyam-glitch <[email protected]>
Co-authored-by: haiyanmeng <[email protected]>
Co-authored-by: Greg Castle <[email protected]>
Co-authored-by: Benjamin Elder <[email protected]>
Co-authored-by: Anish Ramasekar <[email protected]>
Co-authored-by: Shruti Nair <[email protected]>
Co-authored-by: Haven Xia <[email protected]>
Co-authored-by: Adam Wathieu <[email protected]>
Dmitry Berkovich (dberkov) pushed a commit that referenced this pull request Nov 3, 2026
…alkthroughs, and counter volume (#3500)

The `sandbox`, `jupyter`, and `multi-template` tutorials linked to
retired root `README.md` anchors, omitted required ingress and `ko`
settings, and had walkthrough steps out of sync with current CLI and
runtime behavior. `demos/multi-template/counter-template.yaml.tmpl` also
omitted the `/home/counter` volume mount, so `counter` printed
`preserved file counter: -1`.

- Mount a `durableDir` volume at `/home/counter` in
`demos/multi-template/counter-template.yaml.tmpl` and update the
expected `curl` output for all three counters.
- List the `atenet-router` `--ingress-allowed-spiffe-ids`,
`SNAPSHOT_LOCATION`, and `KO_DOCKER_REPO` (`ko.dockerRepo`)
prerequisites in all three tutorials (including the
`ATE_INSTALL_KIND=true` defaults on `kind`), and point their install
links to `docs/get-started/quickstart.md` and
`docs/guides/operator-install.md`.
- Clarify per-request subprocess execution in `demos/sandbox/README.md`
(`sandbox-client` sends `sh -c` to `/process`), add a non-interactive
piped `sandbox-client` command, and remove the duplicate `go install
./cmd/kubectl-ate` step.
- Update `demos/jupyter/README.md` and
`cmd/ate-setup/internal/demos/jupyter/jupyter.go` to remove
unimplemented idle-suspend claims, use `quay.io/jupyter/base-notebook`
and `ACTOR_STATE_SUSPENDED`, add a `curl -s http://localhost:8888/api`
check, fix step numbering, and document full teardown.
- Drop the retired actor DNS routing claim and inaccurate delete-suspend
note in `demos/multi-template/README.md`, and stop the background
`kubectl ate proxy actor` processes during cleanup.

Fixes #3494

AI use: AI-assisted, I reviewed and verified the changes on `kind` and
Kubernetes clusters and built the docsite locally.

- [x] Tests pass (`./hack/verify/gofmt.sh`,
`./hack/verify/boilerplate.sh`, `go test -race ./cmd/ate-setup/...`,
`./hack/site.sh build`, and live walkthrough verification)
- [x] Docs updated

---------

Signed-off-by: Mofi Rahman <[email protected]>
(cherry picked from commit a2cc5e4)
Signed-off-by: Eitan Yarmush <[email protected]>
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.

demos/{sandbox,jupyter,multi-template}: add ingress prerequisite, fix Quickstart links, CLI states, and counter output

2 participants