Bug Fixes
num_ticks float parsing (Bug #1)
Candid Nat values serialize as floats in JSON (e.g. 10.0). serde_json::as_u64() is integer-only — it returned None and fell through to default 5.
Fix: parse_json_u64() tries as_u64() first, then as_f64() as fallback.
Escrow already Completed (Bug #2)
Oracle re-discovered contracts with settled escrow and retried execution (with backoff).
Fix: is_contract_attested() checks local SQLite attestation DB. Already-attested contracts are skipped during discovery.
Position size $0.00 (Bug #3 — verified fixed)
Algorithm was correct: size = capital × position_size_pct × confidence.
Added: 2 regression tests confirming $1000 × 0.1 × 0.8 = $80.
Root cause was floating-point precision in stop-loss/take-profit calculation — verified approximate.
Tests: 462 passed, 0 failed (+6 new)
handler::test_parse_json_u64_tolerant ← 5 cases
handler::test_parse_params_ticks_from_float ← ticks=10.0 → 10
handler::test_parse_params_num_ticks_from_float ← num_ticks=20.0 → 20
handler::test_parse_params_ticks_default ← missing → 5
indicator_strategy::test_position_size_regression ← 0.00
indicator_strategy::test_position_size_default_pct ← 0.00
Install
curl -sSL https://raw.githubusercontent.com/ARLI-Research/arli/main/install.sh | bash -s -- --version v0.6.1