The initial M-series specs were wrong (text digestion pipeline). Replaced
with the actual economy organ architecture:
M0 hub (independent system, scoped autonomy, multi-layered braking)
M1 Marketplace (multi-trader harness, deterministic law script, veto)
M2 Data Feeds (RSS + live market, bridges Marketplace ↔ Sims)
M3 Sims hub + 7 sub-specs (always-running, bounded predictions):
M3a statistical, M3b sociological, M3c AMM/liquidity,
M3d MEV/adversarial, M3e tokenomics/macro, M3f consensus/staking,
M3g market microstructure
M4 Wallets (sovereign custody, our keys only, 1:1 trader binding)
M5 Traders (AI actors, wallet-bound, all tool calls monitored)
M6 Conductor (supervisory AI, veto, pause/investigate, SAE intake)
M7 SAE monitor (trader surveillance, Brain-compatible message format)
Grounded in AMM invariant mechanics, MEV game theory, SDE tokenomics,
and evolutionary consensus games. Tax stub for Verschwörern Veregeister.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.9 KiB
M2 — Data feeds (market data pipeline)
1. Component
The economy organ's sensory nervous system: live RSS feeds, price streams, and on-chain data flowing into both the Marketplace (M1) and the Sims (M3). Sits between them — the Marketplace produces execution data (fills, positions, P&L) that feeds back into Sims, and Sims produce predictions that inform Traders operating through the Marketplace. Data Feeds is the bridge.
2. Status / certainty
DESIGN-FIRST · ABSENT. Role C3; implementation C1.
3. Language & location
TBD · src/economy/feeds/. Needs async I/O for streaming data (WebSockets, SSE, RSS polling).
Pony actors are a natural fit (async, backpressure-aware). Python or Rust for API client libs.
4. Does / does-not
- Does: ingest live market data from external sources (RSS, price APIs, DEX subgraphs, on-chain event logs); normalize heterogeneous data into a common internal format; distribute to Sims (M3) for prediction and to Traders (M5) for decision-making; ingest Marketplace (M1) execution data (fills, portfolio state) and feed it back into Sims for calibration; maintain time-series history within session (ring buffer).
- Does-not: predict (Sims do); trade (Marketplace does); filter or editorialize data — it delivers raw, normalized feeds. Interpretation is the consumer's job.
5. Interface contract
subscribe(feed_type: FeedType, consumer_id) -> subscription_handle.FeedType∈ {price_tick,rss_news,on_chain_event,dex_pool_state,execution_fill,portfolio_state}.publish(feed_type, data_point: NormalizedDatum)— internal; sources push into the pipeline.query_history(feed_type, time_range) -> [NormalizedDatum]— sims and traders can pull historical data within the session window.NormalizedDatum { feed_type, source, timestamp, payload, confidence }— common shape.confidence∈ [0.0, 1.0] — data source reliability (exchange-reported price = high; RSS sentiment = lower).
6. Dependencies & stubs
- External data sources (price APIs, RSS, RPC nodes) — stub: canned market data replay.
- M1 Marketplace — execution data source (fills, positions); stub: canned fills.
- M3 Sims — primary consumer; stub: print data points.
- M5 Traders — secondary consumer; stub: print data points.
7. Invariants / laws
- L1 (C4): data feeds are raw and unnormalized in meaning — the pipeline normalizes format (schema, timestamps, units) but never interprets, filters, or editorialize content.
- L2 (C4): bidirectional flow — external data flows in (market → sims/traders), and
internal execution data flows back (marketplace → sims). Both directions use the same
NormalizedDatumshape. - L3 (C3): backpressure, not drop — if a consumer is slow, buffer up to a cap, then apply backpressure to the source. Never silently drop data points.
- L4 (C3): every datum carries a source and timestamp — consumers can always trace where data came from and when.
8. Build steps
- Define
NormalizedDatumandFeedTypeshapes. - Implement the pub/sub pipeline (subscribe, publish, distribute).
- Wire external source adapters (start with one price API + one RSS feed).
- Wire M1 execution data feedback loop.
- Implement session-scoped time-series history (ring buffer).
9. Tests
Normalization: heterogeneous inputs produce uniform NormalizedDatum output. Pub/sub: subscriber
receives published data. History: query returns correct time range. Backpressure: slow consumer
does not cause data loss. Bidirectional: marketplace fills reach sims via the feed.
10. Open items
- Which price APIs / RSS sources to support initially (CoinGecko? DeFiLlama? specific DEX subgraphs?).
- History buffer size / eviction policy.
- Whether feeds need authentication / rate limiting management.
- Latency requirements (how fresh must data be for each consumer type?).