Skip to content

v2.0.0 — Greenfield redesign: ports-and-adapters core, Nautilus engine, tick data

Choose a tag to compare

@sohan-shingade sohan-shingade released this 07 Jul 16:38

Flint 2.0.0 — the greenfield rewrite

Ground-up rewrite of Flint on a ports-and-adapters architecture. 85 commits, ~930 files changed vs v1.5.4. Canonical spec: docs/redesign/DESIGN.md; honest build ledger: docs/redesign/STATUS.md.

Architecture

  • Strict one-directional layering: core/ (pure models) → engine/services/ → surfaces (api/, sdk/, mcp_srv/, agent/). Surfaces talk only to services/.
  • Every service call takes a TenantContext; tenant scoping is enforced by a two-tenant cross-leak contract test.
  • All I/O behind six ports with local adapters (DuckDB, in-memory bus, .env secrets, in-proc jobs).

Engine

  • Nautilus Trader is the only simulation substrate — the legacy bar engine and the Rust engine are deleted. Parity goldens were frozen from the legacy engine before removal (byte-exact funding, liquidation, and cross-market ordering).
  • Bar strategies run unmodified via the bar-lane shim with Flint-priced fills; TickStrategy gets native L2 matching and process()-driven perp economics.
  • Warm-start seam: seed positions materialize in Nautilus with strict reconciliation; paper lane runs on the same engine.
  • Liquidation: tiered maintenance, cross-pool cascade, HL backstop. Funding: predicted/final split, cap, oracle-priced settlement.

Data

  • Tick-data foundations: kinds/schemas, CoverageLedger, Tardis vendor adapter (CSV datasets client, ledger-driven backfill), live tick recorder (BBO quotes, predicted funding), BOOK_DELTA streaming with quotas + prune.
  • Granularity tiers with auto-resolution and structured rejections.
  • Funding is a hard gate: a backtest over a window without real funding data is rejected with available ranges and the fix — never silently zero-filled or interpolated.
  • No synthetic data anywhere (D26): tests use hand-authored inputs or real recorded fragments.
  • One-shot importer for legacy v1.x DuckDB lakes — old data is imported, never discarded.

Strategy surface & security

  • Public Strategy API with Signal → Order conversion and a read-only context; declarative ML strategies with a managed model store and feature-causality screen; 9+ built-in templates.
  • User strategy code runs in an OS-isolated sandbox subprocess (env-scrub + RLIMIT; nsjail/seccomp on Linux). The AST import allowlist is lint-grade UX, not the security boundary.

Surfaces

  • REST/WS API front door, SDK Lab + flint CLI over services/, MCP agent surface, HL live executor with caps, kill switch, and reconciliation.
  • New web UI: v1 shell with Dashboard/Lab/Docs, backtest results, funding heatmap, data explorer, funding lab.

Test baseline

pytest tests/ -q679 passed, 4 skipped · UI vitest 151 passed · ruff check clean · codemap check green (33 shards).

Housekeeping

  • Drift Protocol remains dropped (offline post-hack). Hyperliquid is the live venue; Jupiter and Phoenix are planned expansion.
  • All pre-redesign work reconciled: restructure (merged as v1.4.0 / #33), Jupiter perps, volume-scaled CEX fills, repo declutter are all in main's history; 21 stale branches pruned.

Full Changelog: v1.5.4...v2.0.0