Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
This report presents the forensic synthetic code analysis of koala73/worldmonitor, a TypeScript project with 61,829 GitHub stars. SynthScan v2.0 examined 707,732 lines of code across 2036 source files, recording 1777 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 3.8 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1777 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | docker-compose.yml | 1 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | docker-compose.yml | 3 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | docker-compose.yml | 11 | # ============================================================================= | COMMENT |
| MEDIUM | server/gateway.ts | 1170 | // ── Active-subscription gate for user API keys (#4611) ────────────────── | COMMENT |
| MEDIUM | server/gateway.ts | 1170 | // ── Active-subscription gate for user API keys (#4611) ────────────────── | COMMENT |
| MEDIUM | server/gateway.ts | 1412 | // ── Idempotency-Key support (mutation retry-safety) ────────────────────── | COMMENT |
| MEDIUM | server/gateway.ts | 1473 | // ── Per-account API rate limit (#3199) ────────────────────────────── | COMMENT |
| MEDIUM | server/gateway.ts | 1473 | // ── Per-account API rate limit (#3199) ────────────────────────────── | COMMENT |
| MEDIUM | …r/worldmonitor/intelligence/v1/chat-analyst-context.ts | 600 | // ── Keyword extraction (shared by GDELT + digest search) ───────────────────── | COMMENT |
| MEDIUM | …r/worldmonitor/intelligence/v1/chat-analyst-context.ts | 642 | // ── GDELT live headlines ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …r/worldmonitor/intelligence/v1/chat-analyst-context.ts | 682 | // ── Digest keyword search ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …r/worldmonitor/intelligence/v1/chat-analyst-context.ts | 768 | // ── Source labels ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rldmonitor/intelligence/v1/brief-why-matters-prompt.ts | 55 | // ── Category-gated context sections ────────────────────────────────────── | COMMENT |
| MEDIUM | server/worldmonitor/news/v1/list-feed-digest.ts | 864 | // ── Story persistence tracking ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/worldmonitor/news/v1/_feeds.ts | 364 | // ── Commodity variant (Mining, Metals, Energy) ───────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 78 | // ── macroFiscal (5 sub-metrics) ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 156 | // ── currencyExternal ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 236 | // ── tradePolicy (3 sub-metrics) ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 293 | // ── financialSystemExposure (4 sub-metrics) ─────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 395 | // ── cyberDigital (3 sub-metrics) ────────────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 442 | // ── logisticsSupply (3 sub-metrics) ─────────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 489 | // ── infrastructure (4 sub-metrics) ──────────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 551 | // ── energy (active production construct = v2) ───────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 664 | // ── energy v2 global inputs ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 729 | // ── governanceInstitutional (6 sub-metrics, equal weight) ───────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 821 | // ── socialCohesion (3 sub-metrics) ──────────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 873 | // ── borderSecurity / "Conflict & Displacement" (2 sub-metrics) ─────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 914 | // ── informationCognitive (3 sub-metrics) ────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 966 | // ── healthPublicService (5 sub-metrics) ─────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1043 | // ── foodWater (3 sub-metrics) ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1095 | // ── fiscalSpace (4 sub-metrics) ────────────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1168 | // ── reserveAdequacy (RETIRED in PR 2 §3.4) ─────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1189 | // ── liquidReserveAdequacy (1 sub-metric) ───────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1214 | // ── sovereignFiscalBuffer (1 sub-metric) ───────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1258 | // ── externalDebtCoverage (1 sub-metric) ────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1282 | // ── importConcentration (1 sub-metric) ─────────────────────────────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1299 | // ── stateContinuity (3 sub-metrics, derived from existing keys) ────────── | COMMENT |
| MEDIUM | …rver/worldmonitor/resilience/v1/_indicator-registry.ts | 1346 | // ── fuelStockDays (1 sub-metric) ───────────────────────────────────────── | COMMENT |
| MEDIUM | server/worldmonitor/market/v1/analyze-stock.ts | 526 | // ── US-equity market session (#4922d) ─────────────────────────────────────── | COMMENT |
| MEDIUM | server/worldmonitor/market/v1/analyze-stock.ts | 526 | // ── US-equity market session (#4922d) ─────────────────────────────────────── | COMMENT |
| MEDIUM | …ver/worldmonitor/supply-chain/v1/scenario-templates.ts | 122 | // ─── Runtime types shared between MapContainer and DeckGLMap ───────────────── | COMMENT |
| MEDIUM | …nitor/supply-chain/v1/_route-explorer-static-tables.ts | 16 | // ─── Transit days per TRADE_ROUTES ID ──────────────────────────────────────── | COMMENT |
| MEDIUM | …nitor/supply-chain/v1/_route-explorer-static-tables.ts | 54 | // ─── Freight estimate per cargo type ───────────────────────────────────────── | COMMENT |
| MEDIUM | …nitor/supply-chain/v1/_route-explorer-static-tables.ts | 72 | // ─── Bypass corridor geometry ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nitor/supply-chain/v1/_route-explorer-static-tables.ts | 90 | // ── Sea alternatives (use CHOKEPOINT_REGISTRY for endpoints) ─────────── | COMMENT |
| MEDIUM | …nitor/supply-chain/v1/_route-explorer-static-tables.ts | 176 | // ── Land-bridge corridors (hand-curated rail/road endpoints) ────────── | COMMENT |
| MEDIUM | server/_shared/brief-carousel-render.ts | 61 | // ── Colour palette (must match magazine's aesthetic) ─────────────────────── | COMMENT |
| MEDIUM | server/_shared/brief-carousel-render.ts | 73 | // ── Layouts ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/_shared/brief-carousel-render.ts | 319 | // ── Public API ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/_shared/feelgood-classifier.js | 80 | // ── CORROBORATING: feel-good tokens (named capture groups) ────────── | COMMENT |
| MEDIUM | server/_shared/opinion-classifier.js | 26 | // ── STRONG: URL path / feed-section segments ───────────────────────── | COMMENT |
| MEDIUM | server/_shared/opinion-classifier.js | 49 | // ── STRONG: explicit headline prefix ───────────────────────────────── | COMMENT |
| MEDIUM | server/_shared/opinion-classifier.js | 57 | // ── STRONG: source-domain allowlist ────────────────────────────────── | COMMENT |
| MEDIUM | server/_shared/opinion-classifier.js | 97 | // ── CORROBORATING: description framing ─────────────────────────────── | COMMENT |
| MEDIUM | server/_shared/opinion-classifier.js | 103 | // ── CORROBORATING: whole-headline quote wrap ───────────────────────── | COMMENT |
| MEDIUM | server/_shared/cache-keys.ts | 1 | // ── Story persistence tracking keys (E3) ───────────────────────────────────── | COMMENT |
| MEDIUM | server/_shared/brief-render.js | 34 | // ── Constants ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/_shared/brief-render.js | 58 | // ── HTML escaping ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/_shared/brief-render.js | 87 | // ── Envelope validation ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | server/_shared/brief-render.js | 387 | // ── Logo symbol + references ───────────────────────────────────────────────── | COMMENT |
| 284 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | middleware.ts | 125 | function hasLegacyDashboardRootState(searchParams: URLSearchParams): boolean { | CODE |
| LOW | vite.config.ts | 283 | function dashboardHtmlOutputPlugin(): Plugin { | CODE |
| LOW | vite.config.ts | 318 | function variantDashboardHtmlPlugin(): Plugin { | CODE |
| LOW | vite.config.ts | 339 | function shouldDeferDashboardStylesheet(tag: string, bundle: OutputBundle): boolean { | CODE |
| LOW | vite.config.ts | 365 | function deferDashboardStylesheetLinks(html: string, bundle: OutputBundle): string { | CODE |
| LOW | pro-test/vite.config.ts | 12 | function isWelcomeHydrationPreload(dep: string) { | CODE |
| LOW | pro-test/src/debugbear-rum.ts | 59 | export function resetDebugBearRumForTesting(): void { | CODE |
| LOW | pro-test/src/services/checkout-intent-url.ts | 30 | export function parseCheckoutIntentFromSearch(search: string): CheckoutIntentFromUrl | null { | CODE |
| LOW | pro-test/src/services/checkout-intent-url.ts | 49 | export function stripCheckoutIntentFromSearch(search: string): string { | CODE |
| LOW | pro-test/src/services/checkout.ts | 62 | function persistFunnelEventForReplay(event: string, data?: Record<string, unknown>): void { | CODE |
| LOW | pro-test/src/services/checkout.ts | 76 | function clearPersistedFunnelEvents(): void { | CODE |
| LOW | pro-test/src/services/checkout.ts | 146 | function bucketProductIdForAnalytics(productId: string): string { | CODE |
| LOW | pro-test/src/services/checkout.ts | 654 | function mountCheckoutInterstitial(): void { | CODE |
| LOW | pro-test/src/services/checkout.ts | 692 | function unmountCheckoutInterstitial(): void { | CODE |
| LOW | pro-test/src/services/checkout.ts | 761 | function prereserveBillingPortalTab(): Window | null { | CODE |
| LOW | pro-test/src/services/checkout.ts | 819 | function resolveProPlanDisplayName(planKey: unknown): string { | CODE |
| LOW | pro-test/src/services/checkout.ts | 832 | function showProDuplicateSubscriptionDialog(options: ProDuplicateDialogOptions): void { | CODE |
| LOW | pro-test/src/services/checkout.ts | 911 | function showProPendingPaymentDialog(options: ProDuplicateDialogOptions): void { | CODE |
| LOW | pro-test/src/services/welcome-redirect.ts | 10 | export function welcomeDashboardRedirectTarget(location: Pick<WelcomeRedirectLocation, 'search' | 'hash'>): string { | CODE |
| LOW | pro-test/src/services/welcome-redirect.ts | 14 | export function maybeRedirectWelcomeVisitor( | CODE |
| LOW | pro-test/src/services/entitlement-watchdog.ts | 59 | export function createEntitlementWatchdog( | CODE |
| LOW | pro-test/src/services/clerk-user-state.ts | 19 | function applyClientSessionBaseline(current: ClerkUserState, signedIn: boolean): ClerkUserState { | CODE |
| LOW | server/gateway.ts | 110 | async function claimInternalMcpReplayNonce(userId: string, nonce: string): Promise<InternalMcpReplayClaim> { | CODE |
| LOW | server/gateway.ts | 444 | function isPostToGetCompatibleBodySize(headers: Headers): boolean { | CODE |
| LOW | server/gateway.ts | 452 | function getRequiredBboxQueryProblems(searchParams: URLSearchParams): { missing: string[]; invalid: string[]; allZero: b | CODE |
| LOW | server/gateway.ts | 489 | function getRequiredBboxDiagnostic(request: Request, pathname: string): RequiredBboxDiagnostic | null { | CODE |
| LOW | server/gateway.ts | 503 | function attachRequiredBboxDiagnosticHeaders( | CODE |
| LOW | server/gateway.ts | 548 | function createGatewayAuthErrorResponse( | CODE |
| LOW | server/gateway.ts | 571 | async function shouldReserveGatewayDirectLlmQuota(request: Request, pathname: string): Promise<boolean> { | CODE |
| LOW | server/gateway.ts | 590 | function createDirectLlmQuotaFailureResponse( | CODE |
| LOW | server/gateway.ts | 632 | function hasCredentialBearingHeader(request: Request): boolean { | CODE |
| LOW | server/gateway.ts | 641 | async function isResilienceRankingSeedRefreshRequest(request: Request, pathname: string): Promise<boolean> { | CODE |
| LOW | server/gateway.ts | 668 | function assertProMcpGatewayHmacConfig(): void { | CODE |
| LOW | server/worldmonitor/research/v1/list-tech-events.ts | 38 | function readTechEventsPagingPresence(ctx: ServerContext): TechEventsPagingPresence { | CODE |
| LOW | server/worldmonitor/maritime/v1/get-vessel-snapshot.ts | 170 | async function fetchVesselSnapshotFromRelay( | CODE |
| LOW | …tor/consumer-prices/v1/get-consumer-price-freshness.ts | 10 | export async function getConsumerPriceFreshness( | CODE |
| LOW | …r/consumer-prices/v1/list-consumer-price-categories.ts | 12 | export async function listConsumerPriceCategories( | CODE |
| LOW | …consumer-prices/v1/get-consumer-price-basket-series.ts | 14 | export async function getConsumerPriceBasketSeries( | CODE |
| LOW | …worldmonitor/intelligence/v1/_country-brief-context.ts | 49 | export function deriveCountryIntelCacheKey(opts: CountryIntelCacheKeyOpts): string { | CODE |
| LOW | …worldmonitor/intelligence/v1/_country-brief-context.ts | 191 | export function buildSharedCountryContext(digest: unknown, countryCode: string): SharedCountryContext { | CODE |
| LOW | …worldmonitor/intelligence/v1/_country-brief-context.ts | 218 | export async function fetchSharedCountryContext(countryCode: string): Promise<SharedCountryContext> { | CODE |
| LOW | …er/worldmonitor/intelligence/v1/brief-story-context.ts | 57 | export async function assembleBriefStoryContext( | CODE |
| LOW | …rldmonitor/intelligence/v1/brief-why-matters-prompt.ts | 259 | export function buildAnalystWhyMattersPrompt( | CODE |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 207 | function isNorthOfApproxUsMxBorder(lat: number, lon: number): boolean { | CODE |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 332 | function getClimateAnomalyCoordinateCountry(anomaly: any): string | null { | CODE |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 339 | export function climateCountriesForAnomaly(anomaly: any): string[] { | CODE |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 468 | function isRecentUcdpClassificationDate(dateStart: unknown, nowMs: number): boolean { | CODE |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 481 | function deriveUcdpIntensityByRegion( | CODE |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1279 | export function countCiiRealtimeSignalDensityCoverage( | CODE |
| LOW⚡ | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1344 | function withRiskScoreRuntimeState( | CODE |
| LOW⚡ | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1351 | export function hasCompleteRiskScoreAdvisoryDisclosure(response: GetRiskScoresResponse): boolean { | CODE |
| LOW⚡ | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1358 | export function normalizeRiskScoreAdvisoryDisclosure(response: GetRiskScoresResponse): GetRiskScoresResponse { | CODE |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1429 | export function getCiiTrendPriorCandidateBuckets(nowMs: number): number[] { | CODE |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1446 | export function selectCiiTrendPriorSnapshot( | CODE |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1473 | function ciiTrendSnapshotFromResponse(response: GetRiskScoresResponse): CiiTrendSnapshot | null { | CODE |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1539 | async function persistFreshRiskScorePayload( | CODE |
| LOW⚡ | …dmonitor/intelligence/v1/get-country-energy-profile.ts | 217 | export function getObservedJodiOilMeasurements(jodiOil: JodiOil | null): string[] { | CODE |
| LOW⚡ | …dmonitor/intelligence/v1/get-country-energy-profile.ts | 221 | export function getObservedJodiGasMeasurements(jodiGas: JodiGas | null): string[] { | CODE |
| LOW⚡ | …dmonitor/intelligence/v1/get-country-energy-profile.ts | 230 | function observedSpineMeasurementPaths(value: unknown, paths: readonly string[]): string[] { | CODE |
| LOW | server/worldmonitor/intelligence/v1/_shock-compute.ts | 83 | export function computeEffectiveCoverDays( | CODE |
| 553 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | middleware.ts | 21 | // UptimeRobot + ops curl. Was blocked by the curl/bot UA regex before this | COMMENT |
| LOW | middleware.ts | 241 | // unfurlers, preview scrapers. Bot-gating it broke the logo in | COMMENT |
| LOW | nixpacks.toml | 1 | # Railway relay build config (root_dir="" — builds from repo root). | COMMENT |
| LOW | docker-compose.yml | 1 | # ============================================================================= | COMMENT |
| LOW | docker-compose.yml | 121 | # secrets: | COMMENT |
| LOW | vite.config.ts | 21 | const STATIC_SCRIPT_NONCE = 'wm-static-bootstrap'; | COMMENT |
| LOW | vite.config.ts | 301 | } | COMMENT |
| LOW | vite.config.ts | 941 | __APP_VERSION__: JSON.stringify(pkg.version), | COMMENT |
| LOW | vite.config.ts | 1241 | // ai-datacenters table (~86KB) — consumers (map/globe/search) import | COMMENT |
| LOW | vite.config.ts | 1261 | if (id.endsWith('/src/config/military-bases.ts') || id.endsWith('/src/config/bases-expanded.ts')) { | COMMENT |
| LOW | vite.config.ts | 1301 | return 'cross-module-integration'; | COMMENT |
| LOW | pro-test/src/App.tsx | 1341 | // On overlay success, the buyer needs to be bridged from /pro to the | COMMENT |
| LOW | pro-test/src/i18n.ts | 61 | set('meta[name="description"]', desc); | COMMENT |
| LOW | pro-test/src/services/checkout.ts | 341 | // `checkout.redirect_requested` carrying the URL WE must navigate | COMMENT |
| LOW | pro-test/src/services/checkout.ts | 481 | COMMENT | |
| LOW | server/gateway.ts | 121 | COMMENT | |
| LOW | server/gateway.ts | 401 | // to keep their compute caches hot (so the first real user request isn't a cold | COMMENT |
| LOW | server/gateway.ts | 821 | // `x-user-id` (the latter is also set by verified session / user-key | COMMENT |
| LOW | server/gateway.ts | 841 | stripped.delete(TRUSTED_USER_ID_HEADER); | COMMENT |
| LOW | server/gateway.ts | 901 | // invalid is a forge attempt, falling through to validateApiKey | COMMENT |
| LOW | server/gateway.ts | 921 | emitRequest(500, 'auth_401', null); | COMMENT |
| LOW | server/gateway.ts | 1001 | ); | COMMENT |
| LOW | server/gateway.ts | 1021 | // mcpAccess flag lands in U10 — undefined means "field not present | COMMENT |
| LOW | server/gateway.ts | 1061 | recordUsageEntitlement(ent); | COMMENT |
| LOW | server/gateway.ts | 1101 | COMMENT | |
| LOW | server/gateway.ts | 1161 | // Enterprise API key (WORLDMONITOR_VALID_KEYS): require kind === 'enterprise'. | COMMENT |
| LOW | server/gateway.ts | 1181 | // (isUserApiKey ⇒ sessionUserId is the resolved key owner, set above). | COMMENT |
| LOW | server/gateway.ts | 1241 | // a valid Dodo subscription. This mirrors the two-signal logic in | COMMENT |
| LOW | server/gateway.ts | 1301 | // #5206: summarize refreshes from multiple active Pro users can share a | COMMENT |
| LOW | server/worldmonitor/maritime/v1/get-vessel-snapshot.ts | 21 | chokepoint_congestion: 'AIS_DISRUPTION_TYPE_CHOKEPOINT_CONGESTION', | COMMENT |
| LOW | …worldmonitor/intelligence/v1/_country-brief-context.ts | 1 | // Shared (anonymous-tier) grounding context for the country intel brief. | COMMENT |
| LOW | server/worldmonitor/intelligence/v1/_risk-config.ts | 1 | // ============================================================================ | COMMENT |
| LOW | …rldmonitor/intelligence/v1/brief-why-matters-prompt.ts | 61 | // passes ALL six bundles for every story, so the LLM has the market / | COMMENT |
| LOW | …rldmonitor/intelligence/v1/brief-why-matters-prompt.ts | 121 | return LOCAL_JUSTICE_RE.test(text) && !ACTIVE_GEOPOLITICAL_RE.test(text); | COMMENT |
| LOW | …rldmonitor/intelligence/v1/brief-why-matters-prompt.ts | 281 | if (contextBlock) { | COMMENT |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1281 | aux: AuxiliarySources | undefined | null, | COMMENT |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1401 | COMMENT | |
| LOW | server/worldmonitor/intelligence/v1/get-risk-scores.ts | 1601 | // via real user traffic. This brings riskScores into the same pattern | COMMENT |
| LOW | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 481 | req: GetRegionalSnapshotRequest, | COMMENT |
| LOW | server/worldmonitor/intelligence/v1/_shared.ts | 1 | /** | COMMENT |
| LOW | server/worldmonitor/intelligence/v1/_shared.ts | 21 | // institutional pages that previously promoted info-keyword titles to | COMMENT |
| LOW | server/worldmonitor/aviation/v1/_avstack-budget.ts | 1 | import { runRedisPipeline } from '../../../_shared/redis'; | COMMENT |
| LOW | server/worldmonitor/scenario/v1/run-scenario.ts | 61 | }); | COMMENT |
| LOW | server/worldmonitor/news/v1/summarize-article.ts | 161 | cacheKey, | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 61 | // Hunt: producthunt.com/feed) went UNAVAILABLE over a weekend. Both feeds | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 181 | // Cleaned RSS/Atom article description: HTML-stripped, entity-decoded, | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 401 | // panel to "No news available" for the full hour. 5min keeps load on | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 421 | // | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 621 | `variant=${variant} parsed=${parsedTotal} dropped=${droppedUndated}`, | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 781 | if (!hit || hit.level === '_skip' || !hit.level || !hit.category) continue; | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 821 | // | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 1081 | ): Array<string | number> { | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 1101 | 'publishedAt', Number.isFinite(item.publishedAt) ? String(item.publishedAt) : '', | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 1121 | // title/link/description (residue catch). | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 1141 | async function writeStoryTracking(items: ParsedItem[], variant: string, lang: string, hashes: string[], memberHashesByFi | COMMENT |
| LOW | server/worldmonitor/news/v1/list-feed-digest.ts | 1321 | if (droppedStaleTotal > 0) { | COMMENT |
| LOW | server/worldmonitor/news/v1/_classifier.ts | 241 | // | COMMENT |
| LOW | server/worldmonitor/news/v1/_classifier.ts | 261 | // "Markets See Flashback To 2008 Crisis As Bonds Tumble" — no | COMMENT |
| LOW | server/worldmonitor/news/v1/_feeds.ts | 101 | // verified path (probed 2026-04-26). Federal Register fallback is | COMMENT |
| LOW | …ver/worldmonitor/resilience/v1/_dimension-freshness.ts | 1 | // T1.5 Phase 1 of the country-resilience reference-grade upgrade plan | COMMENT |
| 458 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | server/worldmonitor/forecast/v1/trigger-simulation.ts | 56 | // Step 1: Pro gate (defense-in-depth). | COMMENT |
| LOW⚡ | server/worldmonitor/forecast/v1/trigger-simulation.ts | 62 | // Step 2: queue-depth backpressure (mirrors run-scenario:50). | COMMENT |
| LOW⚡ | server/worldmonitor/forecast/v1/trigger-simulation.ts | 68 | // Step 3: derive runId from package pointer; no UUID fallback. | COMMENT |
| LOW | server/worldmonitor/forecast/v1/trigger-simulation.ts | 82 | // Step 4: pre-enqueue idempotency fast-path (D5). Authoritative | COMMENT |
| LOW | server/worldmonitor/forecast/v1/trigger-simulation.ts | 105 | // Step 5: enqueue. | COMMENT |
| LOW | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 488 | // Step 1: resolve latest pointer -> snapshot_id. | COMMENT |
| LOW⚡ | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 505 | // Step 2: resolve snapshot_id -> full snapshot | COMMENT |
| LOW⚡ | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 512 | // Step 3: adapt snake_case -> camelCase | COMMENT |
| LOW⚡ | server/_shared/feelgood-classifier.js | 156 | // Step 1: HARD-NEWS VETO. Runs FIRST. Overrides every classification | COMMENT |
| LOW⚡ | server/_shared/feelgood-classifier.js | 164 | // Step 2: STRONG URL pathname segment. | COMMENT |
| LOW⚡ | server/_shared/feelgood-classifier.js | 169 | // Step 3: STRONG headline prefix. | COMMENT |
| LOW⚡ | server/_shared/feelgood-classifier.js | 172 | // Step 4: CORROBORATING ≥3 DISTINCT named-group labels across all | COMMENT |
| LOW⚡ | server/_shared/pro-mcp-token.ts | 264 | // Step 1: negative-cache short-circuit. | COMMENT |
| LOW⚡ | server/_shared/pro-mcp-token.ts | 267 | // Step 2: Convex round-trip. | COMMENT |
| LOW⚡ | server/_shared/pro-mcp-token.ts | 316 | // Step 3: positive — return WITHOUT caching. | COMMENT |
| LOW⚡ | server/_shared/pro-mcp-token.ts | 320 | // Step 4: negative — write sentinel and return revoked. | COMMENT |
| LOW⚡ | docs/climate-variant-full.md | 26 | // Step 1: Fetch current 7-day mean for zone | COMMENT |
| LOW⚡ | docs/climate-variant-full.md | 27 | // Step 2: Fetch historical 30-year monthly mean for same month | COMMENT |
| LOW⚡ | docs/climate-variant-full.md | 29 | // Step 3: anomaly = current - historical_mean | COMMENT |
| LOW | docs/Docs_To_Review/PANELS.md | 732 | ### Step 1: Define the Panel Config | COMMENT |
| LOW | docs/Docs_To_Review/PANELS.md | 743 | ### Step 2: Create the Component Class | COMMENT |
| LOW | docs/Docs_To_Review/PANELS.md | 782 | ### Step 3: Register in App.ts | COMMENT |
| LOW | docs/Docs_To_Review/PANELS.md | 794 | ### Step 4: Wire Data Loading | COMMENT |
| LOW⚡ | docs/Docs_To_Review/PANELS.md | 805 | ### Step 5: Add Refresh Interval (Optional) | COMMENT |
| LOW⚡ | docs/Docs_To_Review/PANELS.md | 809 | ### Step 6: Add Map Layer (Optional) | COMMENT |
| LOW⚡ | docs/Docs_To_Review/PANELS.md | 817 | ### Step 7: Add i18n Key | COMMENT |
| LOW | docs/Docs_To_Review/PANELS.md | 829 | ### Step 8: Register in Variant Configs | COMMENT |
| LOW | convex/notificationChannels.ts | 124 | // Step 1: scan for any existing rows with this endpoint across | COMMENT |
| LOW | convex/notificationChannels.ts | 143 | // Step 2: upsert the current-user row by (userId, channelType). | COMMENT |
| LOW⚡ | convex/followedCountries.ts | 495 | // Step 2: empty-input guard. | COMMENT |
| LOW⚡ | convex/followedCountries.ts | 500 | // Step 3: defensive upper-bound on input length. | COMMENT |
| LOW⚡ | convex/followedCountries.ts | 509 | // Step 4: ISO-2 registry filter; collect droppedInvalid in input order. | COMMENT |
| LOW | convex/followedCountries.ts | 520 | // Step 5: canonicalize — dedupe in first-seen order. Without this, a | COMMENT |
| LOW⚡ | convex/followedCountries.ts | 541 | // Step 6: read existing rows; build existingSet. Still required for | COMMENT |
| LOW⚡ | convex/followedCountries.ts | 550 | // Step 7: filter against existing. | COMMENT |
| LOW | convex/followedCountries.ts | 568 | // Step 10: insert accepted rows + atomic counter +1 each. | COMMENT |
| LOW | convex/followedCountries.ts | 589 | // Step 12: structured warning when free users overflow cap. No | COMMENT |
| LOW | convex/followedCountries.ts | 604 | // Step 11: return shape. | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 120 | // Step 1: Seed product plans + customer mapping | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 126 | // Step 2: Simulate subscription.active webhook (with wm_user_id metadata) | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 135 | // Step 3: Query entitlements for the real user (not fallback) | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 141 | // Step 4: Assert pro_monthly entitlements | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 151 | // Step 1: Seed product plans + customer mapping | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 157 | // Step 2: Simulate subscription.active webhook | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 166 | // Step 3: Query entitlements | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 172 | // Step 4: Assert api_starter entitlements | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 184 | // Step 1: Seed product plans + customer mapping | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 190 | // Step 2: Simulate webhook with billing dates both in the past (expired) | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 202 | // Step 3: Query entitlements -- should return free tier (expired) | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 208 | // Step 4: Assert free tier defaults | COMMENT |
| LOW | convex/broadcast/waveRuns.ts | 711 | // Step 1: claim lease + insert waveRuns row. | COMMENT |
| LOW | convex/broadcast/waveRuns.ts | 729 | // Step 2: stream registrations + filter (per-page) + reservoir-sample. | COMMENT |
| LOW | convex/broadcast/waveRuns.ts | 852 | // Step 3: create the Resend segment. | COMMENT |
| LOW | convex/broadcast/waveRuns.ts | 866 | // Step 4: chunk-persist picked rows. Each chunk is its own mutation so | COMMENT |
| LOW | convex/broadcast/waveRuns.ts | 885 | // Step 5: mark pick complete + schedule first push batch. | COMMENT |
| LOW | convex/broadcast/audienceWaveExport.ts | 293 | // Step 1: refuse to overlap with an existing wave. | COMMENT |
| LOW | convex/broadcast/audienceWaveExport.ts | 304 | // Step 2: stream registrations, dedup, reservoir-sample N. | COMMENT |
| LOW⚡ | convex/broadcast/audienceWaveExport.ts | 355 | // Step 3: create the Resend segment FIRST so we never stamp a | COMMENT |
| LOW⚡ | convex/broadcast/audienceWaveExport.ts | 363 | // Step 4: push picked contacts to the segment, then stamp ONLY on | COMMENT |
| LOW | api/mcp/registry/rpc-tools.ts | 148 | // Step 1: fetch current geopolitical headlines (budget: 6 s, leaves ~24 s for LLM). | COMMENT |
| 38 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | server/worldmonitor/forecast/v1/trigger-simulation.ts | 56 | // Step 1: Pro gate (defense-in-depth). | COMMENT |
| LOW⚡ | server/worldmonitor/forecast/v1/trigger-simulation.ts | 62 | // Step 2: queue-depth backpressure (mirrors run-scenario:50). | COMMENT |
| LOW⚡ | server/worldmonitor/forecast/v1/trigger-simulation.ts | 68 | // Step 3: derive runId from package pointer; no UUID fallback. | COMMENT |
| LOW | server/worldmonitor/forecast/v1/trigger-simulation.ts | 82 | // Step 4: pre-enqueue idempotency fast-path (D5). Authoritative | COMMENT |
| LOW | server/worldmonitor/forecast/v1/trigger-simulation.ts | 105 | // Step 5: enqueue. | COMMENT |
| LOW | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 488 | // Step 1: resolve latest pointer -> snapshot_id. | COMMENT |
| LOW⚡ | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 505 | // Step 2: resolve snapshot_id -> full snapshot | COMMENT |
| LOW⚡ | …/worldmonitor/intelligence/v1/get-regional-snapshot.ts | 512 | // Step 3: adapt snake_case -> camelCase | COMMENT |
| LOW⚡ | server/_shared/feelgood-classifier.js | 156 | // Step 1: HARD-NEWS VETO. Runs FIRST. Overrides every classification | COMMENT |
| LOW⚡ | server/_shared/feelgood-classifier.js | 164 | // Step 2: STRONG URL pathname segment. | COMMENT |
| LOW⚡ | server/_shared/feelgood-classifier.js | 169 | // Step 3: STRONG headline prefix. | COMMENT |
| LOW⚡ | server/_shared/feelgood-classifier.js | 172 | // Step 4: CORROBORATING ≥3 DISTINCT named-group labels across all | COMMENT |
| LOW⚡ | server/_shared/pro-mcp-token.ts | 264 | // Step 1: negative-cache short-circuit. | COMMENT |
| LOW⚡ | server/_shared/pro-mcp-token.ts | 267 | // Step 2: Convex round-trip. | COMMENT |
| LOW⚡ | server/_shared/pro-mcp-token.ts | 316 | // Step 3: positive — return WITHOUT caching. | COMMENT |
| LOW⚡ | server/_shared/pro-mcp-token.ts | 320 | // Step 4: negative — write sentinel and return revoked. | COMMENT |
| LOW | convex/notificationChannels.ts | 124 | // Step 1: scan for any existing rows with this endpoint across | COMMENT |
| LOW | convex/notificationChannels.ts | 143 | // Step 2: upsert the current-user row by (userId, channelType). | COMMENT |
| LOW⚡ | convex/followedCountries.ts | 495 | // Step 2: empty-input guard. | COMMENT |
| LOW⚡ | convex/followedCountries.ts | 500 | // Step 3: defensive upper-bound on input length. | COMMENT |
| LOW⚡ | convex/followedCountries.ts | 509 | // Step 4: ISO-2 registry filter; collect droppedInvalid in input order. | COMMENT |
| LOW | convex/followedCountries.ts | 520 | // Step 5: canonicalize — dedupe in first-seen order. Without this, a | COMMENT |
| LOW⚡ | convex/followedCountries.ts | 541 | // Step 6: read existing rows; build existingSet. Still required for | COMMENT |
| LOW⚡ | convex/followedCountries.ts | 550 | // Step 7: filter against existing. | COMMENT |
| LOW | convex/followedCountries.ts | 568 | // Step 10: insert accepted rows + atomic counter +1 each. | COMMENT |
| LOW | convex/followedCountries.ts | 589 | // Step 12: structured warning when free users overflow cap. No | COMMENT |
| LOW | convex/followedCountries.ts | 604 | // Step 11: return shape. | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 120 | // Step 1: Seed product plans + customer mapping | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 126 | // Step 2: Simulate subscription.active webhook (with wm_user_id metadata) | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 135 | // Step 3: Query entitlements for the real user (not fallback) | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 141 | // Step 4: Assert pro_monthly entitlements | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 151 | // Step 1: Seed product plans + customer mapping | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 157 | // Step 2: Simulate subscription.active webhook | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 166 | // Step 3: Query entitlements | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 172 | // Step 4: Assert api_starter entitlements | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 184 | // Step 1: Seed product plans + customer mapping | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 190 | // Step 2: Simulate webhook with billing dates both in the past (expired) | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 202 | // Step 3: Query entitlements -- should return free tier (expired) | COMMENT |
| LOW⚡ | convex/__tests__/checkout.test.ts | 208 | // Step 4: Assert free tier defaults | COMMENT |
| LOW | convex/broadcast/waveRuns.ts | 711 | // Step 1: claim lease + insert waveRuns row. | COMMENT |
| LOW | convex/broadcast/waveRuns.ts | 729 | // Step 2: stream registrations + filter (per-page) + reservoir-sample. | COMMENT |
| LOW | convex/broadcast/waveRuns.ts | 852 | // Step 3: create the Resend segment. | COMMENT |
| LOW | convex/broadcast/waveRuns.ts | 866 | // Step 4: chunk-persist picked rows. Each chunk is its own mutation so | COMMENT |
| LOW | convex/broadcast/waveRuns.ts | 885 | // Step 5: mark pick complete + schedule first push batch. | COMMENT |
| LOW | convex/broadcast/audienceWaveExport.ts | 293 | // Step 1: refuse to overlap with an existing wave. | COMMENT |
| LOW | convex/broadcast/audienceWaveExport.ts | 304 | // Step 2: stream registrations, dedup, reservoir-sample N. | COMMENT |
| LOW⚡ | convex/broadcast/audienceWaveExport.ts | 355 | // Step 3: create the Resend segment FIRST so we never stamp a | COMMENT |
| LOW⚡ | convex/broadcast/audienceWaveExport.ts | 363 | // Step 4: push picked contacts to the segment, then stamp ONLY on | COMMENT |
| LOW | api/mcp/registry/rpc-tools.ts | 148 | // Step 1: fetch current geopolitical headlines (budget: 6 s, leaves ~24 s for LLM). | COMMENT |
| LOW | api/mcp/registry/rpc-tools.ts | 175 | // Step 2: summarize with LLM (budget: 18 s — combined 24 s, well under 30 s edge ceiling) | COMMENT |
| LOW | api/brief/public/[hash].ts | 138 | // Step 1: resolve pointer → {userId, issueSlot}. | COMMENT |
| LOW | api/brief/public/[hash].ts | 171 | // Step 2: resolve the actual brief envelope. | COMMENT |
| LOW | src/components/InsightsPanel.ts | 276 | // Step 1: Signal aggregation (client-side, depends on real-time map data) | COMMENT |
| LOW | src/components/InsightsPanel.ts | 305 | // Step 2: Re-sort server stories by ISQ (shallow copy to avoid mutating cache) | COMMENT |
| LOW | src/components/InsightsPanel.ts | 361 | // Step 1: Signal aggregation + focal point detection (must run BEFORE ranking) | COMMENT |
| LOW⚡ | src/components/InsightsPanel.ts | 439 | // Step 2: Analyze sentiment (browser-based, fast) | COMMENT |
| LOW⚡ | src/components/InsightsPanel.ts | 448 | // Step 3: Generate World Brief (with cooldown) | COMMENT |
| LOW | src/components/InsightsPanel.ts | 494 | // Step 4: Wait for parallel analysis to complete | COMMENT |
| LOW | src/services/followed-countries.ts | 734 | // Step 1: parse localStorage (corruption recovery is unconditional). | COMMENT |
| LOW | src/services/followed-countries.ts | 758 | // Step 2: call mergeAnonymousLocal. | COMMENT |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mcp-grant.html | 46 | <div id="loading"><span class="spinner"></span><span class="placeholder">Loading authorization request…</span></di | CODE |
| LOW | convex/broadcast/sendBroadcast.ts | 79 | PRO_LAUNCH_PHYSICAL_ADDRESS.includes("placeholder") | CODE |
| LOW | src/locales/zh.json | 421 | "placeholder": "搜索或输入命令...", | CODE |
| LOW | src/locales/zh.json | 555 | "placeholder": { | CODE |
| LOW | src/locales/zh.json | 587 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/zh.json | 710 | "placeholder": "关键词(逗号分隔)", | CODE |
| LOW | src/locales/tr.json | 421 | "placeholder": "Ara veya komut yaz...", | CODE |
| LOW | src/locales/tr.json | 555 | "placeholder": { | CODE |
| LOW | src/locales/tr.json | 587 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/tr.json | 710 | "placeholder": "Anahtar kelimeler (virgul ile ayirin)", | CODE |
| LOW | src/locales/hu.json | 490 | "placeholder": "Keresés vagy parancs begépelése...", | CODE |
| LOW | src/locales/hu.json | 625 | "placeholder": { | CODE |
| LOW | src/locales/hu.json | 662 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/hu.json | 802 | "placeholder": "Kulcsszavak (vesszővel elválasztva)", | CODE |
| LOW | src/locales/nl.json | 208 | "placeholder": "Zoeken of commando typen...", | CODE |
| LOW | src/locales/nl.json | 327 | "placeholder": { | CODE |
| LOW | src/locales/nl.json | 451 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/nl.json | 471 | "placeholder": "Trefwoorden (door komma's gescheiden)", | CODE |
| LOW | src/locales/ja.json | 421 | "placeholder": "検索またはコマンドを入力...", | CODE |
| LOW | src/locales/ja.json | 555 | "placeholder": { | CODE |
| LOW | src/locales/ja.json | 587 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/ja.json | 710 | "placeholder": "キーワード(カンマ区切り)", | CODE |
| LOW | src/locales/de.json | 421 | "placeholder": "Suchen oder Befehl eingeben...", | CODE |
| LOW | src/locales/de.json | 555 | "placeholder": { | CODE |
| LOW | src/locales/de.json | 664 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/de.json | 684 | "placeholder": "Schlüsselwörter (durch Kommas getrennt)", | CODE |
| LOW | src/locales/ru.json | 421 | "placeholder": "Поиск или введите команду...", | CODE |
| LOW | src/locales/ru.json | 555 | "placeholder": { | CODE |
| LOW | src/locales/ru.json | 587 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/ru.json | 710 | "placeholder": "Ключевые слова (через запятую)", | CODE |
| LOW | src/locales/pl.json | 421 | "placeholder": "Szukaj lub wpisz polecenie...", | CODE |
| LOW | src/locales/pl.json | 554 | "placeholder": { | CODE |
| LOW | src/locales/pl.json | 664 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/pl.json | 684 | "placeholder": "Słowa kluczowe (oddzielone przecinkami)", | CODE |
| LOW | src/locales/pt.json | 208 | "placeholder": "Pesquisar ou digitar um comando...", | CODE |
| LOW | src/locales/pt.json | 327 | "placeholder": { | CODE |
| LOW | src/locales/pt.json | 451 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/pt.json | 471 | "placeholder": "Palavras-chave (separadas por vírgula)", | CODE |
| LOW | src/locales/en.json | 490 | "placeholder": "Search or type a command...", | CODE |
| LOW | src/locales/en.json | 625 | "placeholder": { | CODE |
| LOW | src/locales/en.json | 662 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/en.json | 802 | "placeholder": "Keywords (comma separated)", | CODE |
| LOW | src/locales/it.json | 421 | "placeholder": "Cerca o digita un comando...", | CODE |
| LOW | src/locales/it.json | 555 | "placeholder": { | CODE |
| LOW | src/locales/it.json | 664 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/it.json | 684 | "placeholder": "Parole chiave (separate da virgole)", | CODE |
| LOW | src/locales/hr.json | 500 | "placeholder": "Pretraži ili unesite naredbu...", | CODE |
| LOW | src/locales/hr.json | 642 | "placeholder": { | CODE |
| LOW | src/locales/hr.json | 682 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/hr.json | 862 | "placeholder": "Ključne riječi (odvojene zarezom)", | CODE |
| LOW | src/locales/en.shell.json | 730 | "placeholder": { | CODE |
| LOW | src/locales/en.shell.json | 780 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/fr.json | 421 | "placeholder": "Rechercher ou saisir une commande...", | CODE |
| LOW | src/locales/fr.json | 554 | "placeholder": { | CODE |
| LOW | src/locales/fr.json | 594 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/fr.json | 684 | "placeholder": "Mots-clés (séparés par virgule)", | CODE |
| LOW | src/locales/el.json | 421 | "placeholder": "Αναζήτηση ή πληκτρολογήστε εντολή...", | CODE |
| LOW | src/locales/el.json | 555 | "placeholder": { | CODE |
| LOW | src/locales/el.json | 587 | "placeholder": "wm_xxxxxxxxxxxxxxxxxxxxxxxx", | CODE |
| LOW | src/locales/el.json | 710 | "placeholder": "Λέξεις-κλειδιά (διαχωρισμένες με κόμμα)", | CODE |
| 45 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | src/app/country-intel.ts | 1197 | protests = this.ctx.intelligenceCache.protests.events.filter((e) => | CODE |
| CRITICAL⚡ | src/app/country-intel.ts | 1207 | militaryFlights = this.ctx.intelligenceCache.military.flights.filter((f) => | CODE |
| CRITICAL⚡ | src/app/country-intel.ts | 1210 | militaryVessels = this.ctx.intelligenceCache.military.vessels.filter((v) => | CODE |
| CRITICAL⚡ | src/app/country-intel.ts | 1213 | militaryFlightsInCountry = this.ctx.intelligenceCache.military.flights.filter((f) => | CODE |
| CRITICAL⚡ | src/app/country-intel.ts | 1216 | militaryVesselsInCountry = this.ctx.intelligenceCache.military.vessels.filter((v) => | CODE |
| CRITICAL | src/app/country-intel.ts | 1279 | thermalEscalations = this.ctx.intelligenceCache.thermalEscalation.clusters.filter( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | package-lock.json | 19100 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | server/worldmonitor/economic/v1/_bis-shared.ts | 45 | // Parse BIS CSV using papaparse — robust handling of quoted fields & metadata | COMMENT |
| MEDIUM | server/worldmonitor/market/v1/analyze-stock.ts | 321 | // recent >= 3 → trust interval (robust to calendar-boundary drift) | COMMENT |
| MEDIUM | convex/__tests__/billing.test.ts | 3322 | // Date.now() call) trips before any row is attempted — robust to however | COMMENT |
| MEDIUM | public/pro/assets/index-D0F7eEoT.js | 9 | `).replace(IS,"")}function jm(t,e){return e=km(e),km(t)===e}function xt(t,e,n,s,r,c){switch(n){case"children":typeof s== | CODE |
| MEDIUM | api/a2a.ts | 141 | // Documented robust (never throws meaningfully; degrades to | COMMENT |
| MEDIUM | api/mcp/types.ts | 315 | // `read` returns the wire-ready `content[0].text` and MUST be robust: | COMMENT |
| MEDIUM | api/mcp/resources/index.ts | 241 | // `read()` is documented "MUST be robust", but enforce it at the boundary so | COMMENT |
| MEDIUM | src/components/BreakthroughsTickerPanel.ts | 65 | // Double the content for seamless infinite scroll | COMMENT |
| MEDIUM | src/e2e/map-harness.ts | 148 | throw new Error('Missing #app container for map harness'); | CODE |
| MEDIUM | src/e2e/mobile-map-harness.ts | 33 | throw new Error('Missing #app container for mobile popup harness'); | CODE |
| MEDIUM | src/e2e/mobile-map-integration-harness.ts | 33 | throw new Error('Missing #app container for mobile map integration harness'); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | AGENTS.md | 14 | │ ├── app/ # App orchestration (data-loader, refresh-scheduler, panel-layout) | CODE |
| MEDIUM | pro-test/welcome.html | 7 | it as a sibling of #root; crawler-visible by default for AEO/RAG | CODE |
| MEDIUM | docs/railway-seed-consolidation-runbook.md | 27 | ## Deployment safety guardrails | COMMENT |
| MEDIUM | docs/methodology/indicator-sources.yaml | 1 | # Resilience scorer indicator-source manifest (PR 0 scaffold, 2026-04-22). | COMMENT |
| MEDIUM | docs/architecture/pro-monetization.md | 110 | ├── checkout.ts # Dodo overlay orchestration | CODE |
| MEDIUM | public/pro/welcome.html | 7 | it as a sibling of #root; crawler-visible by default for AEO/RAG | CODE |
| MEDIUM | .github/workflows/feed-validation.yml | 17 | # The --ci flag enforces three guardrails inside scripts/validate-rss-feeds.mjs: | COMMENT |
| MEDIUM | workers/api-cors-preflight/src/index.js | 14 | // the Worker visible to code review, greptile, and CI guardrails. | COMMENT |
| MEDIUM | …tent/blog/ai-powered-intelligence-without-the-cloud.md | 70 | ### Semantic Search (RAG) | COMMENT |
| MEDIUM | src/app/panel-layout.ts | 146 | // it honest: `tests/panel-config-guardrails.test.mjs` fails CI on drift, and | COMMENT |
| MEDIUM | src/app/panel-layout.ts | 205 | // it in the app (CI also catches drift via panel-config-guardrails). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/api/IntelligenceService.openapi.json | 1 | {"components":{"schemas":{"ActorState":{"description":"ActorState is one geopolitical actor's leverage score in the regi | CODE |
| HIGH | docs/api/IntelligenceService.openapi.json | 1 | {"components":{"schemas":{"ActorState":{"description":"ActorState is one geopolitical actor's leverage score in the regi | CODE |
| HIGH | api/mcp/ui/forecasts-app.ts | 3 | // AI-generated geopolitical/economic forecasts as probability cards (title, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sdk/python/src/worldmonitor_sdk/__init__.py | 304 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/_gem-geojson-to-canonical.py | 135 | CODE |