Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Troubleshooting

Symptoms and fixes. ERRORS.md, generated from the node’s rejection table, is the authority on any code field.

SymptomLikely causeFix
cargo build pulls huge tree / sqlite errorschoir-actor / rivetkitKeep .cargo/config.toml. Default members exclude actor; use -p choir-actor only when needed.
choir-actor ignored test fails / download brokenrivetkit 2.3.10 auto-downloadRIVETKIT_ENGINE_AUTO_DOWNLOAD=1 cargo test -p choir-actor -- --ignored
Node refuses bind addressNon-loopback without TLSAdd --tls-cert / --tls-key, or stay on 127.0.0.1 / SSH tunnel
/api/view → 401Auth enabled (expected)Pass -u user:token or --auth-file / --auth-user
Browser asks for a username/passwordAuth is mandatory on every endpointEnter a user and token from --auth-file. Only repositories granted to @anon are served anonymously (D78)
Push not in /api/viewRepository served without its pre-receive hookchoir repo create <owner/repo.git>, or restart the node
unknown_keyKey not in --keys-filechoir key … [channel] >> keys-file (hot-reloaded)
bad_signatureSignature does not cover the bytes sent; key is trustedRe-sign the exact (channel, payload). Unexpected: someone replayed a signature
stale_headCAS lost the raceRe-read /api/view, rebase on actual, resubmit
assignment_error / empty reviewersEmpty --reviewers-fileAdd at least two operator/… channels
review_requiredProtected ref, insufficient weightNode-drawn review, two operators approve, then push
Workspace slow / failsNo CoW FSUse APFS or btrfs
Lost submit responseNetwork blip after acceptResubmit identical signed bytes: already_applied: true (ERRORS.md)
Node will not start, log reported corruptA fully-written record breaks the chain mid-logchoir repair <log> --verify names the first bad record. Mid-log damage is a restore
A <log>.torn-<offset> file appearedKilled mid-write; the partial tail was quarantinedExpected. Nothing reads it
A submitter is told its quota is exhaustedThat actor has 512 ops awaiting a decisionNot the D37 quota. Retry when one completes
A restored node printed choir: retracted and refs are goneStarted before the git objects were in placeStart again from the backup into a clean root. Objects go in before first boot: docs/runbook-restore.md

Rejection code table: ERRORS.md.