Skip to main content

Troubleshooting

Use this guide for the controlled pilot. Preserve request IDs and digests, but never paste credentials, private keys, wallet seed phrases, or raw provider secrets into tickets or public issues.

Triage table

SymptomCheck firstDo not do
API does not startConfiguration path, file permissions, port conflict, signed state integrityDelete state until it starts
401Credential source, expiry, environment, and expected authentication methodSend the credential in chat or logs
403Actor role, policy eligibility, and initiator/approver separationChange identity labels to bypass policy
409Existing request under the same idempotency key and current stateGenerate a new key before reconciling the old request
Approval is stuckRequired threshold, eligible actors, rejection or terminal stateLower the policy threshold in place
Authorization failsExact request digest, policy version, key epoch, registry and quorum healthMix shares or commitments from different attempts
Execution is uncertainAdapter completion semantics, provider status, chain receipt, reconciler healthBlindly resend or mark executed manually
Evidence remains pendingWitness availability, stream head, pending terminal countSkip or rewrite a witness generation
Alert remains pendingReceiver TLS, URL restrictions, 2xx response, pending event IDChange the event ID on each retry
Restored state will not verifyBackup digest, target path, lifecycle head, witness headRestore over the active directory
Wallet opens the wrong networkChain ID, token contract, environment label, wallet sessionApprove an unexpected chain-add or mainnet prompt

Basic checks

From the pilot repository:

deploy/pilot/pilot-control.sh doctor
deploy/pilot/pilot-control.sh health
deploy/pilot/pilot-control.sh status

Read the component objects in /health, not just the top-level HTTP result. Confirm whether authorization, execution, reconciliation, evidence anchoring, and alert delivery are independently healthy.

Safe evidence collection

Collect the source revision, release-candidate identifier, environment, request ID, canonical digest, bounded timestamps, HTTP class, component health, and redacted log excerpts. Use the release-evidence procedure to connect a result to reproducible checks.

For a suspected vulnerability or unexpected ability to bypass policy, stop the test and use Responsible disclosure.