# SC100: Service never became ready

> SC100 (service never became ready) means the readiness route did not return its expected status before readiness.timeoutMs. The causes and how to fix each.

Source: https://shutdown.jscrate.dev/docs/codes/sc100
Last updated: 2026-09-23

`SC100` means the process stayed alive, but the readiness route did not return
the expected status before `readiness.timeoutMs` expired. No workload request
or shutdown signal was sent.

| | |
| --- | --- |
| Code | `SC100` (FAIL) |
| Stage | Startup and in-flight work |
| CLI exit code | 1 |
| What it means | The readiness route did not return the expected status before `readiness.timeoutMs` ran out. |
| Message | `Service did not return HTTP <readiness.status> at <url> within <readiness.timeoutMs> ms` |
| First thing to check | Check the command, the port in `baseUrl`, the readiness path and status, and the service's stderr. |

## What should I check?

1. Confirm that `baseUrl` uses the same host and port as the service.
2. Open `readiness.path` and check its real status code.
3. Make sure the service binds to `127.0.0.1`, `localhost`, or `::1`.
4. Read the captured stdout and stderr for startup warnings.
5. Increase `readiness.timeoutMs` only when startup is genuinely slow.

```json title="shutdown-check.json"
{
  "baseUrl": "http://127.0.0.1:3000",
  "readiness": {
    "path": "/health",
    "status": 200,
    "timeoutMs": 30000
  }
}
```

A refused connection is normal while the service starts; shutdown-check keeps
polling. If the process exits during that wait, the result is
[SC101](https://shutdown.jscrate.dev/docs/codes/sc101) instead.

## How do I verify the fix?

Start the service with the same command and request the exact readiness URL.
It must return the configured status without authentication or redirects.

After the fix, the timeline contains `service ready — HTTP 200` followed by a
workload event. If readiness takes close to the full timeout, investigate slow
startup before merely increasing the limit again.

## Related

- [Readiness configuration](https://shutdown.jscrate.dev/docs/configuration#readiness)
- [SC101: Service exited before ready](https://shutdown.jscrate.dev/docs/codes/sc101)
- [Troubleshoot startup](https://shutdown.jscrate.dev/docs/troubleshooting)
