Read the phase suffix first
A bareunclassified means the pipeline phase could not be located either. When the phase is known, the code carries it as a suffix, and that suffix is the fastest way to narrow the search.
Every suffix resolves to this page.
unclassified.image_build points at your Dockerfile and build inputs, unclassified.cloudformation points at the stack update.
Superseded rollouts: unclassified.ecs_stabilise
Fjall watches one specific ECS deployment for the revision it just shipped.unclassified.ecs_stabilise means the service’s primary deployment changed to a different one while that rollout was still in flight. Something else took over the service, so the verdict Fjall reached is about a rollout that no longer exists.
The detail on the record says so directly, in the sentence ECS replaced the in-flight deployment before it completed. The detail is a semicolon-joined list of reasons, so ECS’s own rollout-state reason can precede that sentence and a stopped-task count can follow it. Match on the sentence, not on the whole field.
Two things cause it:
- CloudFormation rolled the stack back. The stack update failed elsewhere and AWS restored the previous task definition, which starts a new ECS deployment on top of the one Fjall was watching.
- A second deploy started. A concurrent
fjall deploy, a CI run, or a rollback superseded this one.
How to fix a superseded rollout
- Find the deployment that superseded this one. Run
fjall deployments listand look for a deployment overlapping this one’s window. - Check what is actually running now.
fjall releases <app>lists the recorded releases and marks the current one, andfjall status <app>reports deployment health. - If a CloudFormation rollback caused it, read the stack events on the deployment’s detail page. The rollback has its own root cause, and that cause is the real failure.
- Once the service is quiet, deploy the revision you intended:
Why the other codes are unclassified
Fjall classifies failures by reading structured sources it already holds: CloudFormation stack events and ECS service events. When no structured source survives to the point where the deployment terminates, there is nothing to classify against, so the failure is recorded as unclassified and located to a phase instead. These records carry no remediation bullets, because there is no known shape to write remediation for. The detail sentence and the log excerpt are the evidence.Unclassified rates are tracked. When a failure shape recurs often enough, it
earns its own code, and stored failures can be reclassified under it.
How to fix it
- Read the failure detail and the masked log excerpt. They quote the first error the pipeline hit, which is usually the root cause.
- Narrow your investigation to the phase in the suffix, using the table above.
- Open the deployment on fjall.io to read the full event stream and log output around the excerpt.
- Use the Explain action on the deployment’s detail page for an AI readout of the failure.
- Fix what the readout points at, then deploy again.
What Fjall shows you
On the deployment’s detail page on fjall.io:- The title
Deployment failedand the code, including any phase suffix - The per-occurrence detail sentence
- A line stating that the cause could not be attributed automatically
- The provider’s verbatim reason, when one was captured and differs from the detail
- A link back to this page
- The masked log excerpt behind a show-details toggle, when an excerpt was captured
fjall deploy, without the excerpt. The deployments list shows the title on the deployment’s row.
Next Steps
Deployment error codes
Every code Fjall ships, with its cause and remediation.
Deployment safety
How Fjall contains and reports failed deployments.
fjall deploy
Deploy an application and read the CLI’s failure output.
fjall releases
Check what is currently running after a superseded rollout.