Consumer SLO
Application-visible outcome, not server uptime alone.
Chapter 16 of 16 · Application/workload user · orders-api
Assemble the design and prove it through rotation, revocation, outage, denial, cleanup, and recovery evidence.
All previous chapters; Docker is optional for the runtime smoke but required for live lab evidence.
The team can run Lockbox checks, record non-secret evidence, identify gaps, and clean the lab completely.
| Owner | Consumer-facing responsibility |
|---|---|
| You own | States the consumer contract and proves reload and degraded behavior. |
| Platform team owns | Owns runtime identity, integration components, rollout, and operational health. |
| Vault owns | Owns server-side trust, policy, engines, audit, and Vault service health. |
Application-visible outcome, not server uptime alone.
A repeatable command and non-secret result.
A bounded experiment with abort, recovery, and cleanup.
A decision requiring named owners and verified evidence.
cd learn-vault
python3 ../tools/check_course.py . ../index.html
./labs/run_all_checks.sh
git status --short| Symptom | The capstone check fails or leaves generated files. |
|---|---|
| Likely causes | Interrupted lab, Docker unavailable, contract drift, cleanup gap, or risky content. |
| Inspect safely | Use named check, service status, file names and modes, state metadata, and git status. |
| Do not print | Any .runtime content, service environments, credentials, tokens, or container inspection. |
Break it: Run the capstone after interrupting a prior lab.
Fix it: Use the named failing check, restore the expected service state, and run bounded cleanup before retry.
Escalate with time, endpoint, auth path, role, mount, namespace when relevant, status code, request ID, and sanitized error class. Never attach a credential or response body.
labs/bootstrap owns the disposable server, auth mounts, policies, roles, and engines; learner actions begin after setup.
$0; local containers only
Run labs/bootstrap/setup.sh and source .runtime/learner.env unless the chapter lab says AppRole alone is sufficient.
Run offline checks and, when Docker is available, the runtime smoke. Review each readiness requirement by owner.
cd learn-vault
./labs/run_all_checks.sh
python3 ../tools/check_course.py . ../index.html
test -z "$(git status --short -- . ':!.runtime')"
cd labs/bootstrap && ./cleanup.sh
Complete every item in the Verify section using metadata-only evidence; no secret value appears in terminal output or tracked files.
Use the Failure drill and Break it / fix it evidence fields. Stop before broadening policy, weakening identity or TLS checks, or copying secret-bearing diagnostics.
Run labs/bootstrap/cleanup.sh and confirm .runtime is absent. Never use a broad recursive cleanup target.
orders-api authenticates from runtime identity, consumes Agent-rendered KV, rotates DB pools and PKI, and exposes lifecycle metadata only.
Identity, policy, lifecycle, delivery, reload, telemetry, failure, and ownership.
No. Leases, renders, reload, or policy can still fail.
Status, times, versions, TTL margins, fingerprints, generations, error classes, and IDs.
Compose resources and .runtime are gone and tracked files are unchanged.
Lockbox is ready when every credential has trusted identity, least privilege, bounded lifetime, verified reload, safe telemetry, recovery, and an owner.