Summary · Composing a Sandcastle request
Key takeaways
- The compose → construct boundary is where the academy story Crossplane composes, Sandcastle constructs, Picos behave turns a declarative request into engineering work. Crossplane owns the request; the Sandcastle owns the work.
- Crossplane’s Composition emits an EngineeringTask — a declarative record of the construction work the cluster wants done. It writes no code and touches no repository.
- The Sandcastle reads the EngineeringTask (never the original XR), runs the same inspect → generate → validate → commit inner loop from Part 1 · Lesson 1, and returns a durable Git branch. The sandbox is then disposed.
- The construction stage is parametric on the request: the greeting the branch’s
rules/hello.yamlcarries is the greeting the XR asked for, not a hard-coded string in the agent. - The compose → construct hand-off is exactly two files:
xr-request.yamlon the compose side andengineering-task.yamlas the boundary artifact. Nothing else crosses. - This lesson is runnable end-to-end via the reusable Compose a Sandcastle request lab, whose
verify.shasserts the four hand-off rules programmatically.
What comes next
- Part 3 · Lesson 1 — Handing off to Kubernetes covers the reverse-direction boundary: how the durable branch this lesson produces later becomes a Crossplane XR that the cluster composes into a runtime
Job. See Part 3 · Lesson 1 and the runnable Sandcastle → Kubernetes hand-off lab. - Part 3 · Lesson 2 — The outer delivery loop develops the guardrails that live outside the Sandcastle’s boundary — PR review, GitOps promotion, Crossplane reconciliation — and reuses both this lesson’s lab and the Kubernetes lab as its runnable endpoints. See Part 3 · Lesson 2.
- Cluster-backed variants — this lesson’s
compose.shis a local simulation of a Crossplane Composition. A cluster-backed variant that runs a real Composition emitting a real EngineeringTask CR is a natural Part 2 follow-up but is intentionally out of scope for this lesson.
Next
Take the Quiz.