mirror of
https://github.com/BigBodyCobain/Shadowbroker.git
synced 2026-08-19 17:07:22 +02:00
Feat/gt analytics openclaw (#392)
* feat(telegram): auto-translate OSINT channel posts to English Cherry-picked from @Bobpick PR #391 (telegram-only slice): server-side translation during fetch, SHOW ORIGINAL toggle in TelegramOsintPopup, and on-demand /api/telegram-feed?lang=. Co-authored-by: Robert Pickett <bobpickettsr@yahoo.com> Co-authored-by: Cursor <cursoragent@cursor.com> * feat(gt): experimental Derived OSINT analytics with lean-node safeguards Cherry-picked from @Bobpick PR #391 (GT + OpenClaw slice): Bayesian strategic-risk engine, map overlay, OpenClaw commands, and telegram_rhetoric watchdog. Off by default (GT_ANALYTICS_ENABLED=false, gt_risk layer false). 1 vCPU nodes get cgroup detection, UI warning on layer toggle, and lean profile that skips scheduled ingest/Louvain unless GT_ANALYTICS_ACK_LOW_CPU=true. Backtest HUD removed from dashboard (OpenClaw/API regression only). Co-authored-by: Robert Pickett <bobpickettsr@yahoo.com> Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Robert Pickett <bobpickettsr@yahoo.com> Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Robert Pickett
Cursor
parent
9c5a4054f6
commit
cfbeabda1e
@@ -0,0 +1,170 @@
|
||||
"""Rolling weekly operational validation for Strategic Risk Analytics."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from datetime import date
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from analytics.backtest import DEFAULT_BACKTEST_ALERT_THRESHOLD
|
||||
from analytics.gt_early_warning import GT_EarlyWarning
|
||||
from analytics.integration import reset_gt_engine
|
||||
from analytics.rolling_backtest import (
|
||||
freeze_weekly_snapshot,
|
||||
iso_week_id,
|
||||
label_regions,
|
||||
rolling_report,
|
||||
score_week,
|
||||
)
|
||||
from analytics.settings import GTAnalyticsSettings
|
||||
from analytics.weekly_store import RegionSnapshot, WeeklySnapshot, load_week
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def rolling_store(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> Path:
|
||||
store = tmp_path / "gt_rolling"
|
||||
monkeypatch.setenv("GT_ROLLING_STORE_DIR", str(store))
|
||||
return store
|
||||
|
||||
|
||||
def _seed_engine() -> GT_EarlyWarning:
|
||||
engine = GT_EarlyWarning(GTAnalyticsSettings(enabled=True, base_prior=0.15))
|
||||
engine.process_feed_item(
|
||||
{
|
||||
"text": "Troop movement and military mobilization near border",
|
||||
"region": "ukraine",
|
||||
"source": "test",
|
||||
"source_type": "manual",
|
||||
}
|
||||
)
|
||||
engine.process_feed_item(
|
||||
{
|
||||
"text": "Routine diplomatic statement about trade",
|
||||
"region": "canada",
|
||||
"source": "test",
|
||||
"source_type": "manual",
|
||||
}
|
||||
)
|
||||
return engine
|
||||
|
||||
|
||||
def test_iso_week_id_format() -> None:
|
||||
assert iso_week_id(date(2026, 6, 16)) == "2026-W25"
|
||||
|
||||
|
||||
def test_freeze_and_score_week(rolling_store: Path) -> None:
|
||||
engine = _seed_engine()
|
||||
result = freeze_weekly_snapshot(
|
||||
week_id="2026-W10",
|
||||
engine=engine,
|
||||
frozen_by="test",
|
||||
)
|
||||
assert result["ok"] is True
|
||||
assert result["created"] is True
|
||||
assert result["region_count"] >= 2
|
||||
|
||||
snapshot = load_week("2026-W10")
|
||||
assert snapshot is not None
|
||||
ukraine = next(row for row in snapshot.regions if row.region == "ukraine")
|
||||
assert ukraine.alerted is True
|
||||
|
||||
pending_score = score_week(snapshot)
|
||||
assert pending_score.labeled == 0
|
||||
assert pending_score.scorable is False
|
||||
|
||||
label_regions(
|
||||
"2026-W10",
|
||||
[
|
||||
{"region": "ukraine", "label": "true_escalation"},
|
||||
{"region": "canada", "label": "benign"},
|
||||
],
|
||||
)
|
||||
labeled = load_week("2026-W10")
|
||||
assert labeled is not None
|
||||
scored = score_week(labeled)
|
||||
assert scored.labeled == 2
|
||||
assert scored.true_positives == 1
|
||||
assert scored.true_negatives == 1
|
||||
assert scored.accuracy == 1.0
|
||||
assert scored.confidence_rate >= 0.0
|
||||
|
||||
|
||||
def test_freeze_is_idempotent(rolling_store: Path) -> None:
|
||||
engine = _seed_engine()
|
||||
first = freeze_weekly_snapshot(week_id="2026-W11", engine=engine)
|
||||
second = freeze_weekly_snapshot(week_id="2026-W11", engine=engine)
|
||||
assert first["created"] is True
|
||||
assert second["created"] is False
|
||||
|
||||
|
||||
def test_rolling_report_trend(rolling_store: Path) -> None:
|
||||
engine = _seed_engine()
|
||||
freeze_weekly_snapshot(week_id="2026-W20", engine=engine)
|
||||
freeze_weekly_snapshot(week_id="2026-W21", engine=engine)
|
||||
|
||||
label_regions("2026-W20", [{"region": "ukraine", "label": "true_escalation"}])
|
||||
label_regions(
|
||||
"2026-W21",
|
||||
[
|
||||
{"region": "ukraine", "label": "true_escalation"},
|
||||
{"region": "canada", "label": "benign"},
|
||||
],
|
||||
)
|
||||
|
||||
report = rolling_report(weeks=4)
|
||||
assert report["mode"] == "rolling_operational"
|
||||
assert report["alert_threshold"] == DEFAULT_BACKTEST_ALERT_THRESHOLD
|
||||
assert len(report["trend"]) == 2
|
||||
assert report["latest"] is not None
|
||||
|
||||
|
||||
def test_openclaw_rolling_commands(
|
||||
rolling_store: Path,
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
from analytics.integration import get_gt_engine
|
||||
from services.openclaw_channel import _dispatch_command
|
||||
|
||||
monkeypatch.setenv("GT_ANALYTICS_ENABLED", "true")
|
||||
reset_gt_engine()
|
||||
engine = get_gt_engine()
|
||||
assert engine is not None
|
||||
engine.process_feed_item(
|
||||
{
|
||||
"text": "Troop movement and military mobilization near border",
|
||||
"region": "ukraine",
|
||||
"source": "test",
|
||||
"source_type": "manual",
|
||||
}
|
||||
)
|
||||
|
||||
freeze = _dispatch_command("gt_rolling_freeze", {"week_id": "2026-W30", "compact": True})
|
||||
assert freeze["ok"] is True
|
||||
assert freeze["data"]["enabled"] is True
|
||||
|
||||
label = _dispatch_command(
|
||||
"gt_rolling_label",
|
||||
{
|
||||
"week_id": "2026-W30",
|
||||
"region": "ukraine",
|
||||
"label": "false_alarm",
|
||||
},
|
||||
)
|
||||
assert label["ok"] is True
|
||||
assert label["data"]["updated"] == 1
|
||||
|
||||
trend = _dispatch_command("gt_rolling_backtest", {"weeks": 4, "compact": True})
|
||||
assert trend["ok"] is True
|
||||
assert trend["data"]["mode"] == "rolling_operational"
|
||||
|
||||
|
||||
def test_route_query_rolling_intent() -> None:
|
||||
from services.openclaw_routing import route_query
|
||||
|
||||
plan = route_query("Show GT rolling operational backtest week over week")
|
||||
assert plan["recommended"]["cmd"] == "gt_rolling_backtest"
|
||||
|
||||
freeze_plan = route_query("Freeze weekly GT snapshot for operational validation")
|
||||
assert freeze_plan["recommended"]["cmd"] == "gt_rolling_freeze"
|
||||
Reference in New Issue
Block a user