← Docs

Project status — 2026-10-12

Where the Astral Project stands, in numbers, diagrams, and gates. Every figure below is derived from the repository itself (the test suite, file birth dates, git log, the audit follow-ups note); sources are stated per figure so nothing here relies on memory. Supersedes status-2026-10-10.md, which stays as history.

Headline numbers

Metric Value Source
Tests passing 249, 0 failing cargo test --workspace, 2026-10-13
Clippy / fmt zero warnings / clean same run, -D warnings
Crates 8 (record, book, types, normalize, replay, exec, harness, python) workspace members
Spec/runbook docs 10, all built to the site docs/ + website/build.py
Research notes published 16 (3 negative + carry matrix complete + band gradient + full year + sessions + halt positioning + persistence trilogy + stress pair + simultaneity) research/001-* through 016-*
Commits on main 171 across 14 active days git log
Live venues verified Binance + Bybit captures, Coinbase trades/tickers README verification record
Open audit findings 1 of 13 still open (tail holes, documented) docs/audit-2026-10-06.md follow-ups
Seed benchmark corpus 2 reproducing runs out of the box benchmark-corpus/ + verify verdicts

Growth

tests passing at documented milestones

Test counts come from commit messages that state them (83 on 09-29, 114 on 10-02, 139 on 10-05, 200 on 10-09) plus direct measurements (243 on 10-12, 249 on 10-13, cargo test --workspace) — milestones, not continuous sampling. The slope is real work, not test inflation: each jump arrived with the feature it covers (adversarial fixtures, replay events, exec/harness, streaming ports, markouts, property sweeps, sweep subcommand).

commits per day

Ten pushes on 10-10 through 10-12 closed every code-actionable audit item: streaming replay, streaming normalize, normalized replay, streamed reconstruct/compare, maturin packaging, Python loop bindings, snapshot guidance, markouts, Fixed properties, the determinism gate, and the seed corpus — each pushed and verified separately.

System map

flowchart LR
    A[Exchange WebSocket] --> B[raw immutable frames]
    B --> C[compressed chunks<br/>streamed readers · SHA-256 index]
    C --> D[normalised Parquet<br/>streamed · read-back equal]
    C --> E[deterministic replay<br/>raw ≡ normalised signals]
    E --> G[exec-v1 fills + markouts<br/>print-through · horizons]
    G --> H[benchmark harness<br/>one replay · N probes]
    H --> I[hashed report<br/>registry · verify · seed corpus]
    D --> J[research notes<br/>negatives first-class]
    P[Python SDK<br/>loop from a notebook]
    E --> P
    D --> P
    classDef done fill:#0d3b34,stroke:#5eead4,color:#e6edf3
    classDef partial fill:#3a2f10,stroke:#fbbf24,color:#e6edf3
    classDef missing fill:#1a1f2b,stroke:#4b5563,color:#8b949e
    class A,B partial
    class C,D,E,G,H,I,J,P done

Gate funnel

flowchart TD
    G1[Gate 1 — capture & reconstruct<br/>code complete · evidence pending]
    G2[Gate 2 — does it work<br/>markouts built · calibration open]
    G3[Gate 3 — useful research<br/>4 notes, carry window done · live-carry open]
    G4[Gate 4 — others use it<br/>seed corpus ready · humans missing]
    G1 -->|72h soak + 2nd machine| G2
    G2 -->|shadow error small| G3
    G3 -->|one substantive note| G4
    G4 -->|5 users · 2 reproductions| G5[Beyond — defined by Gate 4]
    classDef open fill:#3a2f10,stroke:#fbbf24,color:#e6edf3
    class G1,G2,G3,G4 open

Each gate has a kill criterion in ROADMAP.md (10 bps model error, 3 fruitless months, 6 userless months). The funnel is honest about what blocks each step: wall-clock evidence and other humans, both unhurriable by commits.

Audit closure funnel

13 findings entered; 12 closed: overflow guards, soak backoff, manifest trust, schema gate, book errors, all CLI formats, trade sides, reconstruct gaps, sequence breaks, used-dir refusal, gap numbers, fuzz coverage — plus streaming (replay, normalize, reconstruct, compare, all measured), behavioral unification (replay_normalized: null rows replay as skips, raw ≡ normalized proven), snapshot guidance without a memory-mapped format, and the determinism gate. Open: tail holes (finding 9, documented as correct-by-construction). Post-audit hardening with README rows: decimal range, corrupt prints/sizes, BookTop gap-breaking, verify path validation, non-UTF8 skips, fee-error naming, gap-number recovery, seeded fuzzing, partition-by-instrument, index-count verification, undecodable-abort coverage, trade price range, failure-policy quiet corners, Fixed rounding ties, markouts, seed corpus. Full table in the audit doc.

What ends the OSS

What closes Gates 1–3 from here: the soak and second-machine evidence (both need hardware outside this machine), calibration/shadow measurement (weeks of observation), a substantive research note (needs a data window, e.g. funding carry once perp streams are reachable), and external users (need outreach, not code). The code is done to the strategy's definition — every "code open" item in the progress ledger is now built, measured, and pinned. What remains is evidence and humans.