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.
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.