Find what you are seeing in Match the symptom to a runbook and open that runbook. Each runbook opens from a symptom you can observe directly: kubectl output, a Console screen, an alert or a log line. Its checks name the signal to read and, where the platform defines one, the value that means healthy, and it ends with the fix.
Match the symptom to a runbook
An indexer pod answers /healthz and /readyz with 200 while its process runs, so its pod status does not show a stalled chain. A chain the indexer cannot retry is parked: the indexer logs EVM span chain parked; its siblings continue in category host.didx.evm-span, with chain_id, failure_tag and error_detail, and keeps indexing its other chains. The pod stays Ready and does not restart. Read that log line, not pod restarts.
When transactions stop going out
Check these four causes in order. Fix the first one whose signal you find, because a later cause can be an effect of an earlier one.
- The paying wallet is short of gas. The Submissions tray shows “Waiting for funds”, the Transaction funding page shows a notice such as
<wallet> needs <amount>, or a transaction request failed withDALP-9087on its status orDALP-14062from the API. Open Transactions waiting for funding. - The network's RPC endpoints fail.
dalp_withchain_ evm_ rpc_ attempts_ total outcomefailurerises for the chain, ordalp_rises on a network with more than one endpoint. These come from the client that sends queued transactions, which uses only the endpoints in the deployment values.chain_ evm_ rpc_ upstreams_ exhausted_ total All RPC upstreams exhaustedin the logs and an “Unhealthy” or “Excluded” badge on “Platform networks” describe the indexer's pool. Open RPC upstreams failing over. - A transaction stays open. A row on the “Transactions” detail of Platform status stays open without settling, and the first two causes are ruled out. Use “Set next nonce” when a nonce gap holds it, or “Force fail” it when it can no longer complete, as Recover a stuck transaction describes. Before you force fail a transaction that has a transaction hash, check on a block explorer that no transaction from that sender with that nonce was mined or is still pending. A force-failed transaction that lands later, followed by a resent write, runs the operation twice.
- The transactions settle but screens do not show them. That is indexing, not sending. Open Ledger indexing stalled, or Index rebuild after an upgrade when a release started a rebuild.
How the roles depend on each other
A DALP instance runs four backend roles, and these runbooks cover three of them: one serves Console and API traffic, one indexes chains into Ledger Data, and the runner executes durable workflows, including webhook delivery. The fourth, the scheduler, runs background jobs. The indexer writes each webhook event as part of the same transaction that advances its indexed state, and the runner reads that queue on its own cadence to deliver it, so a stalled indexer starves webhook deliveries too. Each of the three answers /readyz, but only the Platform API reports boot phases and dependency verdicts there. The runner and the indexer report only whether the process is up or draining. All three write into one PostgreSQL database, so a symptom on one surface can trace back to another. The scheduler's /readyz answers 503 when the bank FIX simulator cannot listen and, in external mode, lists the bank FIX sessions it dials, as Platform API not ready describes.
The indexer feeds the Platform API's readiness and the runner's webhook queue, and all three roles write to one PostgreSQL database.
Open a runbook
Platform API not ready
A pod stays out of Ready: tell a slow boot from a hang and read its status and logs.
Ledger indexing stalled
Indexed data stops advancing while pods are Ready: read the indexer's progress and logs.
Webhook deliveries failing
A webhook endpoint goes quiet: read the retry schedule, circuit breaker and recovery.
Utila signing agent
Utila work stops being signed: read the agent's answers, then enrol, rotate or recover it.
Transactions waiting for funding
Work pauses because the paying wallet cannot cover gas: fund it inside the window.
When nothing here matches
If the pod is Ready, Ledger Data is current, and webhook deliveries are flowing, but you are still looking at a failure none of these runbooks name, capture the evidence before you touch anything. Take the pod's logs and kubectl describe pod output, the delivery history, or whatever error your own integration returned. A restart or a resend can destroy the failure reason you need. Escalate to your DALP support contact with what you captured.