> ## Documentation Index
> Fetch the complete documentation index at: https://docs.darkpool.fun/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting

> Symptoms, likely causes, fixes.

## Move + on-chain

| Symptom                                                              | Likely cause                                           | Fix                                                                                                  |
| -------------------------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- |
| `predict::mint` aborts with "quote-asset not allowed"                | DUSDC type mismatch                                    | Verify `DUSDC_COIN_TYPE` matches `0xe95040…::dusdc::DUSDC` (the DeepBook-allowlisted type)           |
| `MARKET_REGISTRY_ID` empty after publish                             | `parse-publish-output` couldn't find the object change | Re-run `pnpm env:from-publish --force` or look at `objectChanges` manually in `/tmp/dp-publish.json` |
| `binary-market:create` Move build error                              | Slug contains uppercase or a hyphen                    | Slug must match `/^[a-z0-9_]+$/`                                                                     |
| `binary-market:resolve` aborts with `EWrongCap`                      | ResolverCap id doesn't match the Settlement            | Verify the cap from `.binary-markets/registry.json`                                                  |
| `dark_pool::deposit` aborts with `EHashLenMismatch`                  | Attribution hash isn't 32 bytes                        | The deposit PTB pads with 32 zero bytes when Seal is off. Check `lib/ptb.ts`                         |
| `binary-market:create` fails with "Could not find both TreasuryCaps" | Slug used a Move reserved word                         | Choose a slug that doesn't collide (e.g. avoid `coin`, `balance`)                                    |
| `place_limit_order` aborts `EBalanceManagerBalanceTooLow` (code 3)   | No 5% fee headroom                                     | Keeper / seeder must quote `roundLot(held × 100/105)`                                                |
| Frontend trade aborts with "balance too low at execution"            | Stale quote, price ticked up between quote and submit  | `useTxSigner` already asserts via `waitForTransaction`; humanized error explains. Just retry         |

## Backend

| Symptom                                                                                        | Likely cause                                                             | Fix                                                                                                                                                |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Frontend shows "Server URL unreachable"                                                        | api process not running, or port mismatch                                | Check `VITE_SERVER_HTTP_URL` matches `SERVER_PORT`                                                                                                 |
| Indexer logs no events                                                                         | Wrong `DARKPOOL_PACKAGE_ID` or no events emitted yet                     | Verify the package id matches the live deployment; trigger a test event                                                                            |
| Resolver says `RESOLVER_KEY is not set` even though `.env` has it                              | `tsx watch` doesn't walk up to repo-root `.env` like one-shot `tsx` does | `packages/shared/src/env.ts` already walks up ancestors. Confirm `.env` is at repo root and the line is `RESOLVER_KEY=suiprivkey1…` with no quotes |
| Auto-settle log shows the same `digest=…` line twice + a "rejected by 1/3 of validators" error | Two resolver processes running concurrently (stale `tsx watch` child)    | Ctrl-C every resolver shell, `pkill -f "resolver/src/index"`, restart one                                                                          |
| Vite throws "VITE\_ENOKI\_API\_KEY undefined"                                                  | `.env` is at the wrong location                                          | `.env` should be at repo root, `vite.config.ts` has `envDir: "../../"`                                                                             |

## Toolchain

| Symptom                                                                                | Likely cause            | Fix                                                                            |
| -------------------------------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------ |
| `pnpm --filter @darkpool/server …` errors with "pnpm requires at least Node.js v22.13" | Shell is on v22.11      | `nvm use 22.13` (per-shell) or `nvm alias default 22.13` (persistent)          |
| `nvm` complains about `~/.npmrcglobalconfig`/`prefix`                                  | Mismatched globalconfig | Either pin with `nvm alias default 22.13` or clean those lines from `~/.npmrc` |

## Agent runtime

| Symptom                                                            | Likely cause                       | Fix                                                                                |
| ------------------------------------------------------------------ | ---------------------------------- | ---------------------------------------------------------------------------------- |
| Action feed fills with 22+ identical "Balance of gas object…" rows | Out of gas                         | Refuel signer with SUI; runtime collapses identical entries with `xN` counter      |
| LLM agent silently falls back to `alternate`                       | Missing `LLM_API_KEY`              | Set it in `.env`. Provider preset picks defaults                                   |
| Agent ticks every minute with no mints                             | Probe out of bounds                | Check the strategy `ask_bounds`; testnet oracles only quote \~+/-\$500 around spot |
| Fleet card shows red dot                                           | `/status` endpoint unreachable     | Check the agent process is running on the right port                               |
| Agent paused but runtime keeps logging "would mint"                | `TRADE_AGENT_ID` not set in `.env` | Set it; the runtime then reads `is_active` per tick                                |
