Solidway v0.1.0 is released under AGPL-3.0; source and releases are on GitHub. This documentation is being rewritten against the release — pages outside Quick start and Reference still describe planned behaviour. The current reference lives in docs/getting-started.md and docs/architecture.md in the repository.
Health marking
Which failures retire or cool a credential down, for how long, and how it comes back.
A credential that keeps failing costs a request every time it is chosen. Health marking takes it out of selection until something says it can serve again.
Classification
Every failed attempt is classified before the next decision is taken. The class comes from
the status code and, for 429, from the error body.
| Outcome | Mark | Duration |
|---|---|---|
401 |
Retired | Until an operator restores it |
403 |
Cooldown | cooldown_auth setting |
429 with error.code = insufficient_quota |
Cooldown | Retry-After if present (capped), else quota_cooldown |
429 otherwise |
Cooldown | Retry-After if present, else cooldown_rate_limit |
5xx |
Cooldown | cooldown_unavailable |
| Network error, connect timeout, first-byte timeout | Cooldown | cooldown_unavailable |
Other 4xx |
No mark | — |
The durations are configured under System → Gateway. There is no exponential ladder: a credential is held for the configured window, then probed.
Hold scope
A mark applies to the whole credential, for every model it serves. The model dimension is used for selection and reporting, not for holding one model while the credential keeps serving others.
Coming back
- Cooldown ends by itself. The credential is probed; the first successful probe returns it to selection. Until then it is skipped even by affinity.
- Retirement never ends by itself. An admin restores the credential from the route page (the console labels it “clear mark”), which also closes the incident.
Incidents
Every mark creates or extends an incident with the reason, duration and attempt count. The console lists them under Provider incidents, and the alert webhook fires on new incidents when configured. See Incidents and alerts.
What is never marked
- A failure caused by the request itself (typically
400,404,422) — one bad caller must not take a credential away from everyone. - A stream that the client cancelled.