Objectives & prerequisites
What Compose a Sandcastle request teaches and what you need before starting.
Learning objectives
NoteLearning objectives
- Run an end-to-end path in which a Crossplane XR is turned into an EngineeringTask and a Sandcastle constructs the requested artifact.
- Observe that Crossplane’s composition requests engineering work by declaring an EngineeringTask; it does not write any Pico code.
- Observe that the Sandcastle only sees the EngineeringTask — the XR never crosses the compose → construct boundary.
- Confirm that the construction stage is parametric on the request: change
spec.valuein the XR and the durable branch’srules/hello.yamlchanges to match, without touching any script. - Confirm that the artifact boundary from Sandcastle · Part 1 · Lesson 1 still holds: only the branch survives; the sandbox and the task file inside it are disposed.
Prerequisites
NotePrerequisites
- Completion of the Hello World Pico Sandcastle lab — this lab reuses the same PATH-allowlist Sandcastle shape, but driven by an EngineeringTask instead of a static blueprint.
- Reading familiarity with Crossplane · Part 1 so the
XHelloWorldPicoXR shape is recognisable. - A working shell (
bashorzsh). git2.30+ andpython33.8+ on yourPATH.- A local clone of this repository, which ships the reference
picoCLI underbin/pico.
Environment
- Supported OS: macOS, Linux, or WSL.
- Required shell:
bash3.2+ orzsh5+. - Required tools:
bash(POSIX shell) — invoked by the driver and by./build/hello-world-pico.git2.30+ — seeds the local target repo, commits the branch inside the sandbox, and pushes it back.python33.8+ — used bycompose.shto extract fields from the XR, bysandcastle-run.shto read the EngineeringTask, and bybin/pico.pico(this repository’s reference CLI, shipped underbin/pico) — parsesrules/*.yamland composes thehello-world-picoartifact.
- PATH expectation: after one-time setup,
command -v picoresolves to<repo>/bin/pico, not/usr/bin/pico(the Alpine/nano text editor). - Estimated time: 30–45 minutes.
- No cluster, container, or network access is required. The entire lab runs against a local target repo under
work/.
One-time setup
From a fresh shell, in a local clone of the academy source repository, put its bin/ directory on your PATH:
export PATH="$PWD/bin:$PATH"
command -v pico # should print .../bin/picoThe PATH export lasts for the current shell session; re-run it in new shells. This is the same one-time setup used by the Hello World Pico Sandcastle lab.
Cleanup
The lab writes only inside the repository-ignored work/ directory. To remove everything the lab produced:
rm -rf work/compose-sandcastle-requestThe sandcastle-run.sh driver already deletes its own sandbox workspace at the end of each run; the command above additionally removes the seeded local target repo, the emitted EngineeringTask, and the captured evidence.