Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
1107 matches across 8 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | docker-compose.yml | 1 | # ============================================================================= |
| MEDIUM | docker-compose.yml | 3 | # ============================================================================= |
| MEDIUM | docker-compose.yml | 11 | # ============================================================================= |
| MEDIUM | …r/worldmonitor/intelligence/v1/chat-analyst-context.ts | 599 | // ── Keyword extraction (shared by GDELT + digest search) ───────────────────── |
| MEDIUM | …r/worldmonitor/intelligence/v1/chat-analyst-context.ts | 641 | // ── GDELT live headlines ────────────────────────────────────────────────────── |
| MEDIUM | …r/worldmonitor/intelligence/v1/chat-analyst-context.ts | 681 | // ── Digest keyword search ───────────────────────────────────────────────────── |
| MEDIUM | …r/worldmonitor/intelligence/v1/chat-analyst-context.ts | 767 | // ── Source labels ───────────────────────────────────────────────────────────── |
| MEDIUM | …rldmonitor/intelligence/v1/brief-why-matters-prompt.ts | 55 | // ── Category-gated context sections ────────────────────────────────────── |
| MEDIUM | server/worldmonitor/news/v1/list-feed-digest.ts | 833 | // ── Story persistence tracking ──────────────────────────────────────────────── |
| MEDIUM | server/worldmonitor/news/v1/_feeds.ts | 355 | // ── Commodity variant (Mining, Metals, Energy) ───────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 52 | // ── macroFiscal (4 sub-metrics) ─────────────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 130 | // ── currencyExternal ───────────────────────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 204 | // ── tradePolicy (3 sub-metrics) ─────────────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 261 | // ── financialSystemExposure (4 sub-metrics) ─────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 354 | // ── cyberDigital (3 sub-metrics) ────────────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 401 | // ── logisticsSupply (3 sub-metrics) ─────────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 448 | // ── infrastructure (3 sub-metrics) ──────────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 495 | // ── energy (7 sub-metrics) ──────────────────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 668 | // ── governanceInstitutional (6 sub-metrics, equal weight) ───────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 760 | // ── socialCohesion (3 sub-metrics) ──────────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 812 | // ── borderSecurity / "Conflict & Displacement" (2 sub-metrics) ─────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 853 | // ── informationCognitive (3 sub-metrics) ────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 905 | // ── healthPublicService (3 sub-metrics) ─────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 952 | // ── foodWater (3 sub-metrics) ───────────────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1019 | // ── fiscalSpace (4 sub-metrics) ────────────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1092 | // ── reserveAdequacy (RETIRED in PR 2 §3.4) ─────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1113 | // ── liquidReserveAdequacy (1 sub-metric) ───────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1134 | // ── sovereignFiscalBuffer (1 sub-metric) ───────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1173 | // ── externalDebtCoverage (1 sub-metric) ────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1197 | // ── importConcentration (1 sub-metric) ─────────────────────────────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1214 | // ── stateContinuity (3 sub-metrics, derived from existing keys) ────────── |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1261 | // ── fuelStockDays (1 sub-metric) ───────────────────────────────────────── |
| MEDIUM | …ver/worldmonitor/supply-chain/v1/scenario-templates.ts | 122 | // ─── Runtime types shared between MapContainer and DeckGLMap ───────────────── |
| MEDIUM | …nitor/supply-chain/v1/_route-explorer-static-tables.ts | 16 | // ─── Transit days per TRADE_ROUTES ID ──────────────────────────────────────── |
| MEDIUM | …nitor/supply-chain/v1/_route-explorer-static-tables.ts | 54 | // ─── Freight estimate per cargo type ───────────────────────────────────────── |
| MEDIUM | …nitor/supply-chain/v1/_route-explorer-static-tables.ts | 72 | // ─── Bypass corridor geometry ──────────────────────────────────────────────── |
| MEDIUM | …nitor/supply-chain/v1/_route-explorer-static-tables.ts | 90 | // ── Sea alternatives (use CHOKEPOINT_REGISTRY for endpoints) ─────────── |
| MEDIUM | …nitor/supply-chain/v1/_route-explorer-static-tables.ts | 176 | // ── Land-bridge corridors (hand-curated rail/road endpoints) ────────── |
| MEDIUM | server/_shared/brief-carousel-render.ts | 61 | // ── Colour palette (must match magazine's aesthetic) ─────────────────────── |
| MEDIUM | server/_shared/brief-carousel-render.ts | 73 | // ── Layouts ──────────────────────────────────────────────────────────────── |
| MEDIUM | server/_shared/brief-carousel-render.ts | 319 | // ── Public API ───────────────────────────────────────────────────────────── |
| MEDIUM | server/_shared/feelgood-classifier.js | 80 | // ── CORROBORATING: feel-good tokens (named capture groups) ────────── |
| MEDIUM | server/_shared/opinion-classifier.js | 26 | // ── STRONG: URL path / feed-section segments ───────────────────────── |
| MEDIUM | server/_shared/opinion-classifier.js | 49 | // ── STRONG: explicit headline prefix ───────────────────────────────── |
| MEDIUM | server/_shared/opinion-classifier.js | 57 | // ── STRONG: source-domain allowlist ────────────────────────────────── |
| MEDIUM | server/_shared/opinion-classifier.js | 97 | // ── CORROBORATING: description framing ─────────────────────────────── |
| MEDIUM | server/_shared/opinion-classifier.js | 103 | // ── CORROBORATING: whole-headline quote wrap ───────────────────────── |
| MEDIUM | server/_shared/cache-keys.ts | 1 | // ── Story persistence tracking keys (E3) ───────────────────────────────────── |
| MEDIUM | server/_shared/brief-render.js | 34 | // ── Constants ──────────────────────────────────────────────────────────────── |
| MEDIUM | server/_shared/brief-render.js | 58 | // ── HTML escaping ──────────────────────────────────────────────────────────── |
| MEDIUM | server/_shared/brief-render.js | 87 | // ── Envelope validation ────────────────────────────────────────────────────── |
| MEDIUM | server/_shared/brief-render.js | 387 | // ── Logo symbol + references ───────────────────────────────────────────────── |
| MEDIUM | server/_shared/brief-render.js | 432 | // ── Running head (shared across digest pages) ──────────────────────────────── |
| MEDIUM | server/_shared/brief-render.js | 447 | // ── Page renderers ─────────────────────────────────────────────────────────── |
| MEDIUM | server/_shared/brief-render.js | 758 | // ── Shell (document + CSS + JS) ────────────────────────────────────────────── |
| MEDIUM | server/_shared/brief-render.js | 1366 | // ── Main entry ─────────────────────────────────────────────────────────────── |
| MEDIUM | server/_shared/bypass-corridors.ts | 20 | // ── Suez Canal bypasses ──────────────────────────────────────────────── |
| MEDIUM | server/_shared/bypass-corridors.ts | 48 | // ── Strait of Hormuz bypasses ───────────────────────────────────────── |
| MEDIUM | server/_shared/bypass-corridors.ts | 89 | // ── Strait of Malacca bypasses ──────────────────────────────────────── |
| MEDIUM | server/_shared/bypass-corridors.ts | 130 | // ── Bab el-Mandeb bypasses ──────────────────────────────────────────── |
| 263 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | middleware.ts | 221 | // Image-returning API routes that don't end in `.png` also need |
| LOW | nixpacks.toml | 1 | # Railway relay build config (root_dir="" — builds from repo root). |
| LOW | docker-compose.yml | 1 | # ============================================================================= |
| LOW | docker-compose.yml | 101 | SRH_CONNECTION_STRING: "redis://:${REDIS_PASSWORD:?REDIS_PASSWORD required — generate with: openssl rand -hex 32}@ |
| LOW | pro-test/src/i18n.ts | 61 | set('meta[property="og:title"]', ogTitle); |
| LOW | pro-test/src/services/checkout.ts | 101 | }); |
| LOW | pro-test/src/services/checkout.ts | 281 | // mode — ignoring `checkout.redirect_requested` is what stranded |
| LOW | pro-test/src/services/checkout.ts | 381 | // Phase transitions to creating_checkout ONLY here, not in |
| LOW | server/gateway.ts | 301 | '/api/intelligence/v1/get-country-energy-profile': 'slow', |
| LOW | server/gateway.ts | 501 | // internal-MCP markers BEFORE any other logic runs. The gateway is the |
| LOW | server/gateway.ts | 521 | const stripped = new Headers(inboundHeaders); |
| LOW | server/gateway.ts | 581 | // - verify ⇒ entitlement re-check ⇒ rebuild Request with trusted markers |
| LOW | server/gateway.ts | 601 | // unaffected because we only enter this branch when the caller |
| LOW | server/gateway.ts | 661 | if (!verified) { |
| LOW | server/gateway.ts | 701 | // re-supplied from the bytes we buffered (bodyBytes is null for |
| LOW | server/gateway.ts | 841 | // Capture identity for telemetry — legacy bearer auth bypasses the |
| LOW | server/gateway.ts | 1061 | // Skip CDN caching for upstream-unavailable / empty responses so CF |
| LOW | server/worldmonitor/maritime/v1/get-vessel-snapshot.ts | 21 | chokepoint_congestion: 'AIS_DISRUPTION_TYPE_CHOKEPOINT_CONGESTION', |
| LOW | server/worldmonitor/intelligence/v1/_risk-config.ts | 1 | // ============================================================================ |
| LOW | …rldmonitor/intelligence/v1/brief-why-matters-prompt.ts | 61 | // passes ALL six bundles for every story, so the LLM has the market / |
| LOW | …rldmonitor/intelligence/v1/brief-why-matters-prompt.ts | 241 | if (contextBlock) { |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 821 | |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 861 | // CII warm-ping. Pre-2026-05-02 the warm-ping was the SOLE writer of |
| LOW | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 481 | req: GetRegionalSnapshotRequest, |
| LOW | server/worldmonitor/intelligence/v1/_shared.ts | 1 | /** |
| LOW | server/worldmonitor/intelligence/v1/_shared.ts | 21 | // institutional pages that previously promoted info-keyword titles to |
| LOW | server/worldmonitor/news/v1/summarize-article.ts | 121 | CACHE_TTL_SECONDS, |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 41 | const BATCH_CONCURRENCY = 20; |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 161 | classSource: 'keyword' | 'keyword-historical-downgrade' | 'llm'; |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 381 | async function fetchAndParseRss( |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 601 | // (a) parsedTotal > 0 — we recognized at least one <item>/<entry> block in |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 761 | // would miss this — `medium` doesn't match — so the brief 2026-04- |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 781 | item.isAlert = false; |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 801 | // The L3 marker check above intentionally runs BEFORE this skip so |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 1061 | // skill: ingest-gate-tightening-leaves-residue-in-read-path. |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 1081 | // Pre-stamp rows (ingested before this shipped) have no field at |
| LOW | server/worldmonitor/news/v1/_classifier.ts | 241 | // |
| LOW | server/worldmonitor/news/v1/_classifier.ts | 261 | // "Markets See Flashback To 2008 Crisis As Bonds Tumble" — no |
| LOW | server/worldmonitor/news/v1/_feeds.ts | 101 | // verified path (probed 2026-04-26). Federal Register fallback is |
| LOW | …ver/worldmonitor/resilience/v1/_dimension-freshness.ts | 1 | // T1.5 Phase 1 of the country-resilience reference-grade upgrade plan |
| LOW | …ver/worldmonitor/resilience/v1/_dimension-freshness.ts | 41 | // 'displacement:summary:v1:{year}' -> 'displacement:summary:v1' |
| LOW | …ver/worldmonitor/resilience/v1/_dimension-freshness.ts | 61 | // call. |
| LOW | …ver/worldmonitor/resilience/v1/_dimension-freshness.ts | 81 | // not falsely mark the property datasets as fresh (and vice versa). |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 41 | // |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 61 | // re-importing the module. Under Node production the env does not |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 81 | // published rankings are unchanged. |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 101 | // re-importing the module. |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 121 | // Bumped from v9 to v10 in the pillar-combined activation PR. Provides |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 141 | // deploys. v12→v13 bump in plan 2026-04-25-004 Phase 1 (Ship 1) for the |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 161 | // for every country (the PR 2 default), which would let ineligible |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 181 | // readers) decode as `d6` — matching the only formula that existed |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 201 | // v9 history points with post-fix v15 score points inside the 30-day |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 221 | // inside the rolling 30-day window with post-fix net-imports points |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 241 | // plan 2026-04-26-002 §U7 (PR 6). v16 cached rankings include items |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 261 | const RANK_STABLE_MAX_INTERVAL_WIDTH = 8; |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 381 | // T1.7 schema pass: empty string = dimension has any observed data. |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 401 | // lever that finally pulls median(microstate-territories) below |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 501 | // coverage >= 0.65 AND |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 541 | // entries SHOULD drag the confidence down — that is precisely the |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 621 | // domain.weight`) or the pillar-combined penalized form (non- |
| 314 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | pro-test/src/services/checkout-intent-url.ts | 30 | export function parseCheckoutIntentFromSearch(search: string): CheckoutIntentFromUrl | null { |
| LOW | pro-test/src/services/checkout-intent-url.ts | 49 | export function stripCheckoutIntentFromSearch(search: string): string { |
| LOW | pro-test/src/services/checkout.ts | 533 | function mountCheckoutInterstitial(): void { |
| LOW | pro-test/src/services/checkout.ts | 571 | function unmountCheckoutInterstitial(): void { |
| LOW | pro-test/src/services/checkout.ts | 637 | function prereserveBillingPortalTab(): Window | null { |
| LOW | pro-test/src/services/checkout.ts | 695 | function resolveProPlanDisplayName(planKey: unknown): string { |
| LOW | pro-test/src/services/checkout.ts | 708 | function showProDuplicateSubscriptionDialog(options: ProDuplicateDialogOptions): void { |
| LOW | pro-test/src/services/entitlement-watchdog.ts | 59 | export function createEntitlementWatchdog( |
| LOW | plans/forbid-realtime-all-events.md | 92 | function assertCompatibleDeliveryMode(pair: { digestMode: string; sensitivity: string }) { |
| LOW | plans/add-debt-sustainability-gap-indicator.md | 89 | export function computeDebtSustainabilityGap({ debt, pb, fb, realG, infl }) { |
| LOW | plans/add-debt-sustainability-gap-indicator.md | 100 | export function buildFiscalSpaceCountries(perIndicator) { |
| LOW | server/gateway.ts | 340 | function isPostToGetCompatibleBodySize(headers: Headers): boolean { |
| LOW | server/worldmonitor/maritime/v1/get-vessel-snapshot.ts | 170 | async function fetchVesselSnapshotFromRelay( |
| LOW | …tor/consumer-prices/v1/get-consumer-price-freshness.ts | 10 | export async function getConsumerPriceFreshness( |
| LOW | …r/consumer-prices/v1/list-consumer-price-categories.ts | 12 | export async function listConsumerPriceCategories( |
| LOW | …consumer-prices/v1/get-consumer-price-basket-series.ts | 14 | export async function getConsumerPriceBasketSeries( |
| LOW | …er/worldmonitor/intelligence/v1/brief-story-context.ts | 56 | export async function assembleBriefStoryContext( |
| LOW | …rldmonitor/intelligence/v1/brief-why-matters-prompt.ts | 221 | export function buildAnalystWhyMattersPrompt( |
| LOW | server/worldmonitor/intelligence/v1/_shock-compute.ts | 80 | export function computeEffectiveCoverDays( |
| LOW | server/worldmonitor/intelligence/v1/_shock-compute.ts | 108 | export function deriveChokepointConfidence( |
| LOW | …r/worldmonitor/intelligence/v1/compute-energy-shock.ts | 125 | export async function computeEnergyShockScenario( |
| LOW | server/worldmonitor/intelligence/v1/deduction-prompt.ts | 75 | function buildSharedEvidencePrompt(primaryContext: string, recentNews: string[]): string { |
| LOW | server/worldmonitor/intelligence/v1/deduction-prompt.ts | 159 | export function postProcessDeductionOutput(raw: string, mode: DeductionMode): string { |
| LOW | server/worldmonitor/leads/v1/register-interest.ts | 45 | function canonicalizeDesktopAuthPayload(req: RegisterInterestRequest): string { |
| LOW | server/worldmonitor/leads/v1/register-interest.ts | 85 | export async function createDesktopAuthSignature( |
| LOW | server/worldmonitor/economic/v1/_shared.ts | 75 | export function extractAlignedPriceVolume(chart: any): Array<{ price: number; volume: number }> { |
| LOW | server/worldmonitor/economic/v1/_fred-shared.ts | 13 | export function applyFredObservationLimit(series: FredSeries, limit: number): FredSeries { |
| LOW | …dmonitor/conflict/v1/get-humanitarian-summary-batch.ts | 96 | export async function getHumanitarianSummaryBatch( |
| LOW | server/worldmonitor/shipping/v2/deliver-webhook.ts | 51 | async function postJsonWithPinnedAddress( |
| LOW | server/worldmonitor/shipping/v2/deliver-webhook.ts | 108 | export async function assertWebhookDeliveryUrlSafe( |
| LOW | …worldmonitor/military/v1/_wingbits-aircraft-details.ts | 14 | export async function fetchWingbitsAircraftDetails( |
| LOW | server/worldmonitor/aviation/v1/_shared.ts | 545 | export function mergeNotamWithExistingAlert( |
| LOW | …ldmonitor/aviation/v1/_providers/travelpayouts_data.ts | 196 | export async function searchPricesTravelpayouts(opts: { |
| LOW | …ver/worldmonitor/aviation/v1/_providers/demo_prices.ts | 38 | function advancePurchaseMultiplier(departureDate: string): number { |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 221 | function hasDiplomacyFlashpointSignal(title: string | undefined): boolean { |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 285 | function createTimeoutLinkedController(parentSignal: AbortSignal): { |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 647 | function normalizeForDescriptionEquality(s: string): string { |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 873 | function computeEntityCorroborationSignals( |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 909 | function computeEntityCorroborationCounts( |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 1043 | function buildStoryTrackHsetFields( |
| LOW | …ver/worldmonitor/resilience/v1/_dimension-freshness.ts | 148 | export function classifyDimensionFreshness( |
| LOW | server/worldmonitor/resilience/v1/_source-failure.ts | 81 | export function failedDimensionsFromDatasets( |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 761 | export async function ensureResilienceScoreCached(countryCode: string, reader?: ResilienceSeedReader): Promise<GetResili |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 875 | export async function getCachedResilienceScores(countryCodes: string[]): Promise<Map<string, GetResilienceScoreResponse> |
| LOW | server/worldmonitor/resilience/v1/_shared.ts | 1018 | export async function warmMissingResilienceScores( |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 928 | export function readCountryPopulationMillionsForGate( |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 1085 | function getTransitDisruptionScore(raw: unknown): number | null { |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 1353 | function isFinSysExposureEnabledLocal(): boolean { |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 1357 | export async function scoreFinancialSystemExposure( |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 1785 | export async function scoreGovernanceInstitutional( |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 1993 | export async function scoreInformationCognitive( |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 2215 | async function readReexportShareForCountry( |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 2227 | export async function scoreLiquidReserveAdequacy( |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 2293 | export async function scoreSovereignFiscalBuffer( |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 2355 | export async function scoreExternalDebtCoverage( |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 2534 | export function isExcludedFromConfidenceMean( |
| LOW | server/worldmonitor/resilience/v1/_dimension-scorers.ts | 2700 | export function getResilienceDomainWeight(domainId: ResilienceDomainId): number { |
| LOW | server/worldmonitor/resilience/v1/_language-coverage.ts | 49 | export function getLanguageCoverageFactor(iso2: string): number { |
| LOW | server/worldmonitor/sanctions/v1/lookup-entity.ts | 61 | function normalizeOpenSanctionsHit(hit: OpenSanctionsHit): SanctionEntityMatch | null { |
| LOW | server/worldmonitor/market/v1/stock-news-search.ts | 36 | export function resetStockNewsSearchStateForTests(): void { |
| 269 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | server/worldmonitor/forecast/v1/trigger-simulation.ts | 56 | // Step 1: Pro gate (defense-in-depth). |
| LOW | server/worldmonitor/forecast/v1/trigger-simulation.ts | 62 | // Step 2: queue-depth backpressure (mirrors run-scenario:50). |
| LOW | server/worldmonitor/forecast/v1/trigger-simulation.ts | 68 | // Step 3: derive runId from package pointer; no UUID fallback. |
| LOW | server/worldmonitor/forecast/v1/trigger-simulation.ts | 82 | // Step 4: pre-enqueue idempotency fast-path (D5). Authoritative |
| LOW | server/worldmonitor/forecast/v1/trigger-simulation.ts | 105 | // Step 5: enqueue. |
| LOW | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 488 | // Step 1: resolve latest pointer -> snapshot_id. |
| LOW | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 505 | // Step 2: resolve snapshot_id -> full snapshot |
| LOW | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 512 | // Step 3: adapt snake_case -> camelCase |
| LOW | server/_shared/feelgood-classifier.js | 156 | // Step 1: HARD-NEWS VETO. Runs FIRST. Overrides every classification |
| LOW | server/_shared/feelgood-classifier.js | 164 | // Step 2: STRONG URL pathname segment. |
| LOW | server/_shared/feelgood-classifier.js | 169 | // Step 3: STRONG headline prefix. |
| LOW | server/_shared/feelgood-classifier.js | 172 | // Step 4: CORROBORATING ≥3 DISTINCT named-group labels across all |
| LOW | server/_shared/pro-mcp-token.ts | 264 | // Step 1: negative-cache short-circuit. |
| LOW | server/_shared/pro-mcp-token.ts | 267 | // Step 2: Convex round-trip. |
| LOW | server/_shared/pro-mcp-token.ts | 316 | // Step 3: positive — return WITHOUT caching. |
| LOW | server/_shared/pro-mcp-token.ts | 320 | // Step 4: negative — write sentinel and return revoked. |
| LOW | convex/notificationChannels.ts | 86 | // Step 1: scan for any existing rows with this endpoint across |
| LOW | convex/notificationChannels.ts | 105 | // Step 2: upsert the current-user row by (userId, channelType). |
| LOW | convex/followedCountries.ts | 495 | // Step 2: empty-input guard. |
| LOW | convex/followedCountries.ts | 500 | // Step 3: defensive upper-bound on input length. |
| LOW | convex/followedCountries.ts | 509 | // Step 4: ISO-2 registry filter; collect droppedInvalid in input order. |
| LOW | convex/followedCountries.ts | 520 | // Step 5: canonicalize — dedupe in first-seen order. Without this, a |
| LOW | convex/followedCountries.ts | 541 | // Step 6: read existing rows; build existingSet. Still required for |
| LOW | convex/followedCountries.ts | 550 | // Step 7: filter against existing. |
| LOW | convex/followedCountries.ts | 568 | // Step 10: insert accepted rows + atomic counter +1 each. |
| LOW | convex/followedCountries.ts | 589 | // Step 12: structured warning when free users overflow cap. No |
| LOW | convex/followedCountries.ts | 604 | // Step 11: return shape. |
| LOW | convex/__tests__/checkout.test.ts | 119 | // Step 1: Seed product plans + customer mapping |
| LOW | convex/__tests__/checkout.test.ts | 125 | // Step 2: Simulate subscription.active webhook (with wm_user_id metadata) |
| LOW | convex/__tests__/checkout.test.ts | 134 | // Step 3: Query entitlements for the real user (not fallback) |
| LOW | convex/__tests__/checkout.test.ts | 140 | // Step 4: Assert pro_monthly entitlements |
| LOW | convex/__tests__/checkout.test.ts | 150 | // Step 1: Seed product plans + customer mapping |
| LOW | convex/__tests__/checkout.test.ts | 156 | // Step 2: Simulate subscription.active webhook |
| LOW | convex/__tests__/checkout.test.ts | 165 | // Step 3: Query entitlements |
| LOW | convex/__tests__/checkout.test.ts | 171 | // Step 4: Assert api_starter entitlements |
| LOW | convex/__tests__/checkout.test.ts | 183 | // Step 1: Seed product plans + customer mapping |
| LOW | convex/__tests__/checkout.test.ts | 189 | // Step 2: Simulate webhook with billing dates both in the past (expired) |
| LOW | convex/__tests__/checkout.test.ts | 201 | // Step 3: Query entitlements -- should return free tier (expired) |
| LOW | convex/__tests__/checkout.test.ts | 207 | // Step 4: Assert free tier defaults |
| LOW | convex/broadcast/waveRuns.ts | 711 | // Step 1: claim lease + insert waveRuns row. |
| LOW | convex/broadcast/waveRuns.ts | 729 | // Step 2: stream registrations + filter (per-page) + reservoir-sample. |
| LOW | convex/broadcast/waveRuns.ts | 852 | // Step 3: create the Resend segment. |
| LOW | convex/broadcast/waveRuns.ts | 866 | // Step 4: chunk-persist picked rows. Each chunk is its own mutation so |
| LOW | convex/broadcast/waveRuns.ts | 885 | // Step 5: mark pick complete + schedule first push batch. |
| LOW | convex/broadcast/audienceWaveExport.ts | 293 | // Step 1: refuse to overlap with an existing wave. |
| LOW | convex/broadcast/audienceWaveExport.ts | 304 | // Step 2: stream registrations, dedup, reservoir-sample N. |
| LOW | convex/broadcast/audienceWaveExport.ts | 355 | // Step 3: create the Resend segment FIRST so we never stamp a |
| LOW | convex/broadcast/audienceWaveExport.ts | 363 | // Step 4: push picked contacts to the segment, then stamp ONLY on |
| LOW | api/mcp/registry/rpc-tools.ts | 39 | // Step 1: fetch current geopolitical headlines (budget: 6 s, leaves ~24 s for LLM) |
| LOW | api/mcp/registry/rpc-tools.ts | 58 | // Step 2: summarize with LLM (budget: 18 s — combined 24 s, well under 30 s edge ceiling) |
| LOW | api/brief/public/[hash].ts | 138 | // Step 1: resolve pointer → {userId, issueDate}. |
| LOW | api/brief/public/[hash].ts | 173 | // Step 2: resolve the actual brief envelope. |
| LOW | src/components/InsightsPanel.ts | 234 | // Step 1: Signal aggregation (client-side, depends on real-time map data) |
| LOW | src/components/InsightsPanel.ts | 263 | // Step 2: Re-sort server stories by ISQ (shallow copy to avoid mutating cache) |
| LOW | src/components/InsightsPanel.ts | 319 | // Step 1: Signal aggregation + focal point detection (must run BEFORE ranking) |
| LOW | src/components/InsightsPanel.ts | 388 | // Step 2: Analyze sentiment (browser-based, fast) |
| LOW | src/components/InsightsPanel.ts | 397 | // Step 3: Generate World Brief (with cooldown) |
| LOW | src/components/InsightsPanel.ts | 442 | // Step 4: Wait for parallel analysis to complete |
| LOW | src/services/followed-countries.ts | 734 | // Step 1: parse localStorage (corruption recovery is unconditional). |
| LOW | src/services/followed-countries.ts | 758 | // Step 2: call mergeAnonymousLocal. |
| 5 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | src/app/country-intel.ts | 1020 | protests = this.ctx.intelligenceCache.protests.events.filter((e) => |
| CRITICAL | src/app/country-intel.ts | 1030 | militaryFlights = this.ctx.intelligenceCache.military.flights.filter((f) => |
| CRITICAL | src/app/country-intel.ts | 1033 | militaryVessels = this.ctx.intelligenceCache.military.vessels.filter((v) => |
| CRITICAL | src/app/country-intel.ts | 1036 | militaryFlightsInCountry = this.ctx.intelligenceCache.military.flights.filter((f) => |
| CRITICAL | src/app/country-intel.ts | 1039 | militaryVesselsInCountry = this.ctx.intelligenceCache.military.vessels.filter((v) => |
| CRITICAL | src/app/country-intel.ts | 1102 | thermalEscalations = this.ctx.intelligenceCache.thermalEscalation.clusters.filter( |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | package-lock.json | 20074 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", |
| MEDIUM | server/worldmonitor/economic/v1/_bis-shared.ts | 45 | // Parse BIS CSV using papaparse — robust handling of quoted fields & metadata |
| MEDIUM | server/worldmonitor/market/v1/analyze-stock.ts | 310 | // recent >= 3 → trust interval (robust to calendar-boundary drift) |
| MEDIUM | public/pro/assets/index-cpXKHxXo.js | 63 | `).replace(O2,"")}function fy(e,i){return i=uy(i),uy(e)===i}function ke(e,i,s,o,u,d){switch(s){case"children":typeof o== |
| MEDIUM | src/components/BreakthroughsTickerPanel.ts | 65 | // Double the content for seamless infinite scroll |
| MEDIUM | src/e2e/map-harness.ts | 154 | throw new Error('Missing #app container for map harness'); |
| MEDIUM | src/e2e/mobile-map-harness.ts | 33 | throw new Error('Missing #app container for mobile popup harness'); |
| MEDIUM | src/e2e/mobile-map-integration-harness.ts | 27 | throw new Error('Missing #app container for mobile map integration harness'); |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | docs/api/IntelligenceService.openapi.json | 1 | {"components":{"schemas":{"ActorState":{"description":"ActorState is one geopolitical actor's leverage score in the regi |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | scripts/_gem-geojson-to-canonical.py | 135 |