Skip to content

Failure modes

Applies to OML v0.6.x · Status: Stable · Last verified 2026-11-06

When the server cannot establish that an act is permitted and durable, the act does not happen. It refuses with a typed code from the error list. Each row below is one failure on its own. For steps, see operational alerts. For the signals, see Monitor an OML server.

Failure What the server does What you see What to do
Postgres primary unreachable Refuses every write and read, because the serving store is the store that is down. system.unavailable (503, retryable). /readyz fails. Restore Postgres. Clients retry on their own.
Stored chain head does not verify at start (fork check) Refuses writes and stays down. It never signs on top of a fork. /readyz fails. Writes return system.unavailable. Follow fork check failing.
Lead takes over Refuses writes until a new lead holds the lease and passes the fork check. A short burst of system.unavailable on writes. Retry. If it repeats, see lead takeovers repeat.
Keyring file (kms.keyring_path) unreadable Refuses writes, because nothing can be encrypted. Reads of cached keys keep working until the cache expires. system.unavailable. Restore the keyring file.
Scan rule set fails to load The server reports not ready and serves nothing. It never admits an unscanned write. /readyz fails. oml doctor shows scan_ruleset or scan_rules. Fix the rule set the server names, then restart.
Scan fails on one write Refuses that write. system.internal. Retry. If it repeats, send the request_id to the operator.
Search index behind Recall misses memories approved after the backlog. Get by id is unaffected. Fewer hits. oml_sparse_backlog rises when the sparse encoder is on. Wait for the backlog to drain. Check oml doctor search lines.
Reranker slow or failing Skips reranking and returns the unreranked order. oml_reranks_total{outcome="skipped"} rises. oml doctor warns. See troubleshooting the server.
Lake writer stopped or behind Nothing client-facing changes. The lake serves no client read. oml_lake_lag_seconds grows. Follow the lake falls behind.
No reviewer available Accepts writes and holds them. It does not refuse them. Memories stay held. oml doctor reports review capacity. Follow no reviewer can approve.
Metrics listener not set Serves no /metrics. oml doctor says where the counts are. Set server.metrics_listen.

We have not measured how long each refusal window lasts.