IRL L2 Audit, LLM narrative, 5-day forecast, regime alerts, free tier endpoint

Major feature sprint: IRL Engine gains a deep audit endpoint for L2 subscribers. The signal package now includes an LLM-generated narrative via Claude Haiku. The 5-day ARIMA forecast is live and auth-gated. Regime transitions fire real-time alerts to X and Discord. A new unauthenticated endpoint exposes the live regime to the public as a free-tier entry point. Weekly digest email ships to all subscribers every Monday morning.

NewGET /v1/irl/audit — IRL Engine L2 deep decomposition: PCA factor attribution (PC1–PC4 with directional scores), stress indicator z-scores (VIX, HY spread, yield curve, DXY, net liquidity), liquidity attribution in $bn, HMM transition probability matrix, model drift health flags. Requires irl_audit tier.
NewGET /v1/public/regime — unauthenticated endpoint returning the live regime, risk score, equity exposure recommendation, plain-English interpretation, and an upgrade CTA. Free-tier entry point, no API key required.
NewGET /v1/account — returns tier, product line, agent count, payment status, daily request usage, feature entitlements, Stripe billing portal link, and docs URL. Works with any valid API key.
NewGET /v1/signals/history?days=N — regime history with probabilities for all tiers. Returns up to 90 days of {date, regime, risk_score, prob_*} rows.
NewLLM narrative in signal package — Claude Haiku generates a 2–3 sentence macro interpretation on every pipeline run. Included in /v1/signals/latest as narrative. Falls back to rule-based text if API is unavailable.
NewRegime change alerts — on every regime transition the pipeline posts to X (Twitter OAuth 1.0a) and Discord (colored embed with regime shift, risk score, new equity exposure). IRL subscribers now correctly receive email alerts alongside MacroPulse subscribers.
NewWeekly digest — every Monday at 09:00 UTC, all newsletter subscribers receive a formatted macro brief (regime, risk score, signal gauges, LLM narrative, dashboard CTA).
FixGET /v1/forecast was returning 500 due to a missing await on the DB query and missing auth. Both fixed — now requires Paid tier and returns correctly.
FixIRL welcome email CTA previously linked to a non-existent sandbox URL. Now correctly points to macropulse.live/irl-welcome.html.
FixGET /v1/irl/heartbeat was open to all keys. Now requires an IRL-tier key (irl_sidecar, irl_audit, or owner).
ImprovedCommentary endpoint fixed — 3 missing await calls on DB queries resolved; no longer returns stale/empty data.
ImprovedPipeline staleness check correctly uses the event loop via run_coroutine_threadsafe — no more asyncio.run() conflict inside the scheduler thread.
InfraStripe env vars documented in .env.example. Lemon Squeezy and Paddle references removed — Stripe is the sole billing provider.
IRL Engine v1.2 — Layer 2 live, Python SDK, MtaMode::None

IRL Engine v1.2 ships with Layer 2 anti-replay fully live in production. Every authorize request now requires a signed heartbeat from the MTA operator, cryptographically binding the agent's regime knowledge to a real broadcast timestamp. New Python SDK (pip install irl-sdk) makes integration a 10-line async call. MtaMode::None lets firms use IRL as a pure cryptographic audit rail with no external signal.

NewLayer 2 heartbeat anti-replay live in production — every authorize binds to a signed MTA broadcast via Ed25519 + monotonic sequence
NewPython SDK irl-sdk — async IRLClient, automatic heartbeat fetch, AuthorizeRequest, TradeAction, OrderType
NewMtaMode::None — production-valid passthrough mode for firms managing risk externally; traces record signal_mode="none"
Newsignal_mode field on every trace — "live" / "mock" / "none" — auditors can see exactly how the regime context was produced
NewOTS receipt automation — Bitcoin-anchored Merkle proof upgrade runs every 6 hours via cron
InfraIRL Engine Docker runtime switched to debian:bookworm-slim — healthcheck now functional; distroless removed
FixMacroPulse /v1/regime/current broadcast_time now uses DB timestamp — every call for the same regime returns identical bytes, fixing MTA ref hash mismatches
Stripe billing — self-serve checkout live

Billing migrated from Paddle to Stripe. Starter ($49/mo) and Pro ($199/mo) checkout is fully self-serve from the dashboard. Existing subscribers were migrated automatically.

NewStripe Checkout for Starter and Pro subscriptions — hosted, PCI-compliant
NewStripe Customer Portal for self-serve subscription management and cancellation
InfraWebhook handler for 6 Stripe events — idempotent, signature-verified
ImprovedLegal pages (Privacy, Terms, Refund Policy) updated to reference Stripe
Self-serve registration + Account dashboard

Users can now register directly from the dashboard — no manual key issuance needed. Two-step email verification (6-digit code) issues a free API key instantly. New Account section in the dashboard shows tier, daily usage, upgrade CTAs, billing portal access, and one-click key rotation. Paddle checkout and billing portal are wired to the backend.

  • new Self-serve registration modal in dashboard (email → verify code → get key)
  • new Account view: tier badge, usage bar, upgrade buttons, key rotation
  • new Billing portal link for Starter/Pro subscribers
  • new IRL Engine v1.1: shadow mode, Prometheus metrics, Python + TypeScript SDKs
  • new IRL Engine docs: developer guide, operations guide, compliance guide, exchange integration guide
Marketing site redesign + pricing restructure

Complete site redesign with terminal brutalist aesthetic. Pricing tiers restructured so Free/Starter/Pro each have a clear analytical upgrade path. Performance chart now shows live data from the API. Dashboard tier gates updated to match.

NewBrutalist terminal site design — JetBrains Mono dominant, scanlines, glitch animations, scroll reveals
NewPerformance chart now pulls live data from /v1/public/chart-data with regime color bands
ImprovedPricing: Starter ($49) = signals + liquidity + 6-month history; Pro ($199) = domain views + backtest + webhooks + 2yr history
ImprovedDashboard upgrade gates now correctly distinguish Starter vs Pro features
ImprovedWelcome page rewritten with brutalist style and quick-start code snippet
Domain views + regime calendar heatmap

Six new domain views in the dashboard (Inflation, Growth, Rates, Commodities, FX, Crypto) powered by the macro features time series. Plus a GitHub-style regime calendar heatmap showing 2 years of classified history.

NewInflation, Growth, Rates, Commodities, FX, Crypto domain views (Pro)
NewRegime calendar heatmap — GitHub contribution graph style, colored by macro regime
New/v1/features endpoint exposing macro feature time series
ImprovedStrategy vs buy-and-hold chart now shows live return comparison and outperformance
ImprovedMarketing site: animated methodology steps, color accents, social links
FixDashboard risk score timeline x-axis now always renders oldest → newest
Backtest engine + public chart endpoint

Full backtest engine added for Starter/Pro users. Public endpoint exposing 730-day regime history to power the marketing site live chart — no API key required.

NewBacktest engine: regime-conditional return attribution over full history
New/v1/public/chart-data — unauthenticated endpoint for marketing site
NewNewsletter subscribe endpoint /v1/public/subscribe
ImprovedDashboard header shows live data timestamp (UTC) instead of browser clock
InfraAPScheduler daily pipeline pinned — scheduler no longer resets on container restart
Signals deep-dive + liquidity analysis views

Two new dashboard views giving paid users deeper signal and liquidity context. Plus WebSocket live updates on regime change.

NewSignals deep-dive view: factor scores, scorecard, drift panel
NewLiquidity analysis view: net Fed liquidity trend + z-score chart
NewWebSocket stream — dashboard updates live on regime change
ImprovedRegime persistence days now shown in header signal summary
Tier system + 2-step email auth

Replaced single API key model with tiered access (Free / Starter / Pro). Email verification flow — no passwords.

NewFree / Starter / Pro tiers with per-tier rate limits and feature gates
New2-step email registration: OTP verify → instant API key
InfraTimescaleDB hypertables for regime and liquidity history
Infranginx + Let's Encrypt SSL on api.macropulse.live
Initial launch

First production release. PCA + Gaussian HMM pipeline classifying 10 macro inputs into 4 daily regime labels via REST API.

NewPCA + Gaussian HMM pipeline: 10 inputs → 4 orthogonal factors → regime label
New/v1/signals/latest — regime, confidence, persistence, factor scores
New/v1/regime/history — full regime history with risk scores
NewReact dashboard with RegimeCard, RegimeTimeline, MacroHeatmap
InfraDocker Compose stack on VPS — FastAPI + TimescaleDB + nginx
InfraDaily pipeline cron at 18:30 UTC via APScheduler