3.8 KiB
Incident drills
Present only one Student packet before the student answers. Use the coach
notes afterward to grade the failure classification and reasoning. These cases
are based on retained Atlas rollout observations; treat them as training
fixtures, not proof of current live state.
Case A — Metrics disappear after a Soteria run
Student packet
- The Soteria test stages ran.
- The post-stage log ends with:
Syntax error: end of file unexpected (expecting "fi"). - The canonical Soteria Pushgateway series did not refresh.
- Other suites continued publishing.
Ask for: finding, confidence, evidence, likely cause, blast radius, read-only next checks, repo-side fix, and approval-required actions.
Coach notes
The primary class is pipeline glue/shell syntax, not a Pushgateway outage and
not a product-test failure. Inspect the post block and the exact shell parsed by
/bin/sh; confirm the last successful metric timestamp. The smallest likely
fix is closing/correcting the conditional in the Jenkinsfile, then a normal SCM
run and read-only metric verification. Editing, pushing, triggering, or manual
metric backfill requires explicit approval.
Case B — UI tests fail before metrics publish
Student packet
bstein-dev-homerequires Playwright1.59.1.- The CI test container contains Playwright
1.51.0. - The frontend test stage hard-fails.
- No fresh canonical quality metrics appear for the run.
Coach notes
Separate the direct test-environment mismatch from the telemetry-control-flow defect. The version mismatch explains the test failure; early pipeline abort explains missing metrics. A complete proposal aligns the image version and persists stage return codes so publishing still runs while the final gate still fails. Do not call this a Kubernetes capacity problem without node/pod evidence.
Case C — Promotion exits 127
Student packet
- Titan IaC validation and tests finish.
- The Promote stage uses
python:3.12-slim. - The stage returns exit code
127at its first Git command. - The repository and remote are reachable from other jobs.
Coach notes
Exit 127 means the invoked command is unavailable. Confirm the exact log line
and image contents; the likely issue is that the slim image lacks git, not bad
Git credentials. The minimal repo-side fix installs git and CA certificates
in the job's dependency setup or uses a suitable pinned runner image.
Case D — Data Preppers cannot publish an image
Student packet
- Tests and local image build complete.
- Push to
registry.bstein.dev/streaming/data-prepper:2.8.0is denied. - The configured Jenkins credential belongs to a different Harbor project.
- A Sonar evidence GET also returns
401in the same run.
Coach notes
Do not collapse independent authentication failures into a generic network failure. Verify the Harbor repository/project and credential ID without reading the secret value; separately verify the Sonar token injection path and API scope. The likely image fix is selecting a streaming-scoped robot credential. Treat the Sonar 401 as a second issue unless evidence proves a shared cause.
Case E — Hermes local inference fails during game streaming
Student packet
- Wolf owns titan-24 according to the GPU-owner state.
hermes-model-gateis ready but returns a deliberate unavailable response.- Both Hermes dashboards remain healthy.
- One instance answers through Codex; the other reports missing provider auth.
Coach notes
This is expected resource arbitration plus an instance-specific fallback auth gap. Do not restart the agent or claim the GPU is underprovisioned. Confirm the gate response, fallback chain, and each instance's auth status without exposing tokens. Authorize the affected instance with its intended user's account. The separate credential stores are a security property, not configuration drift.