Commit Graph
164 Commits
Author SHA1 Message Date
Shadowbroker 4f009150c2 Merge pull request #512 from sylvesterkaczmarek/fix/market-lifecycle-invalid-ordering
fix(infonet): tolerate malformed market ordering metadata
2026-08-16 12:45:22 -06:00
Sylvester Kaczmarek 74aab5611e fix(agent): reject invalid telemetry injection payloads 2026-08-16 10:00:28 +00:00
Sylvester Kaczmarek bb51f81e56 fix(infonet): fail closed on malformed authoritative snapshots 2026-08-16 10:51:50 +01:00
Shadowbroker 0ec346495a Merge pull request #507 from sylvesterkaczmarek/fix/gate-adapter-snapshot-consistency
fix(infonet): use one chain snapshot for timed gate reads
2026-08-15 21:44:02 -06:00
Shadowbroker b8803ddbad Merge pull request #513 from sylvesterkaczmarek/fix/market-snapshot-invalid-numerics
fix(infonet): harden market snapshot projection
2026-08-15 21:43:21 -06:00
Shadowbroker f66c40d885 Merge pull request #510 from sylvesterkaczmarek/fix/chain-majority-time-invalid-timestamps
fix(infonet): ignore invalid timestamps in majority time
2026-08-15 21:43:05 -06:00
Shadowbroker 525df58a70 Merge pull request #509 from sylvesterkaczmarek/fix/dispute-nonfinite-values
fix(infonet): reject non-finite dispute numerics
2026-08-15 21:42:33 -06:00
Sylvester Kaczmarek 90b9f6db1e Scope snapshot tests to numeric hardening 2026-08-15 23:36:02 +01:00
Sylvester Kaczmarek 6db964a9f5 Preserve snapshot commitment ordering 2026-08-15 23:35:39 +01:00
Sylvester Kaczmarek 8b16af0c93 Cover fail-closed dispute authority 2026-08-15 23:32:35 +01:00
Sylvester Kaczmarek 110aef505a Fail closed on malformed dispute authority 2026-08-15 23:32:20 +01:00
Sylvester Kaczmarek 40f6e0c6f7 Cover fail-closed timestamp validation 2026-08-15 23:31:45 +01:00
Sylvester Kaczmarek 926f0f0c63 Fail closed on invalid event timestamps 2026-08-15 23:31:30 +01:00
Sylvester Kaczmarek e9e33ca637 fix(infonet): reject non-finite stalemate burn inputs (#514)
* fix(infonet): reject non-finite stalemate burn inputs

* test(infonet): cover non-finite stalemate burn inputs
2026-08-14 18:30:22 -06:00
Sylvester Kaczmarek 072bd29445 fix(infonet): reject non-finite gate lock values (#511)
* fix(infonet): reject non-finite gate lock values

* test(infonet): cover non-finite gate lock values
2026-08-14 18:30:13 -06:00
Sylvester Kaczmarek d595f2a698 fix(store): preserve non-mapping native layer entries (#508)
* fix(store): preserve non-mapping native layer entries

* test(store): cover mixed native injection cleanup
2026-08-14 18:30:08 -06:00
Sylvester Kaczmarek e5e7be1982 test(infonet): cover invalid snapshot numerics 2026-08-14 10:26:56 +01:00
Sylvester Kaczmarek 8cbffc8fce fix(infonet): harden market snapshot projection 2026-08-14 10:26:42 +01:00
Sylvester Kaczmarek 7f407d2e12 test(infonet): cover invalid majority-time timestamps 2026-08-14 10:11:14 +01:00
Sylvester Kaczmarek efa9da58b5 fix(infonet): ignore invalid timestamps in majority time 2026-08-14 10:11:04 +01:00
Sylvester Kaczmarek 02b3d734d8 test(infonet): cover non-finite dispute numerics 2026-08-14 10:01:39 +01:00
Sylvester Kaczmarek 7cb315dbb0 fix(infonet): reject non-finite dispute numerics 2026-08-14 10:01:27 +01:00
Sylvester Kaczmarek 84e88b7f4b Add gate adapter snapshot consistency regressions 2026-08-14 09:22:56 +01:00
Sylvester Kaczmarek 7e0f2fdc9c Use one chain snapshot for timed gate reads 2026-08-14 09:22:37 +01:00
Ethan Morchy 6112dab21a Merge branch 'BigBodyCobain:main' into feature/locate-auto-zoom 2026-08-11 15:03:13 -07:00
Sylvester Kaczmarek 9c3673af34 fix(store): avoid mutating published injected layer lists 2026-08-11 17:46:29 +01:00
Ethan Morchy 882c27b1eb Pass Nominatim bbox and place_rank through the geocode proxy 2026-08-11 00:40:47 -07:00
BigBodyCobainandCursor 4518cb0b23 Fix encoding corruption from AISHub secret/config wiring.
Restore main.py and config.py to clean UTF-8 and re-apply only the AISHUB_USERNAME additions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 18:56:30 -06:00
BigBodyCobainandCursor dc0f69a0b9 Expose AISHub as an optional ships-layer backup when AISStream is silent.
Wire AISHUB_USERNAME into API Keys and onboarding, and surface backup status on the AIS outage banner so operators can keep vessel coverage without changing the AISStream proxy.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 18:56:30 -06:00
Ethan Morchy 3ef45508b2 Let agents temporarily override native map layer visibility. 2026-08-08 02:04:20 -07:00
BigBodyCobainandCursor 4c461a2ccd Wire Persian into Telegram OSINT translate labels and locale docs.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 11:05:25 -06:00
BigBodyCobainandCursor 69e8ebbab2 fix: stop truncating live telemetry payloads
Remove sampling, viewport bbox truncation, and buffer ceilings that were cherry-picking ships, flights, and related layers.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 20:31:50 -06:00
Shadowbroker 96a8b13a4e Merge pull request #470 from nzinci/feat/agent-fetch-health
feat(agent): expose sanitized fetch health
2026-07-30 20:01:12 -06:00
BigBodyCobainandCursor 5ae1e5b272 perf: live-data deltas, payload caps, and map render polish
Cut fast-tier payload cost with zoom-aware sampling, row deltas, CCTV bbox columns, and MapLibre/motion polish; force viewport snapshot refetches so regional pans refill aircraft immediately.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 19:40:11 -06:00
nzinci 1f903e1b7c Add sanitized fetch health for agents 2026-07-30 22:24:25 +03:00
BigBodyCobain d38c886af9 Harden mesh bootstrap defaults 2026-07-10 20:27:56 -06:00
BigBodyCobainandCursor c45b91c06c Fix Docker OpenClaw HMAC persistence and privacy-core build warnings.
Persist OPENCLAW_HMAC_SECRET to data/openclaw.env so empty Docker env vars no longer block auth after UI bootstrap. Add verify_hmac.py, silence Rust warnings (#423), and document Docker signing (#424).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 20:38:44 -06:00
BigBodyCobainandCursor 4cb6492b22 Add entity trail and profile commands for OpenClaw agent dossiers.
Expose observed aircraft/vessel paths, route enrichment, VIP metadata, datalink, and nearby context so agents can reconstruct movement without full telemetry dumps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-26 00:23:40 -06:00
BigBodyCobainandCursor 8c4619179e Add multi-airline ACARS summarizer for readable datalink dossiers.
Parse common position, OOOI, performance, and ops formats across major carriers while hiding VDL binary fragments and duplicate frames from the dossier feed.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-24 22:52:00 -06:00
BigBodyCobainandCursor 9ad0a5ffce Add Airframes ACARS datalink on plane dossiers and Meshtastic planet scan.
Bulk-ingest Airframes messages on a rate-limited staggered queue with instant cache lookups and priority per-aircraft refresh when opening a dossier; add Meshtastic manual SCAN PLANET control in the SIGINT panel.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-24 22:15:50 -06:00
BigBodyCobainandCursor a0c79c2044 data: sync plane-alert VIP tracking with real names only
Import oligarchs, royals, and curated celebrities from plane-alert-db while excluding joke tag labels from tracked_names. Sync plane_alert_db.json metadata, add import scripts, and map oligarch/royal/celebrity colors in the legend.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-24 20:02:03 -06:00
Javier Andreo Zapata f30ffe2c77 fix(cctv): update DGT Spain camera endpoint to etraffic.dgt.es (#413)
DGT migrated its public traffic site in 2026: the old image path
infocar.dgt.es/etraffic/data/camaras/{id}.jpg now 302-redirects to the
new etrafficWEB SPA and no longer serves JPEGs, so every DGT camera
showed FEED UNAVAILABLE (proxy and direct source both failed).

New working pattern: https://etraffic.dgt.es/camarasEtraffic/{id}.jpg

- cctv_pipeline.py: DGTNationalIngestor media_url + probe Referer
- routers/cctv.py & main.py: allowlist etraffic.dgt.es + dgt-spain proxy profile
2026-06-24 18:57:39 -06:00
BigBodyCobain 0690d94c37 fix(ui): SAR credential setup in Settings and async layer toggles.
Add Earthdata token entry on the SAR tab with accurate Mode B status, expose optional FIRMS_MAP_KEY in API settings, and remove the frontend operator-unlock gate that blocked localhost saves. Run network-heavy layer-enable fetches on a background executor with frontend retry polling so FIRMS toggles no longer freeze the single API worker.
2026-06-23 01:31:16 -06:00
BigBodyCobain 53ed63ffcf perf: UX-safe fetch trimming and instant layer-enable refresh.
Drop duplicate slow-tier weather/ukraine jobs, gate correlations when off, slim health probes, keyed layer-panel subscriptions, align backend layer defaults with the dashboard, and fetch CCTV/FIRMS/PSK/etc. synchronously on enable so toggles stay responsive without background prefetch waste.
2026-06-23 00:16:48 -06:00
ShadowbrokerandCursor 91c76ad1bd security: agent-shell WS tokens and dependency audit fixes (#409)
Replace spoofable Host/Origin WebSocket auth with short-lived bootstrap
tokens minted over the existing local-operator HTTP path. Docker/browser
shell sessions prefetch a token before connecting; loopback peers remain
unchanged.

Also bump backend ws to 8.21.0 and refresh frontend lockfile to clear
npm audit findings (dev toolchain only for frontend).

Fixes #405, #406, #407

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 16:40:36 -06:00
cfbeabda1e 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>
2026-06-16 17:05:46 -06:00
TheYellowBeanieGuyandClaude Fable 5 9c5a4054f6 fix(gdelt): stop background thread mutating already-published features (dictionary changed size during iteration) (#388)
* fix(gdelt): publish enriched copies instead of mutating live features

_enrich_gdelt_titles_background ran in a daemon thread that mutated the
nested properties dicts of GDELT features already published into
latest_data[gdelt]. HTTP readers hold live references to those dicts and
serialize them outside the data lock, so the in-place mutation raced the
serializer and raised RuntimeError: dictionary changed size during
iteration on /api/live-data/slow and /api/bootstrap/critical.

Enrich deep copies instead and atomically swap the top-level key under
_data_lock, with an identity guard so a newer fetch_gdelt() is not clobbered.
Honors the replace-don't-mutate contract documented in fetchers/_store.py.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test(gdelt): regression test for background enrichment isolation

Asserts _enrich_gdelt_titles_background does not mutate already-published features and instead atomically swaps latest_data["gdelt"] with enriched copies (with the identity guard). Locks in the fix for the dictionary-changed-size race.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 18:23:25 -06:00
TheYellowBeanieGuy 71a2ef4ce7 fix(store): harden snapshot vs concurrent writer mutation; fix SIGINT dict aliasing (#389)
get_latest_data_deepcopy_snapshot deep-copies layers outside the data lock; a writer mutating a nested object in place races it and raises "dictionary changed size during iteration" (500 on /api/health, /api/live-data). Two changes: (1) _merge_sigint_snapshot now shallow-copies each entry so latest_data["sigint"] no longer aliases the SIGINT bridge dicts or the meshtastic_map_nodes layer (the concrete offender); (2) the snapshot retries a few times as defense-in-depth for any other in-place mutator. Plus regression tests.
2026-06-15 17:35:27 -06:00
BigBodyCobain 5ede669a12 Ship ShadowBroker v0.9.83 with live Infonet gate messaging and DM protocols.
Gate hashchain replication, Tor/SOCKS transport hardening, terminal session teardown, v0.9.83 UI/changelog, and release digest pins for seamless updater verification.
2026-06-15 15:37:29 -06:00
BigBodyCobainandCursor 7151563a41 Fix Extra-participant E2E: live contact send and Tor prekey cache path.
Adds connect-contact HTTP endpoint with cached-bundle support, subprocess contact send via docker cp bundle file, and direct Tor prekey fetch to avoid wedging single-worker uvicorn.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 17:00:13 -06:00