Learning objectives
By the end of this module, you should be able to:
- Connect product need, catalog metadata, template output, provisioning, GitOps, policy and observability into one platform flow.
- Validate relationships instead of checking whether fields merely exist.
- Defend trade-offs, ownership and exceptions using evidence.
Capstone scenario
A product team needs a standard web service path. Today they file tickets for repository setup, namespace access, deployment wiring, dashboards and policy exceptions. Build a platform contract that reduces those handoffs while preserving ownership and safe controls.
Prove the relationships
The service owner in the request must match catalog ownership; the artifact digest promoted by desired state must match the built artifact; public exposure requires an explicit policy decision; readiness requires dashboard, SLO, runbook and rollback evidence.
The evidence chain should also identify the build platform owner, the immutable artifact/SBOM/provenance hand-off, workload identity or secret-delivery boundary, and the incident/support owner for the platform capability.
A platform succeeds when the user journey succeeds
The final evidence should show not only that automation ran, but that a developer can request, understand, operate and recover the service without hidden platform-team steps.
Worked example
Capstone evidence chain
developer request → catalog → golden path → bounded environment → immutable artifact → desired state → policy → runtime/readiness → feedback
- Every transition has a contract and inspectable evidence.
- Deliberate bad fixtures should be rejected to prove the validator is checking relationships.
Core lab · account-free
Lab 12 — Validate a platform golden-path release
Goal: Create a relationship-aware platform manifest and prove that unsafe or inconsistent changes are rejected.
Before you start
- No cloud account required.
- Core lab uses bash/Python 3 and local files only.
STEP 1Write capstone manifest
mkdir -p /tmp/platform-capstone
cat > /tmp/platform-capstone/platform.json <<'EOF'
{"request":{"service":"orders","owner":"payments","environment":"prod","workload_class":"web-service"},"catalog":{"service":"orders","owner":"payments","docs":true},"artifact":{"digest":"sha256:abc123","signed":true},"desired":{"artifact_digest":"sha256:abc123","replicas":3},"policy":{"privileged":false,"public":false,"exception_days":0},"readiness":{"dashboard":true,"slo":true,"runbook":true,"rollback":true},"platform":{"self_service":true,"idempotent":true,"status_visible":true,"support_owner":"platform"}}
EOF
STEP 2Validate relationships
python3 labs/platform-engineering-capstone/validate_platform.py /tmp/platform-capstone/platform.json
STEP 3Break artifact identity
python3 - <<'PY2'
import json
p='/tmp/platform-capstone/platform.json'; x=json.load(open(p)); x['desired']['artifact_digest']='sha256:DIFFERENT'; json.dump(x,open('/tmp/platform-capstone/bad.json','w'))
PY2
if python3 labs/platform-engineering-capstone/validate_platform.py /tmp/platform-capstone/bad.json; then echo 'ERROR: drift was accepted'; exit 1; else echo 'expected rejection: artifact drift'; fi
STEP 4Defend the design
Explain which implementation details the developer does not need to know, and which evidence/status must remain visible for safe operations.
Verify
- Request/catalog owners match.
- Built and desired artifact digests match.
- Unsafe privilege/public exposure rules are rejected.
- Readiness and rollback evidence are complete.
- The deliberately drifted artifact is rejected.
Expected outcome
- A platform manifest that validates end-to-end relationships plus evidence of a deliberate failure test.
Diagnose / troubleshoot
- Owner mismatch means catalog/request sources disagree.
- Artifact mismatch means promotion is not immutable.
- Missing rollback/readiness means the golden path is not production-shaped.
- A policy exception without owner/expiry should be treated as invalid, not silently accepted.
Real-world connectionA production platform is an interface across many systems; the capstone tests whether those interfaces form one coherent, operable developer journey.
Real-tool practicum · optional but recommended
Optional tool lab — map the capstone to real platform tools
Map the same contract to Backstage/catalog/templates, GitHub/GitLab, Terraform/OpenTofu, Helm, Argo CD/Flux, Kubernetes policy and observability in an approved sandbox.
Prerequisites
- Use a disposable local lab or organization-approved sandbox.
- Pin tool versions in real platform automation; do not blindly depend on latest.
Cost / risk
- Core learning is account-free. Optional external/sandbox tools may consume local CPU/RAM; do not use production credentials or billable cloud resources.
Warnings
- Do not point training automation at production clusters, repositories or cloud accounts.
- A successful command is not proof of a good platform interface; validate the developer outcome and guardrails.
TOOL 1printf '%s
' 'Backstage -> request/catalog/template' 'IaC -> environment' 'Helm -> workload package' 'GitOps -> desired state/reconciliation' 'Policy -> admission/guardrails' 'Observability -> readiness/feedback'
Capstone rubric
Score evidence and product outcomes—not portal polish.
Developer problem & product outcome · 15%
A clear target user journey, baseline friction and measurable outcome.
Catalog & ownership · 10%
Service identity, owner, lifecycle and documentation/runbook links are explicit.
Golden path & contract · 20%
Validated inputs/outputs, supported defaults, extension path and versioning semantics.
Provisioning & GitOps · 15%
Idempotent lifecycle, immutable artifact promotion, desired-state reconciliation and rollback. Build-platform ownership and artifact/SBOM/provenance hand-off are explicit.
Policy & tenancy · 15%
Least privilege, quotas/ownership, guardrails and bounded exceptions are proven. Workload identity/secret-delivery boundaries are explicit.
Observability & readiness · 15%
Dashboards/signals, SLO/readiness evidence and actionable scorecard rules.
Platform operations & evolution · 10%
Platform SLOs, adoption/task-success signals, support and deprecation strategy. On-call, intake/roadmap and incident handoff boundaries are explicit.
Avoid these traps
Common mistakes
- Building the capstone as a portal screenshot with no backend contract.
- Allowing request owner and catalog owner to disagree.
- Promoting a different artifact than the one that was built/verified.
- Calling a service ready without operational evidence and rollback.
Knowledge check
Can you connect the developer need to a platform contract?
Three concept checks plus one scenario check.
1What makes the capstone a platform rather than a toolchain?
A coherent supported developer contract connects capabilities, guardrails, ownership, lifecycle and feedback across the tools.
2Why must request and catalog ownership agree?
Ownership is part of the operational contract; conflicting sources make routing and accountability unreliable.
3Why compare built and desired artifact digests?
It proves the exact immutable artifact is the one promoted through the platform path.
4Scenario: the portal request succeeds but the service has no dashboard/runbook/rollback. Is the golden path complete?
No. Provisioning succeeded, but the production operational-readiness contract is incomplete.