{"server":"io.github.DevDizzle/gammarips","count":4,"changes":[{"tool":"replay_contract","kind":"changed","observed_at":"2026-10-03T20:14:42.765Z","fields":["annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"da8564eff48c21c3298aad5f45a9e2ac","after_hash":"dfec5d6d845b681282c1c94b8eea759d"},{"tool":"get_liquidity","kind":"changed","observed_at":"2026-10-03T20:14:42.765Z","fields":["annotations"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"c0c667853ac8125ced4d39e21dbfc778","after_hash":"13f3c82a54b7f0c246f524113bf64630"},{"tool":"query_outcomes","kind":"changed","observed_at":"2026-10-03T01:09:00.789Z","fields":["description"],"description_before":"\n    The realized-outcome + receipts substrate behind the engine. One tool,\n    nine `view`s. Whole-pool composites under any FIXED exit are NEGATIVE by\n    construction — these are a research surface (how outcomes distribute\n    across features and exits), never a strategy track record.\n\n      * view=\"labels\" (DEFAULT) — row-level realized bracket LABELS joined to\n        point-in-time features. horizon \"same_day\" (live V7.1 GIGO +40/-30) or\n        \"3d\" (legacy +80/-60) — never pooled. NULL-label and illiquid rows\n        excluded (counts in meta). `aggregate_only=True` returns summary stats\n        instead of rows. Filters: scan_date_from/to, ticker, delta_min/max,\n        min_overnight_score, exit_reason.\n      * view=\"summary\" — grouped aggregates over the labeled pool. `group_by`\n        one of none|delta_bucket|overnight_score|premium_score|exit_reason|\n        day_of_week|moneyness_bucket.\n      * view=\"surface\" — the OPPORTUNITY SURFACE: per-contract realized MFE/MAE\n        excursions with NO exit applied (profit potential, exit free). Uses\n        scan_date OR a `days` lookback, `ticker`, `delta_min/max`,\n        `include_open`. `aggregate_only=True` returns MFE/MAE quantiles over\n        the FULL filtered set — use it for exit design. The row mode is capped\n        at 200 and truncates oldest-first WITHIN a scan_date, so its oldest\n        date is a highest-MFE-only slice; it reports `truncated`,\n        `matched_rows`, and `partial_scan_date` so you can see that happen.\n      * view=\"harvest\" — the touch-probability curve: P(premium touched +X%)\n        with CIs, day-of-peak buckets, stop-touch rates. `targets`, `stops`,\n        date range, delta band.\n      * view=\"exit_rule\" — RESEARCH-ONLY \"bring your exit, we score it\":\n        rule=\"bracket\" (target_pct/stop_pct) or rule=\"trailing\" (trail_pct,\n        activation_pct) scored against the surface / minute tape.\n      * view=\"signal_performance\" — UNDERLYING-STOCK direction outcomes for\n        the broad pool (NOT option PnL). Filters scan_date, ticker, direction,\n        outcome.\n      * view=\"win_rate\" — aggregate UNDERLYING-direction win rate over `days`\n        (NOT option PnL; headline key carries its universe).\n      * view=\"positions\" — the RECEIPTS: realized (closed) paper trades from\n        the engine's own daily pick, row-level, cohort-filtered\n        (`policy_version`, default live). Over `days`, `limit`.\n      * view=\"performance\" — cohort AGGREGATE of the receipts over `days`\n        (win rate, avg/median/best/worst), `direction`, `min_premium_score`,\n        `policy_version`. When the cohort has no closed trades, every aggregate\n        is `null` and `total_trades` is 0 — NEVER 0.0. A `null` here means \"not\n        measured yet\", not \"zero percent\"; do not render it as a result.\n\n    All returns are FRACTIONS (0.40 = +40%). Realized data serves closed\n    windows only. Paper-traded research data; not investment advice.\n\n    Args:\n        view: which surface (see above). Default \"labels\".\n        horizon: \"same_day\" | \"3d\" (labels/summary/exit_rule). If omitted, the\n            native default per view is used: labels/summary => \"same_day\" (the\n            live GIGO policy), exit_rule => \"3d\" (its excursion window).\n        group_by: summary grouping dimension.\n        scan_date / scan_date_from / scan_date_to: date filters (per view).\n        ticker / direction / delta_min / delta_max / min_overnight_score /\n            exit_reason / outcome: row/aggregate filters (per view).\n        days: lookback window (surface/win_rate/positions/performance).\n        limit: max rows (labels 1-200, signal_performance 1-50, positions 1-200).\n        aggregate_only: labels/surface views — summary stats instead of rows.\n            On `surface` this is also the only mode immune to the 200-row cap.\n        include_open: surface view — include not-yet-closed windows.\n        targets / stops: harvest view — PERCENT grids.\n        target_pct / stop_pct / rule / trail_p","description_after":"\n    The realized-outcome history behind the pool: use it to set a target and\n    a stop from what past pool contracts actually did. One tool, nine\n    `view`s. A pool-wide result under one fixed exit describes that one rule,\n    not a forecast for the plan you build.\n\n      * view=\"labels\" (DEFAULT) — row-level realized bracket LABELS joined to\n        point-in-time features. horizon \"same_day\" (live V7.1 GIGO +40/-30) or\n        \"3d\" (legacy +80/-60) — never pooled. NULL-label and illiquid rows\n        excluded (counts in meta). `aggregate_only=True` returns summary stats\n        instead of rows. Filters: scan_date_from/to, ticker, delta_min/max,\n        min_overnight_score, exit_reason.\n      * view=\"summary\" — grouped aggregates over the labeled pool. `group_by`\n        one of none|delta_bucket|overnight_score|premium_score|exit_reason|\n        day_of_week|moneyness_bucket.\n      * view=\"surface\" — the OPPORTUNITY SURFACE: per-contract realized MFE/MAE\n        excursions with NO exit applied (profit potential, exit free). Uses\n        scan_date OR a `days` lookback, `ticker`, `delta_min/max`,\n        `include_open`. `aggregate_only=True` returns MFE/MAE quantiles over\n        the FULL filtered set — use it for exit design. The row mode is capped\n        at 200 and truncates oldest-first WITHIN a scan_date, so its oldest\n        date is a highest-MFE-only slice; it reports `truncated`,\n        `matched_rows`, and `partial_scan_date` so you can see that happen.\n      * view=\"harvest\" — the touch-probability curve: P(premium touched +X%)\n        with CIs, day-of-peak buckets, stop-touch rates. `targets`, `stops`,\n        date range, delta band.\n      * view=\"exit_rule\" — RESEARCH-ONLY \"bring your exit, we score it\":\n        rule=\"bracket\" (target_pct/stop_pct) or rule=\"trailing\" (trail_pct,\n        activation_pct) scored against the surface / minute tape.\n      * view=\"signal_performance\" — UNDERLYING-STOCK direction outcomes for\n        the broad pool (NOT option PnL). Filters scan_date, ticker, direction,\n        outcome.\n      * view=\"win_rate\" — aggregate UNDERLYING-direction win rate over `days`\n        (NOT option PnL; headline key carries its universe).\n      * view=\"positions\" — history of a RETIRED engine test: closed paper\n        trades from the engine's former one-pick-a-day tournament under one\n        fixed exit (retired 2026-09-28). Not the product and not the pool; do\n        not use it to judge the pool. Row-level, over `days`, `limit`.\n      * view=\"performance\" — aggregate of that retired test over `days`\n        (`direction`, `min_premium_score`, `policy_version`). Same caveat:\n        history of one retired rule, not a GammaRips result. When it has no\n        closed trades, every aggregate is `null` and `total_trades` is 0.\n\n    All returns are FRACTIONS (0.40 = +40%). Realized data serves closed\n    windows only. Paper-traded research data; not investment advice.\n\n    Args:\n        view: which surface (see above). Default \"labels\".\n        horizon: \"same_day\" | \"3d\" (labels/summary/exit_rule). If omitted, the\n            native default per view is used: labels/summary => \"same_day\" (the\n            live GIGO policy), exit_rule => \"3d\" (its excursion window).\n        group_by: summary grouping dimension.\n        scan_date / scan_date_from / scan_date_to: date filters (per view).\n        ticker / direction / delta_min / delta_max / min_overnight_score /\n            exit_reason / outcome: row/aggregate filters (per view).\n        days: lookback window (surface/win_rate/positions/performance).\n        limit: max rows (labels 1-200, signal_performance 1-50, positions 1-200).\n        aggregate_only: labels/surface views — summary stats instead of rows.\n            On `surface` this is also the only mode immune to the 200-row cap.\n        include_open: surface view — include not-yet-closed windows.\n        targets / stops: harvest view — PERCENT grids.\n        target_pct / stop_pct / rule / trail_pct / activati","description_similarity":0.857,"before_hash":"606fc50e13e87ee5f8c384129bf0bd72","after_hash":"6007966ec8a1908d83833aa3a585865a"},{"tool":"get_market_calendar_status","kind":"changed","observed_at":"2026-09-30T02:09:30.111Z","fields":["description"],"description_before":"\n    Market-calendar reference. Two `view`s:\n\n      * view=\"status\" (DEFAULT) — is the US equity market open today, plus the\n        next open/close, holiday, and early-close flags (NYSE calendar,\n        deterministic — no \"is the market open?\" hallucination).\n      * view=\"scan_dates\" — which recent scan dates have GammaRips data, with\n        per-date signal counts (the pool's data-availability calendar).\n\n    Args:\n        view: \"status\" (default) | \"scan_dates\".\n    ","description_after":"\n    Market-calendar reference. Three `view`s:\n\n      * view=\"status\" (DEFAULT) — is the US equity market open today, plus the\n        next open/close, holiday, and early-close flags (NYSE calendar,\n        deterministic — no \"is the market open?\" hallucination).\n      * view=\"scan_dates\" — which recent scan dates have GammaRips data, with\n        per-date signal counts (the raw scan's data-availability calendar).\n      * view=\"freshness\" — is the pool you are about to trade the right pool?\n        Returns schema \"pool-freshness/1\": expected_scan_date (the last NYSE\n        session before today), each pipeline stage (scan, enrichment,\n        liquidity) with its latest date, row count for the expected date,\n        and ok (true / false = overdue / null = could not check); the\n        enrichment stage also gives expected_rows (the rows the enrichment\n        filter must produce, so rows < expected_rows is a partial pool); the\n        scan_date get_pool(view=\"enriched\") serves by default\n        (pool_scan_date) and its row count (pool_rows), `fresh`, and machine\n        `reasons` (scan-stale, enrichment-stale, liquidity-stale, pool-stale,\n        pool-empty, unknown-<stage|pool>). Fail-closed: an unknown is never\n        fresh. A stage not yet due reports ok=true, due=false; before the\n        06:00 ET enrichment, fresh is false with reason pool-stale because\n        the next pool does not exist yet. No row floor is applied; apply\n        your own to pool_rows. Cached up to 60 s.\n\n    Args:\n        view: \"status\" (default) | \"scan_dates\" | \"freshness\".\n    ","description_similarity":0.339,"before_hash":"761ca7172618577cb60df913c8955431","after_hash":"ffcb529cc8c3693c5f9c48887b403888"}],"next_before":null,"next_actions":[]}