PINK: E2E trace analysis — Pass 18 rust test gaps/accounting/FFI types (U1-U14)
Eighteenth pass: R2 compares cumulative vs last-fill realized PnL broken after 2nd fill (U3 Critical), R4 compares open_notional vs used_margin fundamentally different quantities (U4 Critical), on_venue_event/apply_fill no NaN guards price/size propagates NaN (U6 Critical), order_type/limit_price sent to Rust no fields silently dropped (U1 High), VenueEventStatus expects "CANCEL_REJECTED" typo fails deserialization (U2 High), R3 skipped when len(e.positions)==0 silent false negative (U5 High), zero Rust tests for ORDER_REJECT/PARTIAL_FILL/TERMINAL_STATE guard (U7 High), safe_float returns NaN/Inf contradicts _safe (U8 Medium), _scan_slots uses metadata leverage not slot.leverage (U9 Medium). 333 total flaws across 18 passes. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
This commit is contained in:
@@ -32,7 +32,8 @@
|
||||
| R | Pass 15 (Resource Leaks/Trust Boundaries/Security) | 14 | 2 | 6 | 3 | 2 | 1 |
|
||||
| S | Pass 16 (Error Handling/Arithmetic/Test Infra) | 16 | 4 | 7 | 5 | 0 | 0 |
|
||||
| T | Pass 17 (Unsafe Review/Dead Code/Build/Protocols) | 14 | 0 | 5 | 5 | 4 | 0 |
|
||||
| **Total** | | **319** | **27** | **95** | **92** | **64** | **37** |
|
||||
| U | Pass 18 (Rust Test Gaps/Accounting/FFI Types) | 14 | 3 | 4 | 4 | 3 | 0 |
|
||||
| **Total** | | **333** | **30** | **99** | **96** | **64** | **37** |
|
||||
|
||||
---
|
||||
|
||||
@@ -462,6 +463,29 @@
|
||||
|
||||
---
|
||||
|
||||
## U-Series: Rust Test Gaps, Accounting Reconciliation Bugs, FFI Type Mismatches (Pass 18)
|
||||
|
||||
*Full detail in TRACE doc under "PASS 18 — RUST TEST GAPS, ACCOUNTING RECONCILIATION BUGS, FFI TYPE MISMATCHES."*
|
||||
|
||||
| # | Flaw | Layer | Severity |
|
||||
|---|------|-------|----------|
|
||||
| U1 | `order_type`/`limit_price` sent to Rust, no serde fields — silently dropped | FFI | **High** |
|
||||
| U2 | Rust `VenueEventStatus` expects `"CANCEL_REJECTED"` (typo) — `"CANCELED_REJECTED"` fails deserialization | Rust | **High** |
|
||||
| U3 | R2 compares cumulative K realized vs single-last-fill E realized — broken after 2nd+ fill | Accounting | **Critical** |
|
||||
| U4 | R4 compares K open_notional vs E used_margin — fundamentally different quantities | Accounting | **Critical** |
|
||||
| U5 | R3 skipped when `len(e.positions)==0` — K has positions but E reports none, silent | Accounting | **High** |
|
||||
| U6 | `on_venue_event`/`apply_fill` no NaN guards on venue event price/size — NaN propagates | Rust | **Critical** |
|
||||
| U7 | Zero Rust tests for ORDER_REJECT, PARTIAL_FILL, TERMINAL_STATE guard, etc. | Test | **High** |
|
||||
| U8 | `safe_float()` returns NaN/Inf instead of default — contradicts `_safe()` | Bridge | Medium |
|
||||
| U9 | `_scan_slots` uses `metadata.get("leverage")` not `slot.leverage` — wrong leverage | Accounting | Medium |
|
||||
| U10 | Rust injects `"k_net_fees"` key alongside serde's `k_fees_paid` — duplicate | Bridge | Low |
|
||||
| U11 | 10+ AccountState fields transmitted across FFI but never read by Python | FFI | Low |
|
||||
| U12 | `_order_from_payload()` overwrites `internal_trade_id` with slot's trade_id | Bridge | Medium |
|
||||
| U13 | No independent third reference — symmetrical K=E errors invisible | Accounting | Medium |
|
||||
| U14 | `lot_step` declared in ReconcileConfig but never used — dead field | Accounting | Low |
|
||||
|
||||
---
|
||||
|
||||
## H-Series: Edge Domains — Dependencies, Error Handling, Types, Contracts (Pass 5)
|
||||
|
||||
*Full detail in TRACE doc under "PASS 5 — EDGE DOMAINS."*
|
||||
|
||||
Reference in New Issue
Block a user