HUD Fleet-Roll Unavailability
Use this runbook when the shared HUD returns a 502 or blank page during, or for more than five minutes after, a loom-hub fleet image roll. Classify the first meaningful signal and fail closed: do not restart or alter the deployment while gathering evidence.
The HUD is deployment/mobile-hud in namespace loom-hub. Its single replica
uses Recreate because its workspace volume is ReadWriteOnce, so a brief
unavailable interval is expected while the old pod releases the volume and the
replacement becomes Ready.
HUD 502 or Blank Page Within Minutes of a Merged MR
Detection signals
A loom-core or custom-server image bump may have just landed in a Flux commit
named chore(loom-hub): auto-update loom-core image. A mobile-hud pod that is
seconds to minutes old supports a transient-roll diagnosis.
kubectl -n loom-hub get pods -l app=mobile-hud --request-timeout=30s
kubectl -n loom-hub describe deployment/mobile-hud --request-timeout=30s
kubectl -n loom-hub logs deployment/mobile-hud --since=30m --request-timeout=30s
External-dependency classification criteria
Treat the short outage as expected Recreate downtime only when the old pod
has terminated, a replacement is progressing, and no readiness or image error
appears in the bounded logs. A branch-owned change to the failing surface is a
repository defect, never an external incident. Use the external-dependency
path only when the earliest evidence instead identifies a shared dependency
outside the branch, such as registry or cluster control-plane availability.
Remediation owner and escalation
- Keep the platform operator for the loom-hub fleet as the incident owner.
- Escalate to the image, registry, or cluster owner when evidence identifies that shared dependency rather than the HUD deployment.
- Record the deployment image, pod age, first meaningful error, and related Flux commit before declaring an incident.
Safe operator actions
-
Wait through the normal 30--60 second
Recreateand readiness interval. -
Observe the replacement with the namespaced pod query above.
-
Check bounded rollout progress without changing state:
kubectl -n loom-hub rollout status deployment/mobile-hud --timeout=2m \ --request-timeout=30s -
Do not restart, delete, scale, patch, or reconcile the deployment mid-roll.
Recovery verification
- Confirm rollout completion with the bounded
rollout statuscommand. - Confirm the mobile-hud pod is Ready with zero restarts using the namespaced pod query above.
- Confirm
https://hud.flexinfer.aianswers HTTP 200 through the normal monitoring or browser check.
HUD Unavailable Beyond Five Minutes After a Roll Began
Detection signals
A CrashLoopBackOff, ImagePullBackOff, or readiness failure after five
minutes is a rollout failure, not transient Recreate downtime. Inspect the
deployment and its bounded logs; do not retrieve Secrets or other credentials.
kubectl -n loom-hub get pods -l app=mobile-hud --request-timeout=30s
kubectl -n loom-hub describe deployment/mobile-hud --request-timeout=30s
kubectl -n loom-hub logs deployment/mobile-hud --since=30m --request-timeout=30s
kubectl -n loom-hub rollout status deployment/mobile-hud --timeout=2m \
--request-timeout=30s
External-dependency classification criteria
Classify from the earliest useful evidence. An image-pull failure can be an external registry incident only when the branch did not introduce the image reference and independent evidence shows the registry unavailable. A failing image, readiness configuration, or HUD behavior introduced by the branch is a repository defect, never an external incident. Do not use a later 502 to mask an earlier repository-owned failure.
Remediation owner and escalation
- Keep the platform operator for the loom-hub fleet as the incident owner.
- Escalate a branch-owned image, manifest, or application failure to its repository owner with the bounded logs and deployment description.
- Escalate a verified shared registry or Kubernetes failure to that service owner and link its incident evidence.
- Compare the deployed image against the newest Flux image-automation commit; image bumps normally batch on a 30-minute cadence.
Safe operator actions
- Preserve the failing pod and gather only the namespaced, read-only evidence above.
- Do not restart, delete, scale, patch, or reconcile
deployment/mobile-hudwhile diagnosis is in progress. - If an urgent image correction is required, hand off the evidence to the platform operator for the approved GitOps recovery; do not perform an imperative write from this runbook.
Recovery verification
- Confirm the bounded rollout-status command above reports a successful rollout.
- Confirm the replacement pod is Ready with zero restarts and bounded logs show no recurring startup failure.
- Confirm
https://hud.flexinfer.aianswers HTTP 200.
Incident closure
Record the following evidence in the incident or merge-request discussion.
Disposition: <transient-recreate|repository-defect|external-dependency>
Deployment: <namespace/name>
Image: <image-reference>
First signal: <signal>
Evidence: <read-only-command-output-or-link>
Recovery: <http-200|not-recovered>
Owner: <team-or-operator>
For cross-pipeline classification and escalation rules, see
docs/mills-incident-runbook.md.