# Phoenix — dated pitfalls and invariants

This table summarizes Phoenix perpetuals implementation traps without reproducing account data or operational tuning. Live observations, simulations, public source facts, and experimental safeguards have distinct scopes.

## TL;DR

Exact numbers, raw account identity, one-signature intents, parsed transaction results, and trusted slot evidence are required to interpret an operation. Chain confirmation alone is insufficient.

## 1. Dated findings

| Date / evidence | Trap | Rule | Detail |
|---|---|---|---|
| Observed 2026-09-24 | Bid order sequences exceed double precision | Exact decimal u64 strings | [orders.md](orders.md) §2 |
| Encoding rule | Lowercasing base58 changes identity | Canonical case-sensitive 32-byte keys | [account-and-delegation.md](account-and-delegation.md) §1 |
| Rise 0.5.28 source | Price helper multiplies floats then floors | Exact tick quantization | [markets-and-numbers.md](markets-and-numbers.md) §1 |
| Rise 0.5.28 source | IoC defaults to submitted minimum fill | Explicit zero minimum for partial IoC | [orders.md](orders.md) §1 |
| Simulation 2026-09-24 | Reduce-only without exposure fails | Fresh signed position before construction | [orders.md](orders.md) §4 |
| Observed 2026-09-24 | Resting reduce-only quantity does not shrink | Matching after flat remains unverified | [orders.md](orders.md) §4 |
| Simulation/observation 2026-09-24 | Cancel can be cold/no-found no-op | Effective result and exact not-found IDs | [orders.md](orders.md) §5 |
| Simulation 2026-09-24 | Crossing post-only can fail transaction | Explicit packet behavior | [orders.md](orders.md) §1 |
| Simulation/observation 2026-09-24 | Return data in/out is engine perspective | Buy base-out; sell base-in | [orders.md](orders.md) §3 |
| Observed 2026-09-24 | RPC state lags transaction | Slot gate and stable reread | [api-and-reads.md](api-and-reads.md) §3 |
| Offline 2026-09-25 | Builder ID capacity exceeds packet capacity | Measure final bytes; conservative batching | [orders.md](orders.md) §5 |
| Public SDK source | Book capacity is per side | 64 per trader/market/side | [orders.md](orders.md) §5 |
| Observed 2026-09-27 | Limit price understates deep bid reserve | Mark valuation; no simplistic full calculator | [margin.md](margin.md) §2 |
| Observed 2026-09-27 | After-hours mistaken for no trading | Fresh execution band and transition | [markets-and-numbers.md](markets-and-numbers.md) §3 |
| Public probe 2026-10-03 | Listings/status change | Fresh metadata over remembered inventory | [markets-and-numbers.md](markets-and-numbers.md) §2 |
| Toolkit contract | HTTP timeout can precede late landing | Preserve signature and resolve | [signing-and-sidecar.md](signing-and-sidecar.md) §2 |
| Toolkit contract | Re-signing “retry” can double execute | Rebroadcast the same signed bytes | [signing-and-sidecar.md](signing-and-sidecar.md) §3 |
| Source analysis, experimental | Delegate risk exceeds ordinary withdrawal rule | Inspect SwapNative flags, disclose unproven path | [account-and-delegation.md](account-and-delegation.md) §4 |
| Source/observed dependency behavior | Missing `ws` peer breaks signer runtime | Exact dependency set and offline checks | [signing-and-sidecar.md](signing-and-sidecar.md) §1 |

## 2. Diagnostic evidence

Recognize margin evidence (`InsufficientFunds`, unhealthy exposure increase), no-position reduce-only failure, `OrderNotFound`, cold cancel no-op, compute exhaustion, and program return-data inconsistencies. Public Rust event reasons include capacity, post-only cross, packet, time-in-force, and band rejection. Their names do not prove the live envelope or establish a unique cause without transaction context.

Keep no-send, preflight rejection, landed failure, confirmed empty result, confirmed post/fill, and unknown separate. Only record public protocol conclusions after removing identities, experiment values, and encoded live transaction data.

## Open questions / not verified

- Resting reduce-only match after flat, post-only reduce-only/market acceptance, band-edge behavior, capacity event form, and large-batch CU requirements.
- Idle account-slot meaning, cancellation risk thresholds, isolated delegate workflows, and experimental signer/delegation validation.

## Sources

Primary source URLs and evidence dates are in the linked topic files. Official documentation index: [Official documentation index](https://docs.phoenix.trade/llms.txt); public source: [Rise public source](https://github.com/Ellipsis-Labs/rise-public). Facts and current metadata were checked through 2026-10-03.

<!-- license-footer -->
_© markpaper authors. Licensed under [CC BY 4.0](LICENSE.md): when publishing or adapting this material, credit “markpaper — Phoenix knowledge base” and link to the original and the license._
