{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-136386bed6684a2b", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test-cascade.ts:174", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test-cascade.ts:174"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-488ba894540ddaa2", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test-credentials.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test-credentials.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c01a7396b79c8a77", "name": "Stray `console.log` in TS/JS \u2014 packages/ui/src/tui/introspect/beats.tsx:299", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/tui/introspect/beats.tsx:299"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83414f4ef02d4731", "name": "Stray `console.log` in TS/JS \u2014 packages/ui/src/tui/introspect/browse.tsx:403", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/tui/introspect/browse.tsx:403"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c70079663a6fdfeb", "name": "Stray `console.log` in TS/JS \u2014 packages/ui/src/telegram/TelegramAdapter.tsx:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/telegram/TelegramAdapter.tsx:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d131665047771d53", "name": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/CLIInterface.test.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/CLIInterface.test.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-232e96bd48809675", "name": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/DefaultCommands.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/DefaultCommands.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-65138437d9460947", "name": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/CLIInterface.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/CLIInterface.ts:123"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ee8ac7605d15810", "name": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/repl.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/repl.ts:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0741b637a9b1ed51", "name": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/CommandRegistry.test.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/CommandRegistry.test.ts:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17951585c8b37953", "name": "Stray `console.log` in TS/JS \u2014 packages/ui/src/discord/DiscordAdapter.tsx:212", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/discord/DiscordAdapter.tsx:212"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f153fd821583ca79", "name": "Stray `console.log` in TS/JS \u2014 packages/evaluation/scripts/clear-cache-no-transcript.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/evaluation/scripts/clear-cache-no-transcript.ts:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fee2d39a83104d2a", "name": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/reporting/renderers/console-renderer.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/reporting/renderers/console-renderer.ts:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f250b3a762390c65", "name": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/evaluation/suite.ts:265", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/evaluation/suite.ts:265"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5f308a4c615bbd1", "name": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/evaluation/llm-eval/coding.ts:271", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/evaluation/llm-eval/coding.ts:271"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ce0173c493a23f6", "name": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/evaluation/caching/cache-service.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/evaluation/caching/cache-service.ts:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75d1dcddac80442a", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/src/run.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/run.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ef8aba905f3e71e", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/src/mcp.ts:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/mcp.ts:126"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00de548904adfced", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/src/tools.test.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/tools.test.ts:136"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29b63ab9be82d0c5", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/src/tools.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/tools.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7dee83c02974d68f", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/src/chat.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/chat.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b85748bfdc51d477", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/src/models.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/models.ts:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf33e056f210534f", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/src/habitat.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/habitat.ts:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18335dc85818bf12", "name": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/learnings.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/learnings.ts:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03bb16bedbb9ed2c", "name": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/transcript.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/transcript.ts:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e660a8f2a6d7d5d", "name": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/format.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/format.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7eae9c56618dfdff", "name": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/inspect.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/inspect.ts:77"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be674dd73cb604ae", "name": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/bulk.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/bulk.ts:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e7d36548bd594caa", "name": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/digest.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/digest.ts:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e8e2340ed761c7a5", "name": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/tui.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/tui.ts:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa4d33eb66232689", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/message-normalizer.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/message-normalizer.ts:77"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-084fb9ae9652dbe1", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/stream_object.integration.test.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/stream_object.integration.test.ts:146"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e9d4552783eb71e9", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/generate_object.integration.test.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/generate_object.integration.test.ts:182"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-887c1fc46a547b8b", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/runner.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/runner.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d460cbd27835707", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/models.integration.test.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/models.integration.test.ts:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8cf997c15545fe87", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/request-options.ts:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/request-options.ts:120"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8545328813632267", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/interaction/analysis/session-digester.ts:362", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/interaction/analysis/session-digester.ts:362"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b17f654ee14133d", "name": "TODO/FIXME marker in shipping code \u2014 packages/core/src/interaction/analysis/digest-search.ts:416", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/interaction/analysis/digest-search.ts:416"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0df8d6fe3822c4ca", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/interaction/core/attachments.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/interaction/core/attachments.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a41d647247ae4ce2", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/interaction/persistence/session-indexer.ts:129", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/interaction/persistence/session-indexer.ts:129"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5309d4d2ffe88895", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/llamaswap.integration.test.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/llamaswap.integration.test.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c223adf78f74170", "name": "TODO/FIXME marker in shipping code \u2014 packages/core/src/providers/openrouter.integration.test.ts:155", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/providers/openrouter.integration.test.ts:155"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a381682d3f195df4", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/openrouter.integration.test.ts:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/openrouter.integration.test.ts:108"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e136a8ebe163a36", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/github-models.integration.test.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/github-models.integration.test.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4c285303227eee5", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/google.integration.test.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/google.integration.test.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12fc0e25d08dd9bd", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/lmstudio.integration.test.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/lmstudio.integration.test.ts:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c68072366993fced", "name": "TODO/FIXME marker in shipping code \u2014 packages/core/src/providers/ollama.integration.test.ts:128", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/providers/ollama.integration.test.ts:128"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43017777204f74f3", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/ollama.integration.test.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/ollama.integration.test.ts:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5fec9a904f1f3abf", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/llamabarn.integration.test.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/llamabarn.integration.test.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ee85f8ef3f6a9f8", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/stimulus/tools/examples/math.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/stimulus/tools/examples/math.ts:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d14059f2fa585a0", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/memory/determine_operations.integration.test.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/memory/determine_operations.integration.test.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36d3d69b0e0d6062", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/memory/extract_facts.ts:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/memory/extract_facts.ts:116"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5dcbadde28eb34ec", "name": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/container-server.ts:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/container-server.ts:197"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df73e627d7c72aaf", "name": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/mcp-tool-bridge.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/mcp-tool-bridge.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-10f9f42b027c827b", "name": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/mcp-local-server.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/mcp-local-server.ts:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef149bbfb0beb351", "name": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/serve.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/serve.ts:78"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8574da18c75629e2", "name": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/cli/sessions-habitat.ts:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/cli/sessions-habitat.ts:121"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a0201b116472a352", "name": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/identity/skill-inspector.test.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/identity/skill-inspector.test.ts:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6603a9f7a4db946c", "name": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/tools/gaia/gaia.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/tools/gaia/gaia.ts:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f83a32147f542dfe", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 packages/habitat/src/tools/gaia/routes.ts:49", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 packages/habitat/src/tools/gaia/routes.ts:495"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b3e4e39f65ac4ae", "name": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/bridge/channel-bridge.ts:499", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/bridge/channel-bridge.ts:499"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a95ff4a48f9edb7", "name": "Stray `console.log` in TS/JS \u2014 packages/protocols/src/mcp/client/remote.ts:181", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/protocols/src/mcp/client/remote.ts:181"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c7d17810a143e06", "name": "Stray `console.log` in TS/JS \u2014 packages/protocols/src/a2a/chat.ts:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/protocols/src/a2a/chat.ts:153"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8022dad1102b843", "name": "Stray `console.log` in TS/JS \u2014 packages/protocols/src/mcp-serve/server.ts:171", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/protocols/src/mcp-serve/server.ts:171"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5349600eed9fb86", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 examples/umwelten-web-demo/public/assets/index-UyR5kFrb.js:9", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 examples/umwelten-web-demo/public/assets/index-UyR5kFrb.js:9"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ae890df4d729e0b6", "name": "Stray `console.log` in TS/JS \u2014 examples/umwelten-web-demo/src/gaia-smoke.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/umwelten-web-demo/src/gaia-smoke.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7723ec6a4f20b0f", "name": "Stray `console.log` in TS/JS \u2014 examples/umwelten-web-demo/src/server.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/umwelten-web-demo/src/server.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e037b1a298452a8e", "name": "Stray `console.log` in TS/JS \u2014 examples/oura-mcp/src/db-setup.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/oura-mcp/src/db-setup.ts:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1446f26970703e50", "name": "Stray `console.log` in TS/JS \u2014 examples/simple-agent/chat.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/simple-agent/chat.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef004af368246197", "name": "Stray `console.log` in TS/JS \u2014 examples/provider-comparison/run.ts:219", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/provider-comparison/run.ts:219"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e9e4346dbb4a6baf", "name": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/elo-rivian.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/elo-rivian.ts:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9545697912a69282", "name": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/report-rivian.ts:1048", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/report-rivian.ts:1048"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a648b2410f645e9", "name": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/test-connection.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/test-connection.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67a031ace6dbd360", "name": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/cli.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/cli.ts:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47109223e232f695", "name": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/eval-rivian.ts:321", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/eval-rivian.ts:321"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f181372a3a100232", "name": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/tezlab-mcp.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/tezlab-mcp.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb05c2c6badbbe66", "name": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/verify-sessions-store-reload.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/verify-sessions-store-reload.ts:84"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d974f5545ca8e4c", "name": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/verify-skills-load.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/verify-skills-load.ts:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f339ca72a2c0b7a5", "name": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/cli.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/cli.ts:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c6aea00ab48a387", "name": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/test-telegram-stream.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/test-telegram-stream.ts:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7297c6a3643438dc", "name": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/telegram.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/telegram.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a676149ff28259d", "name": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/scripts/check-discord-setup.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/scripts/check-discord-setup.ts:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5a41eb03e078feb", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/catalog.ts:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/catalog.ts:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63886008c06c246b", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/debug2.ts:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/debug2.ts:3"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d06fd96ed179525a", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/smoke.ts:301", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/smoke.ts:301"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a0c8c7cbd9f01049", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/rerun-outliers-all.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/rerun-outliers-all.ts:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fcc5fc7c58c22bb", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/memory-spike.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/memory-spike.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5d399db40591ce96", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/rerun-outlier.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/rerun-outlier.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-78708a4fc17e85c7", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/speed.ts:164", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/speed.ts:164"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e35b8e909fa40c4", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/test-git-summarize.ts:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/test-git-summarize.ts:190"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f027feaecf2e3f67", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/debug-nothink.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/debug-nothink.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd0dd8c3e685eb1e", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/eviction-spike.ts:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/eviction-spike.ts:87"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f329d13cb3559fb1", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/run-matrix.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/run-matrix.ts:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b317de8d75e1619c", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/debug3.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/debug3.ts:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c5aa7d687a60b44", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/test-nothink.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/test-nothink.ts:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e7b554051d3fbd7", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/run-quality.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/run-quality.ts:136"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d835a575da0181c9", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/run-coding-2pass.ts:312", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/run-coding-2pass.ts:312"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5389fa54b9edfdd8", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/quality/coding-bugfix.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/quality/coding-bugfix.ts:69"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b18fa0cbb36f8c7", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/quality/tool-math.ts:195", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/quality/tool-math.ts:195"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35cd5f72f05291ef", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/quality/soul-md.ts:240", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/quality/soul-md.ts:240"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ba84bbb00623877", "name": "Stray `console.log` in TS/JS \u2014 examples/local-providers/harness/runner.ts:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/harness/runner.ts:127"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc56d8a01d5ff4d5", "name": "Stray `console.log` in TS/JS \u2014 examples/twitter-mcp/src/db-setup.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/twitter-mcp/src/db-setup.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-410dc821542a5b22", "name": "Stray `console.log` in TS/JS \u2014 examples/gaia-ui/app.js:1145", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/gaia-ui/app.js:1145"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c8b92ad089409d2", "name": "Custom React Flow node registered without explicit width/height \u2014 examples/gaia-ui/artifacts.js:9", "shortDescription": {"text": "Custom React Flow node registered without explicit width/height \u2014 examples/gaia-ui/artifacts.js:9"}, "fullDescription": {"text": "When you register a custom node type via `nodeTypes`, the RFNode object you build must include `width` and `height` props. Without them, MiniMap renders ZERO mini-nodes for that type and `fitView` underestimates the bounds (cuts off lane labels, etc.). Add `width: \u2026, height: \u2026` to the node object. See P-I.\n\nWhy: P-I in CHECKLIST.md \u2014 RF MiniMap + fitView need explicit dims on custom nodes.\nRule id: fq.rfnode.no-dims"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6eb0985b69b8944e", "name": "Stray `console.log` in TS/JS \u2014 examples/bare-bones-memory/chat.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/bare-bones-memory/chat.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3d6c3b980031ba4", "name": "Stray `console.log` in TS/JS \u2014 examples/bare-bones-memory/chat2.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/bare-bones-memory/chat2.ts:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e5539da691d820c", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/08-report.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/08-report.ts:139"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2102666a1f9773b2", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/01-segment.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/01-segment.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89d92b670f412a8a", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/05-convert-ollama.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/05-convert-ollama.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e1e24c49a5f1382", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/02-summarize.ts:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/02-summarize.ts:93"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-965bbde66fe751ec", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/run-all.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/run-all.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eecf0b37aac9df05", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/07-measure.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/07-measure.ts:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b36fa8910d8ad62", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/00-convert-books.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/00-convert-books.ts:74"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a82f6fe606bb9e8", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/04-finetune-hf.ts:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/04-finetune-hf.ts:149"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f6a1f09f6a6bf33", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/04-finetune-mlx.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/04-finetune-mlx.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad87b92855f4e09f", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/06-inference.ts:434", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/06-inference.ts:434"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-445ed9246977d0b5", "name": "Stray `console.log` in TS/JS \u2014 examples/memorization/03-prepare-data.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/03-prepare-data.ts:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f24123490ed67d5", "name": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/run-all.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/run-all.ts:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-06fb6427f8cfb780", "name": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/generate-4dim-report.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/generate-4dim-report.ts:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8faf15ae80d4b2a5", "name": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/generate-report.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/generate-report.ts:86"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e1406879d177a44", "name": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/coding/coding-eval.ts:168", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/coding/coding-eval.ts:168"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24036b81d32aca6d", "name": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/coding/process-cached.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/coding/process-cached.ts:111"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c1b06719ce7c400", "name": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/mcp-tool-use/mcp-eval.ts:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/mcp-tool-use/mcp-eval.ts:152"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5eb72fc218c5491c", "name": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/reasoning/reasoning-eval.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/reasoning/reasoning-eval.ts:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4932bed176df727", "name": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/knowledge/knowledge-eval.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/knowledge/knowledge-eval.ts:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-649283329096e88d", "name": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/instruction/instruction-eval.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/instruction/instruction-eval.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20986386a4d1b8dc", "name": "Dockerfile runs as root: packages/habitat/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: packages/habitat/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93732ed6e353b6fa", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a47908a92e76489d", "name": "Dockerfile pipes a remote installer into a shell", "shortDescription": {"text": "Dockerfile pipes a remote installer into a shell"}, "fullDescription": {"text": "Executing downloaded code during image build gives the remote endpoint build-time code execution. Prefer pinned packages or verify downloaded installers by checksum/signature."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79267d8197b90d09", "name": "Dockerfile runs as root: examples/oura-mcp/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: examples/oura-mcp/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3535da5922fb05bc", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c590cba99341e95e", "name": "Dockerfile runs as root: examples/twitter-mcp/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: examples/twitter-mcp/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7414cbe1d31f3c4c", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ce5f2d9e94b656f", "name": "Insecure pattern 'document_write' in docs/test-walkthrough.html:1299", "shortDescription": {"text": "Insecure pattern 'document_write' in docs/test-walkthrough.html:1299"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5db6d7d4095325ee", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/a2a-test.html:353", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/a2a-test.html:353"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-878e15d29ea4a23e", "name": "Insecure pattern 'node_child_process' in packages/evaluation/src/evaluation/llm-eval/coding.ts:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/evaluation/src/evaluation/llm-eval/coding.ts:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-50c07c5faddc3021", "name": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/searcher.test.ts:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/searcher.test.ts:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4d6dec1703852ce1", "name": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-available.test.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-available.test.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-740a49ac03872ad4", "name": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-available.ts:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-available.ts:10"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cc1469f531498f51", "name": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-scanner.ts:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-scanner.ts:13"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4fabc9ce6d709f93", "name": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-scanner.test.ts:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-scanner.test.ts:13"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6bebab3d7c92aa85", "name": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/tools/loader.ts:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/tools/loader.ts:11"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c998c0f1d38fc1c5", "name": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/tools/fs-tools.ts:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/tools/fs-tools.ts:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b293f0bd7be60c2", "name": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/tools/bash-tool.ts:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/tools/bash-tool.ts:11"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-850deff6f6ce5737", "name": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/skills/loader.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/skills/loader.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3e99906aa4e5a0f2", "name": "Insecure pattern 'direct_innerhtml_assignment' in packages/habitat/public/index.html:1676", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/habitat/public/index.html:1676"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-08d79f480071dc33", "name": "Insecure pattern 'local_storage_auth_token' in packages/habitat/public/index.html:1549", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in packages/habitat/public/index.html:1549"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0c941e3a207d9602", "name": "Insecure pattern 'cors_wildcard' in packages/habitat/src/container-server.ts:269", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/habitat/src/container-server.ts:269"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-797b2c0c0808022d", "name": "Insecure pattern 'node_child_process' in packages/habitat/src/pi-runner.ts:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/pi-runner.ts:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-36465084bca68636", "name": "Insecure pattern 'cors_wildcard' in packages/habitat/src/mcp-local-server.ts:54", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/habitat/src/mcp-local-server.ts:54"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-611c55ca95fb33f8", "name": "Insecure pattern 'exec_used' in packages/habitat/src/load-prompts.ts:32", "shortDescription": {"text": "Insecure pattern 'exec_used' in packages/habitat/src/load-prompts.ts:32"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-68f10528f5a2060b", "name": "Insecure pattern 'cors_wildcard' in packages/habitat/src/web/server.ts:165", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/habitat/src/web/server.ts:165"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-09fb35eae203c4d8", "name": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/agent-runner-tools.test.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/agent-runner-tools.test.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d88bcf817a276456", "name": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/provision-tools.ts:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/provision-tools.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-92761b84df07e242", "name": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/exec-tools.ts:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/exec-tools.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4a09cca6ba16e7c", "name": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/file-tools.ts:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/file-tools.ts:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba7f5c41668119f6", "name": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/agent-runner/context.ts:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/agent-runner/context.ts:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b1da693f6407f63", "name": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/gaia/fnox.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/gaia/fnox.ts:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-879228c3cc556c47", "name": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/gaia/gaia-tools/skills.ts:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/gaia/gaia-tools/skills.ts:11"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-47fa053b6875e7cd", "name": "Insecure pattern 'node_child_process' in packages/protocols/src/mcp/client/remote.ts:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/protocols/src/mcp/client/remote.ts:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-00f78c907d547ae3", "name": "Insecure pattern 'cors_wildcard' in packages/protocols/src/mcp-serve/server.ts:100", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/protocols/src/mcp-serve/server.ts:100"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3e1700334f17cf5d", "name": "Insecure pattern 'cors_wildcard' in packages/protocols/src/mcp-serve/mcp-handler.ts:34", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/protocols/src/mcp-serve/mcp-handler.ts:34"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee19f81e1bc18d1b", "name": "Insecure pattern 'cors_wildcard' in packages/protocols/src/mcp-serve/oauth/helpers.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/protocols/src/mcp-serve/oauth/helpers.ts:7"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28c4a04bd807da0c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad6701f0a8405e22", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46c644c6227e4d4a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-418885d2f03c4691", "name": "Very large file: packages/ui/src/discord/DiscordAdapter.tsx (1641 lines)", "shortDescription": {"text": "Very large file: packages/ui/src/discord/DiscordAdapter.tsx (1641 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3da05b1ed9bd3c16", "name": "Node manifest has dependencies but no lockfile: packages/umwelten/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/umwelten/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50218c90b43393bb", "name": "Node manifest has dependencies but no lockfile: packages/ui/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/ui/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1b8a4eeb9d2fa61", "name": "Node manifest has dependencies but no lockfile: packages/evaluation/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/evaluation/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c2e3196a4ef0cdd", "name": "Node manifest has dependencies but no lockfile: packages/cli/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/cli/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f6440f582a8ace64", "name": "Node manifest has dependencies but no lockfile: packages/sessions/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/sessions/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28e92806c0db3cd2", "name": "Node manifest has dependencies but no lockfile: packages/core/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/core/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8318373d0343c7fe", "name": "Node manifest has dependencies but no lockfile: packages/habitat/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/habitat/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2970a94857a0a70", "name": "Node manifest has dependencies but no lockfile: packages/protocols/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/protocols/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 1519 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 37 placeholder/mock markers across 16 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cdb72f264ea00660", "name": "Agent authority lacks a verifier contract: examples/simple-agent/AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: examples/simple-agent/AGENTS.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b2724acf168afc50", "name": "Agent authority lacks a verifier contract: examples/bare-bones-memory/AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: examples/bare-bones-memory/AGENTS.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e725d2ab884fbd49", "name": "Multiple root agent instruction files without precedence", "shortDescription": {"text": "Multiple root agent instruction files without precedence"}, "fullDescription": {"text": "The repo has multiple top-level AI-coder instruction files. Without precedence rules, different agents may follow different policies."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f2c40a14aec97b1", "name": "Commented-code block (5 lines) in packages/ui/src/tui/introspect/DashboardApp.test.tsx:300", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ui/src/tui/introspect/DashboardApp.test.tsx:300"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-91c0976b10700411", "name": "Commented-code block (6 lines) in packages/ui/src/tui/introspect/dashboard/utils.ts:93", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ui/src/tui/introspect/dashboard/utils.ts:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1bbcc2d4622cb2d9", "name": "Commented-code block (5 lines) in packages/ui/src/tui/search/SessionSearchTui.tsx:204", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ui/src/tui/search/SessionSearchTui.tsx:204"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e47c30c643865a18", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ui/src/discord/DiscordAdapter.tsx:566", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ui/src/discord/DiscordAdapter.tsx:566"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c92dae23825d2f0", "name": "Commented-code block (5 lines) in packages/evaluation/src/evaluation/suite.ts:319", "shortDescription": {"text": "Commented-code block (5 lines) in packages/evaluation/src/evaluation/suite.ts:319"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15889bdbf75f61f7", "name": "Commented-code block (6 lines) in packages/evaluation/src/evaluation/strategies/simple-evaluation.ts:232", "shortDescription": {"text": "Commented-code block (6 lines) in packages/evaluation/src/evaluation/strategies/simple-evaluation.ts:232"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d0192c5bc0421c7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/evaluation/src/evaluation/caching/cache-service.ts:105", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/evaluation/src/evaluation/caching/cache-service.ts:105"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d8fe805ac3084f71", "name": "Commented-code block (5 lines) in packages/sessions/src/introspect.ts:100", "shortDescription": {"text": "Commented-code block (5 lines) in packages/sessions/src/introspect.ts:100"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b8825f60d9b7e11", "name": "Commented-code block (5 lines) in packages/core/src/cognition/usage-extractor.ts:208", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/cognition/usage-extractor.ts:208"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4383e3f341d2548", "name": "Commented-code block (6 lines) in packages/core/src/cognition/runner.ts:40", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/cognition/runner.ts:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-820e8ab621d12be1", "name": "Commented-code block (5 lines) in packages/core/src/cognition/usage-extractor.test.ts:185", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/cognition/usage-extractor.test.ts:185"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e00dd27c8696dd0", "name": "Commented-code block (6 lines) in packages/core/src/cognition/request-options.ts:56", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/cognition/request-options.ts:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b085c8484c7ecf4b", "name": "Commented-code block (5 lines) in packages/core/src/interaction/adapters/antigravity-adapter.ts:591", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/interaction/adapters/antigravity-adapter.ts:591"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c6a610660b04e4b1", "name": "Commented-code block (6 lines) in packages/core/src/interaction/search/searcher.test.ts:284", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/interaction/search/searcher.test.ts:284"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0af4d075d99f7939", "name": "Commented-code block (5 lines) in packages/core/src/interaction/search/hit-parser.ts:84", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/interaction/search/hit-parser.ts:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18fe1179e8f68ef7", "name": "Commented-code block (6 lines) in packages/core/src/interaction/search/searcher.ts:76", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/interaction/search/searcher.ts:76"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7bb8bf417d385a9", "name": "Legacy-named symbol `daysOld` in packages/core/src/interaction/analysis/session-search.ts:142", "shortDescription": {"text": "Legacy-named symbol `daysOld` in packages/core/src/interaction/analysis/session-search.ts:142"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a1e1ac1395a52c5", "name": "Commented-code block (5 lines) in packages/core/src/interaction/analysis/extraction-engine.ts:200", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/interaction/analysis/extraction-engine.ts:200"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f53904c307e542b", "name": "Legacy-named symbol `daysOld` in packages/core/src/interaction/analysis/digest-search.ts:140", "shortDescription": {"text": "Legacy-named symbol `daysOld` in packages/core/src/interaction/analysis/digest-search.ts:140"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-208ab531434df8a7", "name": "Commented-code block (6 lines) in packages/core/src/interaction/analysis/session-analyzer.ts:465", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/interaction/analysis/session-analyzer.ts:465"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a7537a3b1c6402a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/llamaswap.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/llamaswap.ts:43"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-53770fbba8e30822", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/llamabarn.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/llamabarn.ts:36"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aae752f6c29005b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/nvidia.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/nvidia.ts:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-52fbdd36a6cc4171", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/lmstudio.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/lmstudio.ts:22"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de7201dc2f6a4964", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/togetherai.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/togetherai.ts:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8adaea81a1fd8bcc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/fireworks.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/fireworks.ts:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b3d307e1abc733a", "name": "Commented-code block (8 lines) in packages/core/src/providers/openrouter.integration.test.ts:106", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core/src/providers/openrouter.integration.test.ts:106"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e10c136a73584c66", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/local-fetch.ts:4", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/local-fetch.ts:4"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89d7e714c6a79b65", "name": "Commented-code block (5 lines) in packages/core/src/providers/index.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/providers/index.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aeaab632236d929c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/minimax.ts:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/minimax.ts:128"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e9ccb4a9d99e4400", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/openrouter.ts:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/openrouter.ts:26"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce52be2e47be30bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/deepinfra.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/deepinfra.ts:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d05062724b5ef105", "name": "Commented-code block (5 lines) in packages/core/src/providers/ollama.ts:201", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/providers/ollama.ts:201"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ab49d3ce1b23e76", "name": "Commented-code block (5 lines) in packages/core/src/providers/github-models.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/providers/github-models.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a70a68ad1e3d9fa8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/github-models.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/github-models.ts:28"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec439cbb7e2e815d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/google.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/google.ts:44"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-865bc87acbc2634c", "name": "Commented-code block (6 lines) in packages/core/src/stimulus/stimulus.ts:247", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/stimulus/stimulus.ts:247"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a5e05dd1421ce7e0", "name": "Commented-code block (7 lines) in packages/core/src/memory/determine_operations.integration.test.ts:50", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/memory/determine_operations.integration.test.ts:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5536aa15ba8cf727", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/markdown/from_html.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/markdown/from_html.ts:38"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc8080728ec1995e", "name": "Commented-code block (5 lines) in packages/habitat/src/container-server.ts:474", "shortDescription": {"text": "Commented-code block (5 lines) in packages/habitat/src/container-server.ts:474"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cdb13602386d3277", "name": "Commented-code block (5 lines) in packages/habitat/src/web/WebAdapter.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in packages/habitat/src/web/WebAdapter.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a1caa7ecc81b7bca", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/habitat/src/tools/self-modify-tools.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/habitat/src/tools/self-modify-tools.ts:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bfd2df13f3c577d3", "name": "Legacy-named symbol `ghp_old` in packages/habitat/src/tools/gaia/capability-resolver.test.ts:138", "shortDescription": {"text": "Legacy-named symbol `ghp_old` in packages/habitat/src/tools/gaia/capability-resolver.test.ts:138"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f03115596387aa1d", "name": "Commented-code block (5 lines) in packages/habitat/src/tools/gaia/gaia-tools/habitats.ts:417", "shortDescription": {"text": "Commented-code block (5 lines) in packages/habitat/src/tools/gaia/gaia-tools/habitats.ts:417"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f639bf41f4471348", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/protocols/src/a2a/client.ts:231", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/protocols/src/a2a/client.ts:231"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-68c8ea5eb05a133f", "name": "Legacy-named symbol `unstable_legacy` in examples/umwelten-web-demo/public/assets/index-UyR5kFrb.js:8", "shortDescription": {"text": "Legacy-named symbol `unstable_legacy` in examples/umwelten-web-demo/public/assets/index-UyR5kFrb.js:8"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6cacc4e7e2a6038f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 examples/umwelten-web-demo/public/assets/index-UyR5kFrb.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/umwelten-web-demo/public/assets/index-UyR5kFrb.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-10c9286b3a973f3e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 examples/oura-mcp/src/oura-tool-set.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/oura-mcp/src/oura-tool-set.ts:14"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-14b5599964b5938f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 examples/oura-mcp/src/oura-provider.ts:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/oura-mcp/src/oura-provider.ts:24"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f832c09b48c44d30", "name": "`fetch()` without try/.catch or AbortSignal \u2014 examples/jeeves-bot/scripts/check-discord-setup.ts:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/jeeves-bot/scripts/check-discord-setup.ts:69"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-60eb772587952ece", "name": "Commented-code block (6 lines) in examples/local-providers/run-matrix.ts:111", "shortDescription": {"text": "Commented-code block (6 lines) in examples/local-providers/run-matrix.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-468da8eb647ddb30", "name": "Commented-code block (6 lines) in examples/local-providers/run-coding-2pass.ts:27", "shortDescription": {"text": "Commented-code block (6 lines) in examples/local-providers/run-coding-2pass.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8995faa491bf1158", "name": "`fetch()` without try/.catch or AbortSignal \u2014 examples/twitter-mcp/src/twitter-tools.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/twitter-mcp/src/twitter-tools.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-185d53cfa13de90b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 examples/twitter-mcp/src/twitter-provider.ts:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/twitter-mcp/src/twitter-provider.ts:69"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0a57cec261c98d9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 examples/gaia-ui/app.js:850", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/gaia-ui/app.js:850"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21063"}, "properties": {"repository": "The-Focus-AI/umwelten", "repoUrl": "https://github.com/The-Focus-AI/umwelten", "branch": "main"}, "results": [{"ruleId": "scanner-136386bed6684a2b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test-cascade.ts:174"}, "properties": {"repobilityId": "a44704e460dd0fca", "scanner": "scanner-primary", "fingerprint": "136386bed6684a2b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-488ba894540ddaa2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test-credentials.ts:19"}, "properties": {"repobilityId": "0b9db0c428859b7b", "scanner": "scanner-primary", "fingerprint": "488ba894540ddaa2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c01a7396b79c8a77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/tui/introspect/beats.tsx:299"}, "properties": {"repobilityId": "ba5d4376176e7697", "scanner": "scanner-primary", "fingerprint": "c01a7396b79c8a77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83414f4ef02d4731", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/tui/introspect/browse.tsx:403"}, "properties": {"repobilityId": "c88cecc9ca082fa3", "scanner": "scanner-primary", "fingerprint": "83414f4ef02d4731", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c70079663a6fdfeb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/telegram/TelegramAdapter.tsx:44"}, "properties": {"repobilityId": "8dfca6f9fa675b02", "scanner": "scanner-primary", "fingerprint": "c70079663a6fdfeb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d131665047771d53", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/CLIInterface.test.ts:48"}, "properties": {"repobilityId": "16122a8a015bb829", "scanner": "scanner-primary", "fingerprint": "d131665047771d53", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-232e96bd48809675", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/DefaultCommands.ts:18"}, "properties": {"repobilityId": "a35b5e1e556e1d23", "scanner": "scanner-primary", "fingerprint": "232e96bd48809675", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-65138437d9460947", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/CLIInterface.ts:123"}, "properties": {"repobilityId": "fa5813db7da40a74", "scanner": "scanner-primary", "fingerprint": "65138437d9460947", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ee8ac7605d15810", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/repl.ts:73"}, "properties": {"repobilityId": "fbf218495415363e", "scanner": "scanner-primary", "fingerprint": "7ee8ac7605d15810", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0741b637a9b1ed51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/cli/CommandRegistry.test.ts:32"}, "properties": {"repobilityId": "7bc16cf4b173d265", "scanner": "scanner-primary", "fingerprint": "0741b637a9b1ed51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17951585c8b37953", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ui/src/discord/DiscordAdapter.tsx:212"}, "properties": {"repobilityId": "5c211aa8a838f750", "scanner": "scanner-primary", "fingerprint": "17951585c8b37953", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f153fd821583ca79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/evaluation/scripts/clear-cache-no-transcript.ts:80"}, "properties": {"repobilityId": "f7738799e10f65ba", "scanner": "scanner-primary", "fingerprint": "f153fd821583ca79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fee2d39a83104d2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/reporting/renderers/console-renderer.ts:81"}, "properties": {"repobilityId": "d3c521b79bcefff9", "scanner": "scanner-primary", "fingerprint": "fee2d39a83104d2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f250b3a762390c65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/evaluation/suite.ts:265"}, "properties": {"repobilityId": "612622934ba2ed0d", "scanner": "scanner-primary", "fingerprint": "f250b3a762390c65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5f308a4c615bbd1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/evaluation/llm-eval/coding.ts:271"}, "properties": {"repobilityId": "9772627bd0cd9ff4", "scanner": "scanner-primary", "fingerprint": "a5f308a4c615bbd1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ce0173c493a23f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/evaluation/src/evaluation/caching/cache-service.ts:90"}, "properties": {"repobilityId": "cdbaa672e1ca92b9", "scanner": "scanner-primary", "fingerprint": "2ce0173c493a23f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75d1dcddac80442a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/run.ts:29"}, "properties": {"repobilityId": "e4381e8a3991b378", "scanner": "scanner-primary", "fingerprint": "75d1dcddac80442a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ef8aba905f3e71e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/mcp.ts:126"}, "properties": {"repobilityId": "dc2c211fe56608e6", "scanner": "scanner-primary", "fingerprint": "7ef8aba905f3e71e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00de548904adfced", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/tools.test.ts:136"}, "properties": {"repobilityId": "6a83b9ec8949d9c9", "scanner": "scanner-primary", "fingerprint": "00de548904adfced", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29b63ab9be82d0c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/tools.ts:22"}, "properties": {"repobilityId": "d6bc3df797fda04d", "scanner": "scanner-primary", "fingerprint": "29b63ab9be82d0c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7dee83c02974d68f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/chat.ts:25"}, "properties": {"repobilityId": "ced1c7b5effbc3b6", "scanner": "scanner-primary", "fingerprint": "7dee83c02974d68f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b85748bfdc51d477", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/models.ts:31"}, "properties": {"repobilityId": "07929a866e7523a0", "scanner": "scanner-primary", "fingerprint": "b85748bfdc51d477", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf33e056f210534f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/habitat.ts:75"}, "properties": {"repobilityId": "197039d81686ed17", "scanner": "scanner-primary", "fingerprint": "bf33e056f210534f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18335dc85818bf12", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/learnings.ts:63"}, "properties": {"repobilityId": "f13e7d518746ffc6", "scanner": "scanner-primary", "fingerprint": "18335dc85818bf12", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03bb16bedbb9ed2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/transcript.ts:64"}, "properties": {"repobilityId": "215087326cc82a31", "scanner": "scanner-primary", "fingerprint": "03bb16bedbb9ed2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e660a8f2a6d7d5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/format.ts:44"}, "properties": {"repobilityId": "2c3bf6688c19f7e8", "scanner": "scanner-primary", "fingerprint": "1e660a8f2a6d7d5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7eae9c56618dfdff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/inspect.ts:77"}, "properties": {"repobilityId": "242a2387a5e6e647", "scanner": "scanner-primary", "fingerprint": "7eae9c56618dfdff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be674dd73cb604ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/bulk.ts:75"}, "properties": {"repobilityId": "814f11ee36f6a86f", "scanner": "scanner-primary", "fingerprint": "be674dd73cb604ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7d36548bd594caa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/digest.ts:58"}, "properties": {"repobilityId": "ec3e21355a51cc32", "scanner": "scanner-primary", "fingerprint": "e7d36548bd594caa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e8e2340ed761c7a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/sessions/src/sessions/tui.ts:100"}, "properties": {"repobilityId": "3ea2ebf823245a35", "scanner": "scanner-primary", "fingerprint": "e8e2340ed761c7a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa4d33eb66232689", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/message-normalizer.ts:77"}, "properties": {"repobilityId": "017f2c40c107a6cd", "scanner": "scanner-primary", "fingerprint": "aa4d33eb66232689", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-084fb9ae9652dbe1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/stream_object.integration.test.ts:146"}, "properties": {"repobilityId": "a9f08581b322a61c", "scanner": "scanner-primary", "fingerprint": "084fb9ae9652dbe1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9d4552783eb71e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/generate_object.integration.test.ts:182"}, "properties": {"repobilityId": "6fab4af9c3310e41", "scanner": "scanner-primary", "fingerprint": "e9d4552783eb71e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-887c1fc46a547b8b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/runner.ts:67"}, "properties": {"repobilityId": "2c96e615f8c2d806", "scanner": "scanner-primary", "fingerprint": "887c1fc46a547b8b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d460cbd27835707", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/models.integration.test.ts:26"}, "properties": {"repobilityId": "05c9334767f9ea72", "scanner": "scanner-primary", "fingerprint": "3d460cbd27835707", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8cf997c15545fe87", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/cognition/request-options.ts:120"}, "properties": {"repobilityId": "dbc8efcedf6b1b80", "scanner": "scanner-primary", "fingerprint": "8cf997c15545fe87", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8545328813632267", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/interaction/analysis/session-digester.ts:362"}, "properties": {"repobilityId": "09a3f6da7a09fe04", "scanner": "scanner-primary", "fingerprint": "8545328813632267", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b17f654ee14133d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/interaction/analysis/digest-search.ts:416"}, "properties": {"repobilityId": "9b7e4b53218171e2", "scanner": "scanner-primary", "fingerprint": "2b17f654ee14133d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0df8d6fe3822c4ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/interaction/core/attachments.ts:11"}, "properties": {"repobilityId": "216530cc4cdff8c0", "scanner": "scanner-primary", "fingerprint": "0df8d6fe3822c4ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a41d647247ae4ce2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/interaction/persistence/session-indexer.ts:129"}, "properties": {"repobilityId": "64e4d33bf38642e7", "scanner": "scanner-primary", "fingerprint": "a41d647247ae4ce2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5309d4d2ffe88895", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/llamaswap.integration.test.ts:40"}, "properties": {"repobilityId": "54ec6584d73b6766", "scanner": "scanner-primary", "fingerprint": "5309d4d2ffe88895", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c223adf78f74170", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/providers/openrouter.integration.test.ts:155"}, "properties": {"repobilityId": "ec959f3ca97fd621", "scanner": "scanner-primary", "fingerprint": "2c223adf78f74170", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a381682d3f195df4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/openrouter.integration.test.ts:108"}, "properties": {"repobilityId": "5a16a1c2328c8761", "scanner": "scanner-primary", "fingerprint": "a381682d3f195df4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e136a8ebe163a36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/github-models.integration.test.ts:67"}, "properties": {"repobilityId": "f64aee5ede6234d1", "scanner": "scanner-primary", "fingerprint": "7e136a8ebe163a36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4c285303227eee5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/google.integration.test.ts:52"}, "properties": {"repobilityId": "f4bcc68152422ff1", "scanner": "scanner-primary", "fingerprint": "e4c285303227eee5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-12fc0e25d08dd9bd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/lmstudio.integration.test.ts:43"}, "properties": {"repobilityId": "36a47348fa6f22ac", "scanner": "scanner-primary", "fingerprint": "12fc0e25d08dd9bd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c68072366993fced", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/providers/ollama.integration.test.ts:128"}, "properties": {"repobilityId": "66db21300930e0ca", "scanner": "scanner-primary", "fingerprint": "c68072366993fced", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-43017777204f74f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/ollama.integration.test.ts:46"}, "properties": {"repobilityId": "c76e3544bc983a80", "scanner": "scanner-primary", "fingerprint": "43017777204f74f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5fec9a904f1f3abf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/providers/llamabarn.integration.test.ts:40"}, "properties": {"repobilityId": "b285ada71b7c5c76", "scanner": "scanner-primary", "fingerprint": "5fec9a904f1f3abf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ee85f8ef3f6a9f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/stimulus/tools/examples/math.ts:56"}, "properties": {"repobilityId": "f00121d0e79e226f", "scanner": "scanner-primary", "fingerprint": "2ee85f8ef3f6a9f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d14059f2fa585a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/memory/determine_operations.integration.test.ts:44"}, "properties": {"repobilityId": "1ef7133357fc257f", "scanner": "scanner-primary", "fingerprint": "4d14059f2fa585a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36d3d69b0e0d6062", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/memory/extract_facts.ts:116"}, "properties": {"repobilityId": "2d55b9ecf71f76f3", "scanner": "scanner-primary", "fingerprint": "36d3d69b0e0d6062", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5dcbadde28eb34ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/container-server.ts:197"}, "properties": {"repobilityId": "61b6e5d209f3fde0", "scanner": "scanner-primary", "fingerprint": "5dcbadde28eb34ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df73e627d7c72aaf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/mcp-tool-bridge.ts:40"}, "properties": {"repobilityId": "5d0a79347382a4bd", "scanner": "scanner-primary", "fingerprint": "df73e627d7c72aaf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-10f9f42b027c827b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/mcp-local-server.ts:155"}, "properties": {"repobilityId": "ceef62bef3c0188f", "scanner": "scanner-primary", "fingerprint": "10f9f42b027c827b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef149bbfb0beb351", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/serve.ts:78"}, "properties": {"repobilityId": "10055c4b0b9dc695", "scanner": "scanner-primary", "fingerprint": "ef149bbfb0beb351", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8574da18c75629e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/cli/sessions-habitat.ts:121"}, "properties": {"repobilityId": "dd12bc66ea525298", "scanner": "scanner-primary", "fingerprint": "8574da18c75629e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0201b116472a352", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/identity/skill-inspector.test.ts:41"}, "properties": {"repobilityId": "03a0b380889f5acb", "scanner": "scanner-primary", "fingerprint": "a0201b116472a352", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6603a9f7a4db946c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/tools/gaia/gaia.ts:82"}, "properties": {"repobilityId": "d6a932b323150302", "scanner": "scanner-primary", "fingerprint": "6603a9f7a4db946c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f83a32147f542dfe", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 packages/habitat/src/tools/gaia/routes.ts:495"}, "properties": {"repobilityId": "b59fc4dc413b472f", "scanner": "scanner-primary", "fingerprint": "f83a32147f542dfe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-8b3e4e39f65ac4ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/habitat/src/bridge/channel-bridge.ts:499"}, "properties": {"repobilityId": "a9af4af57c9f9cce", "scanner": "scanner-primary", "fingerprint": "8b3e4e39f65ac4ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a95ff4a48f9edb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/protocols/src/mcp/client/remote.ts:181"}, "properties": {"repobilityId": "da1135e9edeff534", "scanner": "scanner-primary", "fingerprint": "4a95ff4a48f9edb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c7d17810a143e06", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/protocols/src/a2a/chat.ts:153"}, "properties": {"repobilityId": "e0fff93fcf725d5f", "scanner": "scanner-primary", "fingerprint": "9c7d17810a143e06", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8022dad1102b843", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/protocols/src/mcp-serve/server.ts:171"}, "properties": {"repobilityId": "0a8aebc28f3434f3", "scanner": "scanner-primary", "fingerprint": "c8022dad1102b843", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5349600eed9fb86", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 examples/umwelten-web-demo/public/assets/index-UyR5kFrb.js:9"}, "properties": {"repobilityId": "136ee79701cfb735", "scanner": "scanner-primary", "fingerprint": "b5349600eed9fb86", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ae890df4d729e0b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/umwelten-web-demo/src/gaia-smoke.ts:22"}, "properties": {"repobilityId": "d5adb870a2bba655", "scanner": "scanner-primary", "fingerprint": "ae890df4d729e0b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7723ec6a4f20b0f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/umwelten-web-demo/src/server.ts:44"}, "properties": {"repobilityId": "414ede0dcdcf0624", "scanner": "scanner-primary", "fingerprint": "d7723ec6a4f20b0f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e037b1a298452a8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/oura-mcp/src/db-setup.ts:5"}, "properties": {"repobilityId": "8b919189bab92aed", "scanner": "scanner-primary", "fingerprint": "e037b1a298452a8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1446f26970703e50", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/simple-agent/chat.ts:35"}, "properties": {"repobilityId": "30af948a54cdf449", "scanner": "scanner-primary", "fingerprint": "1446f26970703e50", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef004af368246197", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/provider-comparison/run.ts:219"}, "properties": {"repobilityId": "0944573293950e97", "scanner": "scanner-primary", "fingerprint": "ef004af368246197", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9e4346dbb4a6baf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/elo-rivian.ts:51"}, "properties": {"repobilityId": "7d055f3841213618", "scanner": "scanner-primary", "fingerprint": "e9e4346dbb4a6baf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9545697912a69282", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/report-rivian.ts:1048"}, "properties": {"repobilityId": "5aed5f7df19a703d", "scanner": "scanner-primary", "fingerprint": "9545697912a69282", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a648b2410f645e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/test-connection.ts:12"}, "properties": {"repobilityId": "bb234d95047169cc", "scanner": "scanner-primary", "fingerprint": "9a648b2410f645e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-67a031ace6dbd360", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/cli.ts:57"}, "properties": {"repobilityId": "db8a9b7200989499", "scanner": "scanner-primary", "fingerprint": "67a031ace6dbd360", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47109223e232f695", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/eval-rivian.ts:321"}, "properties": {"repobilityId": "5fe8978f13b3b1c3", "scanner": "scanner-primary", "fingerprint": "47109223e232f695", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f181372a3a100232", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/mcp-chat/tezlab-mcp.ts:67"}, "properties": {"repobilityId": "ee442f8cffb0c866", "scanner": "scanner-primary", "fingerprint": "f181372a3a100232", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb05c2c6badbbe66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/verify-sessions-store-reload.ts:84"}, "properties": {"repobilityId": "cacbd36a9a9a89f3", "scanner": "scanner-primary", "fingerprint": "cb05c2c6badbbe66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d974f5545ca8e4c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/verify-skills-load.ts:13"}, "properties": {"repobilityId": "278280ead492407a", "scanner": "scanner-primary", "fingerprint": "3d974f5545ca8e4c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f339ca72a2c0b7a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/cli.ts:65"}, "properties": {"repobilityId": "095196042904e905", "scanner": "scanner-primary", "fingerprint": "f339ca72a2c0b7a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c6aea00ab48a387", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/test-telegram-stream.ts:13"}, "properties": {"repobilityId": "4793c178d39bcb4d", "scanner": "scanner-primary", "fingerprint": "4c6aea00ab48a387", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7297c6a3643438dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/telegram.ts:52"}, "properties": {"repobilityId": "03712fc5a7865368", "scanner": "scanner-primary", "fingerprint": "7297c6a3643438dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a676149ff28259d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/jeeves-bot/scripts/check-discord-setup.ts:57"}, "properties": {"repobilityId": "e283a3558c285bfc", "scanner": "scanner-primary", "fingerprint": "2a676149ff28259d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5a41eb03e078feb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/catalog.ts:94"}, "properties": {"repobilityId": "8543098913ec1c71", "scanner": "scanner-primary", "fingerprint": "c5a41eb03e078feb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63886008c06c246b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/debug2.ts:3"}, "properties": {"repobilityId": "ad92d6b7fe210e71", "scanner": "scanner-primary", "fingerprint": "63886008c06c246b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d06fd96ed179525a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/smoke.ts:301"}, "properties": {"repobilityId": "b07d98c51d52caf4", "scanner": "scanner-primary", "fingerprint": "d06fd96ed179525a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0c8c7cbd9f01049", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/rerun-outliers-all.ts:71"}, "properties": {"repobilityId": "65abfc2a29633324", "scanner": "scanner-primary", "fingerprint": "a0c8c7cbd9f01049", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3fcc5fc7c58c22bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/memory-spike.ts:118"}, "properties": {"repobilityId": "b4c5589079287a01", "scanner": "scanner-primary", "fingerprint": "3fcc5fc7c58c22bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d399db40591ce96", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/rerun-outlier.ts:17"}, "properties": {"repobilityId": "cb725765682056f7", "scanner": "scanner-primary", "fingerprint": "5d399db40591ce96", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78708a4fc17e85c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/speed.ts:164"}, "properties": {"repobilityId": "15836efe781ca045", "scanner": "scanner-primary", "fingerprint": "78708a4fc17e85c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e35b8e909fa40c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/test-git-summarize.ts:190"}, "properties": {"repobilityId": "2eab0466fe53f1b8", "scanner": "scanner-primary", "fingerprint": "0e35b8e909fa40c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f027feaecf2e3f67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/debug-nothink.ts:11"}, "properties": {"repobilityId": "c5528b1bba054223", "scanner": "scanner-primary", "fingerprint": "f027feaecf2e3f67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd0dd8c3e685eb1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/eviction-spike.ts:87"}, "properties": {"repobilityId": "e2fe25d67f4dad1a", "scanner": "scanner-primary", "fingerprint": "fd0dd8c3e685eb1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f329d13cb3559fb1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/run-matrix.ts:97"}, "properties": {"repobilityId": "1efb1ace9c83716c", "scanner": "scanner-primary", "fingerprint": "f329d13cb3559fb1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b317de8d75e1619c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/debug3.ts:5"}, "properties": {"repobilityId": "3e503e85bf0a0fc0", "scanner": "scanner-primary", "fingerprint": "b317de8d75e1619c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c5aa7d687a60b44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/test-nothink.ts:31"}, "properties": {"repobilityId": "34e114e4fe5f46ec", "scanner": "scanner-primary", "fingerprint": "3c5aa7d687a60b44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e7b554051d3fbd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/run-quality.ts:136"}, "properties": {"repobilityId": "19bd034e97b63f4a", "scanner": "scanner-primary", "fingerprint": "9e7b554051d3fbd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d835a575da0181c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/run-coding-2pass.ts:312"}, "properties": {"repobilityId": "1de991accb1fd33b", "scanner": "scanner-primary", "fingerprint": "d835a575da0181c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5389fa54b9edfdd8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/quality/coding-bugfix.ts:69"}, "properties": {"repobilityId": "a7891b6d1d670c1a", "scanner": "scanner-primary", "fingerprint": "5389fa54b9edfdd8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b18fa0cbb36f8c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/quality/tool-math.ts:195"}, "properties": {"repobilityId": "086d5b4cf8055705", "scanner": "scanner-primary", "fingerprint": "0b18fa0cbb36f8c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-35cd5f72f05291ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/quality/soul-md.ts:240"}, "properties": {"repobilityId": "8a8e42a1a801f64c", "scanner": "scanner-primary", "fingerprint": "35cd5f72f05291ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ba84bbb00623877", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/local-providers/harness/runner.ts:127"}, "properties": {"repobilityId": "6a20044cbc43490a", "scanner": "scanner-primary", "fingerprint": "0ba84bbb00623877", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc56d8a01d5ff4d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/twitter-mcp/src/db-setup.ts:11"}, "properties": {"repobilityId": "8ca6810ffeb8e99b", "scanner": "scanner-primary", "fingerprint": "fc56d8a01d5ff4d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-410dc821542a5b22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/gaia-ui/app.js:1145"}, "properties": {"repobilityId": "e503f72ee43dbdc6", "scanner": "scanner-primary", "fingerprint": "410dc821542a5b22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c8b92ad089409d2", "level": "warning", "message": {"text": "Custom React Flow node registered without explicit width/height \u2014 examples/gaia-ui/artifacts.js:9"}, "properties": {"repobilityId": "33c5a5c97db22f03", "scanner": "scanner-primary", "fingerprint": "2c8b92ad089409d2", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.rfnode.no-dims"]}}, {"ruleId": "scanner-6eb0985b69b8944e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/bare-bones-memory/chat.ts:36"}, "properties": {"repobilityId": "80efce37f547be9f", "scanner": "scanner-primary", "fingerprint": "6eb0985b69b8944e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3d6c3b980031ba4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/bare-bones-memory/chat2.ts:61"}, "properties": {"repobilityId": "3248dae3c6768b06", "scanner": "scanner-primary", "fingerprint": "f3d6c3b980031ba4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e5539da691d820c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/08-report.ts:139"}, "properties": {"repobilityId": "530dc9d25c76e1a0", "scanner": "scanner-primary", "fingerprint": "4e5539da691d820c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2102666a1f9773b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/01-segment.ts:20"}, "properties": {"repobilityId": "e96359e7d6259847", "scanner": "scanner-primary", "fingerprint": "2102666a1f9773b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89d92b670f412a8a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/05-convert-ollama.ts:45"}, "properties": {"repobilityId": "5198a0b999106891", "scanner": "scanner-primary", "fingerprint": "89d92b670f412a8a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e1e24c49a5f1382", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/02-summarize.ts:93"}, "properties": {"repobilityId": "45a4b8500beb8c87", "scanner": "scanner-primary", "fingerprint": "8e1e24c49a5f1382", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-965bbde66fe751ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/run-all.ts:45"}, "properties": {"repobilityId": "4fe3816daeea8d91", "scanner": "scanner-primary", "fingerprint": "965bbde66fe751ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eecf0b37aac9df05", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/07-measure.ts:68"}, "properties": {"repobilityId": "69cd777e04140ed3", "scanner": "scanner-primary", "fingerprint": "eecf0b37aac9df05", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b36fa8910d8ad62", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/00-convert-books.ts:74"}, "properties": {"repobilityId": "a2bc2b9aa17e7a21", "scanner": "scanner-primary", "fingerprint": "3b36fa8910d8ad62", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a82f6fe606bb9e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/04-finetune-hf.ts:149"}, "properties": {"repobilityId": "e3e5718d46eeedc8", "scanner": "scanner-primary", "fingerprint": "7a82f6fe606bb9e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f6a1f09f6a6bf33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/04-finetune-mlx.ts:36"}, "properties": {"repobilityId": "65869b1b3247b283", "scanner": "scanner-primary", "fingerprint": "2f6a1f09f6a6bf33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ad87b92855f4e09f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/06-inference.ts:434"}, "properties": {"repobilityId": "4ea31830ff517d8c", "scanner": "scanner-primary", "fingerprint": "ad87b92855f4e09f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-445ed9246977d0b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/memorization/03-prepare-data.ts:66"}, "properties": {"repobilityId": "7c30a6b4d4b45b3d", "scanner": "scanner-primary", "fingerprint": "445ed9246977d0b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f24123490ed67d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/run-all.ts:27"}, "properties": {"repobilityId": "eed339c3577e8f00", "scanner": "scanner-primary", "fingerprint": "2f24123490ed67d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06fb6427f8cfb780", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/generate-4dim-report.ts:46"}, "properties": {"repobilityId": "934f32b0eea3165c", "scanner": "scanner-primary", "fingerprint": "06fb6427f8cfb780", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8faf15ae80d4b2a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/generate-report.ts:86"}, "properties": {"repobilityId": "e79bde4e25d0eb42", "scanner": "scanner-primary", "fingerprint": "8faf15ae80d4b2a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e1406879d177a44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/coding/coding-eval.ts:168"}, "properties": {"repobilityId": "8da56e36c21934ef", "scanner": "scanner-primary", "fingerprint": "2e1406879d177a44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24036b81d32aca6d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/coding/process-cached.ts:111"}, "properties": {"repobilityId": "c5672053e2f88c8f", "scanner": "scanner-primary", "fingerprint": "24036b81d32aca6d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c1b06719ce7c400", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/mcp-tool-use/mcp-eval.ts:152"}, "properties": {"repobilityId": "d82c4eb277b1021f", "scanner": "scanner-primary", "fingerprint": "7c1b06719ce7c400", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5eb72fc218c5491c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/reasoning/reasoning-eval.ts:56"}, "properties": {"repobilityId": "0101c9f215a37430", "scanner": "scanner-primary", "fingerprint": "5eb72fc218c5491c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4932bed176df727", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/knowledge/knowledge-eval.ts:54"}, "properties": {"repobilityId": "d2d911443bbd4ed7", "scanner": "scanner-primary", "fingerprint": "d4932bed176df727", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-649283329096e88d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/model-showdown/instruction/instruction-eval.ts:48"}, "properties": {"repobilityId": "e4ca5285304f3db3", "scanner": "scanner-primary", "fingerprint": "649283329096e88d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20986386a4d1b8dc", "level": "warning", "message": {"text": "Dockerfile runs as root: packages/habitat/Dockerfile"}, "properties": {"repobilityId": "e2847e5a12fc3ffb", "scanner": "scanner-primary", "fingerprint": "20986386a4d1b8dc", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-93732ed6e353b6fa", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "properties": {"repobilityId": "6c2f32859e034225", "scanner": "scanner-primary", "fingerprint": "93732ed6e353b6fa", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/Dockerfile"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-a47908a92e76489d", "level": "error", "message": {"text": "Dockerfile pipes a remote installer into a shell"}, "properties": {"repobilityId": "d9e6aaa80fb6f1ae", "scanner": "scanner-primary", "fingerprint": "a47908a92e76489d", "layer": "hardware", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "docker", "remote-installer"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/Dockerfile"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-79267d8197b90d09", "level": "warning", "message": {"text": "Dockerfile runs as root: examples/oura-mcp/Dockerfile"}, "properties": {"repobilityId": "7f18f711ab8e0bda", "scanner": "scanner-primary", "fingerprint": "79267d8197b90d09", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-3535da5922fb05bc", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "properties": {"repobilityId": "9d51194194b060a2", "scanner": "scanner-primary", "fingerprint": "3535da5922fb05bc", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/oura-mcp/Dockerfile"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-3535da5922fb05bc", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "properties": {"repobilityId": "490ca82baa9ff153", "scanner": "scanner-primary", "fingerprint": "3535da5922fb05bc", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/oura-mcp/Dockerfile"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-c590cba99341e95e", "level": "warning", "message": {"text": "Dockerfile runs as root: examples/twitter-mcp/Dockerfile"}, "properties": {"repobilityId": "890821ecd620a4c5", "scanner": "scanner-primary", "fingerprint": "c590cba99341e95e", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-7414cbe1d31f3c4c", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "properties": {"repobilityId": "47f976b53a321e1a", "scanner": "scanner-primary", "fingerprint": "7414cbe1d31f3c4c", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/twitter-mcp/Dockerfile"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-7414cbe1d31f3c4c", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "properties": {"repobilityId": "62563385921480b3", "scanner": "scanner-primary", "fingerprint": "7414cbe1d31f3c4c", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/twitter-mcp/Dockerfile"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-5ce5f2d9e94b656f", "level": "note", "message": {"text": "Insecure pattern 'document_write' in docs/test-walkthrough.html:1299"}, "properties": {"repobilityId": "d8f7a5b5f4b3f889", "scanner": "scanner-primary", "fingerprint": "5ce5f2d9e94b656f", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/test-walkthrough.html"}, "region": {"startLine": 1299}}}]}, {"ruleId": "scanner-5db6d7d4095325ee", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/a2a-test.html:353"}, "properties": {"repobilityId": "50a1bef64cf3b327", "scanner": "scanner-primary", "fingerprint": "5db6d7d4095325ee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/a2a-test.html"}, "region": {"startLine": 353}}}]}, {"ruleId": "scanner-878e15d29ea4a23e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/evaluation/src/evaluation/llm-eval/coding.ts:18"}, "properties": {"repobilityId": "edbcec4521fc9edf", "scanner": "scanner-primary", "fingerprint": "878e15d29ea4a23e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/evaluation/src/evaluation/llm-eval/coding.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-50c07c5faddc3021", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/searcher.test.ts:15"}, "properties": {"repobilityId": "c5c00f8fe7a8c0c9", "scanner": "scanner-primary", "fingerprint": "50c07c5faddc3021", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/interaction/search/searcher.test.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-4d6dec1703852ce1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-available.test.ts:1"}, "properties": {"repobilityId": "fe382a600392b8d3", "scanner": "scanner-primary", "fingerprint": "4d6dec1703852ce1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/interaction/search/ripgrep-available.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-740a49ac03872ad4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-available.ts:10"}, "properties": {"repobilityId": "3f84965ebccec36f", "scanner": "scanner-primary", "fingerprint": "740a49ac03872ad4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/interaction/search/ripgrep-available.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-cc1469f531498f51", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-scanner.ts:13"}, "properties": {"repobilityId": "4c0833f012e3afd3", "scanner": "scanner-primary", "fingerprint": "cc1469f531498f51", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/interaction/search/ripgrep-scanner.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-4fabc9ce6d709f93", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/interaction/search/ripgrep-scanner.test.ts:13"}, "properties": {"repobilityId": "f1903cc16bc1aba6", "scanner": "scanner-primary", "fingerprint": "4fabc9ce6d709f93", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/interaction/search/ripgrep-scanner.test.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-6bebab3d7c92aa85", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/tools/loader.ts:11"}, "properties": {"repobilityId": "3263efa03ca0b3f9", "scanner": "scanner-primary", "fingerprint": "6bebab3d7c92aa85", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/stimulus/tools/loader.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-c998c0f1d38fc1c5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/tools/fs-tools.ts:12"}, "properties": {"repobilityId": "18e9a642bd1124ff", "scanner": "scanner-primary", "fingerprint": "c998c0f1d38fc1c5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/stimulus/tools/fs-tools.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-1b293f0bd7be60c2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/tools/bash-tool.ts:11"}, "properties": {"repobilityId": "08aeb665d39ffb0b", "scanner": "scanner-primary", "fingerprint": "1b293f0bd7be60c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/stimulus/tools/bash-tool.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-850deff6f6ce5737", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/stimulus/skills/loader.ts:4"}, "properties": {"repobilityId": "2c0a8323918c503a", "scanner": "scanner-primary", "fingerprint": "850deff6f6ce5737", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/stimulus/skills/loader.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-3e99906aa4e5a0f2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/habitat/public/index.html:1676"}, "properties": {"repobilityId": "900efc6fa2bfeeb3", "scanner": "scanner-primary", "fingerprint": "3e99906aa4e5a0f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/public/index.html"}, "region": {"startLine": 1676}}}]}, {"ruleId": "scanner-08d79f480071dc33", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in packages/habitat/public/index.html:1549"}, "properties": {"repobilityId": "8e6011f44ad749ac", "scanner": "scanner-primary", "fingerprint": "08d79f480071dc33", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/public/index.html"}, "region": {"startLine": 1549}}}]}, {"ruleId": "scanner-0c941e3a207d9602", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/habitat/src/container-server.ts:269"}, "properties": {"repobilityId": "476f80435996124f", "scanner": "scanner-primary", "fingerprint": "0c941e3a207d9602", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/container-server.ts"}, "region": {"startLine": 269}}}]}, {"ruleId": "scanner-797b2c0c0808022d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/pi-runner.ts:12"}, "properties": {"repobilityId": "45a4bfafd90307e2", "scanner": "scanner-primary", "fingerprint": "797b2c0c0808022d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/pi-runner.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-36465084bca68636", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/habitat/src/mcp-local-server.ts:54"}, "properties": {"repobilityId": "55b7b2f472b510b3", "scanner": "scanner-primary", "fingerprint": "36465084bca68636", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/mcp-local-server.ts"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-611c55ca95fb33f8", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in packages/habitat/src/load-prompts.ts:32"}, "properties": {"repobilityId": "075a1525f226ff6f", "scanner": "scanner-primary", "fingerprint": "611c55ca95fb33f8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/load-prompts.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-68f10528f5a2060b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/habitat/src/web/server.ts:165"}, "properties": {"repobilityId": "899add54598f3b55", "scanner": "scanner-primary", "fingerprint": "68f10528f5a2060b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/web/server.ts"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-09fb35eae203c4d8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/agent-runner-tools.test.ts:3"}, "properties": {"repobilityId": "62fe55889a149957", "scanner": "scanner-primary", "fingerprint": "09fb35eae203c4d8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/tools/agent-runner-tools.test.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-d88bcf817a276456", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/provision-tools.ts:6"}, "properties": {"repobilityId": "65611c186280d749", "scanner": "scanner-primary", "fingerprint": "d88bcf817a276456", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/tools/provision-tools.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-92761b84df07e242", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/exec-tools.ts:6"}, "properties": {"repobilityId": "2ddccfb0662fb328", "scanner": "scanner-primary", "fingerprint": "92761b84df07e242", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/tools/exec-tools.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-d4a09cca6ba16e7c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/file-tools.ts:15"}, "properties": {"repobilityId": "2293ee93fb75ec0e", "scanner": "scanner-primary", "fingerprint": "d4a09cca6ba16e7c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/tools/file-tools.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-ba7f5c41668119f6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/agent-runner/context.ts:9"}, "properties": {"repobilityId": "4c61c9c81100006a", "scanner": "scanner-primary", "fingerprint": "ba7f5c41668119f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/tools/agent-runner/context.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-1b1da693f6407f63", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/gaia/fnox.ts:14"}, "properties": {"repobilityId": "22015fc16bc58611", "scanner": "scanner-primary", "fingerprint": "1b1da693f6407f63", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/tools/gaia/fnox.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-879228c3cc556c47", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/habitat/src/tools/gaia/gaia-tools/skills.ts:11"}, "properties": {"repobilityId": "e9fbb4f2464c02a2", "scanner": "scanner-primary", "fingerprint": "879228c3cc556c47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/src/tools/gaia/gaia-tools/skills.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-47fa053b6875e7cd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/protocols/src/mcp/client/remote.ts:18"}, "properties": {"repobilityId": "98da9a9fe96033f4", "scanner": "scanner-primary", "fingerprint": "47fa053b6875e7cd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/protocols/src/mcp/client/remote.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-00f78c907d547ae3", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/protocols/src/mcp-serve/server.ts:100"}, "properties": {"repobilityId": "b4f0486dfd6234c0", "scanner": "scanner-primary", "fingerprint": "00f78c907d547ae3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/protocols/src/mcp-serve/server.ts"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-3e1700334f17cf5d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/protocols/src/mcp-serve/mcp-handler.ts:34"}, "properties": {"repobilityId": "7019a30d862c77f2", "scanner": "scanner-primary", "fingerprint": "3e1700334f17cf5d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/protocols/src/mcp-serve/mcp-handler.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-ee19f81e1bc18d1b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/protocols/src/mcp-serve/oauth/helpers.ts:7"}, "properties": {"repobilityId": "fcf9ea623e6c5426", "scanner": "scanner-primary", "fingerprint": "ee19f81e1bc18d1b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/protocols/src/mcp-serve/oauth/helpers.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "722ab4643920a278", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "24c28d8303f58301", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c266bde81c839bdc", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a14a700833f07929", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e2bbcbcc5f68615d", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4544a649b35fa68b", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-ad6701f0a8405e22", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "8384c23520d55657", "scanner": "scanner-primary", "fingerprint": "ad6701f0a8405e22", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9e5617d449b061f6", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a63b1fd6887cae9", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f6c832d67a7838", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9dfacdabb01880ef", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b28f2eb9ce3eea56", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-418885d2f03c4691", "level": "note", "message": {"text": "Very large file: packages/ui/src/discord/DiscordAdapter.tsx (1641 lines)"}, "properties": {"repobilityId": "f49bdc736cd823c1", "scanner": "scanner-primary", "fingerprint": "418885d2f03c4691", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3da05b1ed9bd3c16", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/umwelten/package.json"}, "properties": {"repobilityId": "c09a6362789f1a7b", "scanner": "scanner-primary", "fingerprint": "3da05b1ed9bd3c16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/umwelten/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-50218c90b43393bb", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/ui/package.json"}, "properties": {"repobilityId": "637e26a8c754e81d", "scanner": "scanner-primary", "fingerprint": "50218c90b43393bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ui/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a1b8a4eeb9d2fa61", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/evaluation/package.json"}, "properties": {"repobilityId": "d9f83a2274700356", "scanner": "scanner-primary", "fingerprint": "a1b8a4eeb9d2fa61", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/evaluation/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8c2e3196a4ef0cdd", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/cli/package.json"}, "properties": {"repobilityId": "2faf23490612d7a6", "scanner": "scanner-primary", "fingerprint": "8c2e3196a4ef0cdd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6440f582a8ace64", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/sessions/package.json"}, "properties": {"repobilityId": "bda3858aefcda3d8", "scanner": "scanner-primary", "fingerprint": "f6440f582a8ace64", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/sessions/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-28e92806c0db3cd2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/core/package.json"}, "properties": {"repobilityId": "8640e46be7e3f9b2", "scanner": "scanner-primary", "fingerprint": "28e92806c0db3cd2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8318373d0343c7fe", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/habitat/package.json"}, "properties": {"repobilityId": "73d4f9a2c5df9297", "scanner": "scanner-primary", "fingerprint": "8318373d0343c7fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/habitat/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f2970a94857a0a70", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/protocols/package.json"}, "properties": {"repobilityId": "a53850e91c0f019b", "scanner": "scanner-primary", "fingerprint": "f2970a94857a0a70", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/protocols/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "88f13ba17fcacd75", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "f62e85ebb741f6f7", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "b73dbc7d292c73a1", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "125b28159750712f", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "11da7e3384c90cf0", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "478fb0ae49322e8d", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-cdb72f264ea00660", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: examples/simple-agent/AGENTS.md"}, "properties": {"repobilityId": "02df5bc8c329541a", "scanner": "scanner-primary", "fingerprint": "cdb72f264ea00660", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/simple-agent/AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b2724acf168afc50", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: examples/bare-bones-memory/AGENTS.md"}, "properties": {"repobilityId": "a2e1b1a11b75a518", "scanner": "scanner-primary", "fingerprint": "b2724acf168afc50", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/bare-bones-memory/AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e725d2ab884fbd49", "level": "note", "message": {"text": "Multiple root agent instruction files without precedence"}, "properties": {"repobilityId": "1953db6c89508d22", "scanner": "scanner-primary", "fingerprint": "e725d2ab884fbd49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["agent-instructions", "governance"]}}, {"ruleId": "scanner-2f2c40a14aec97b1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ui/src/tui/introspect/DashboardApp.test.tsx:300"}, "properties": {"repobilityId": "08cab108dc6f386f", "scanner": "scanner-primary", "fingerprint": "2f2c40a14aec97b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91c0976b10700411", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ui/src/tui/introspect/dashboard/utils.ts:93"}, "properties": {"repobilityId": "3c48a38fe63f43fc", "scanner": "scanner-primary", "fingerprint": "91c0976b10700411", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1bbcc2d4622cb2d9", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ui/src/tui/search/SessionSearchTui.tsx:204"}, "properties": {"repobilityId": "f282640586f19481", "scanner": "scanner-primary", "fingerprint": "1bbcc2d4622cb2d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e47c30c643865a18", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ui/src/discord/DiscordAdapter.tsx:566"}, "properties": {"repobilityId": "f1b95c1ca20ce8cd", "scanner": "scanner-primary", "fingerprint": "e47c30c643865a18", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1c92dae23825d2f0", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/evaluation/src/evaluation/suite.ts:319"}, "properties": {"repobilityId": "a3e36d81cb0e45b0", "scanner": "scanner-primary", "fingerprint": "1c92dae23825d2f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15889bdbf75f61f7", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/evaluation/src/evaluation/strategies/simple-evaluation.ts:232"}, "properties": {"repobilityId": "9f5644906b742b27", "scanner": "scanner-primary", "fingerprint": "15889bdbf75f61f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d0192c5bc0421c7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/evaluation/src/evaluation/caching/cache-service.ts:105"}, "properties": {"repobilityId": "fe48d9801a32b22e", "scanner": "scanner-primary", "fingerprint": "4d0192c5bc0421c7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d8fe805ac3084f71", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/sessions/src/introspect.ts:100"}, "properties": {"repobilityId": "8a21b4b0bc49682a", "scanner": "scanner-primary", "fingerprint": "d8fe805ac3084f71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b8825f60d9b7e11", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/cognition/usage-extractor.ts:208"}, "properties": {"repobilityId": "7c34f303841c19a2", "scanner": "scanner-primary", "fingerprint": "5b8825f60d9b7e11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4383e3f341d2548", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/cognition/runner.ts:40"}, "properties": {"repobilityId": "d51ffe05306fd7af", "scanner": "scanner-primary", "fingerprint": "d4383e3f341d2548", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-820e8ab621d12be1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/cognition/usage-extractor.test.ts:185"}, "properties": {"repobilityId": "4a5b9b457c99947e", "scanner": "scanner-primary", "fingerprint": "820e8ab621d12be1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e00dd27c8696dd0", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/cognition/request-options.ts:56"}, "properties": {"repobilityId": "93f2d4e5462aabca", "scanner": "scanner-primary", "fingerprint": "9e00dd27c8696dd0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b085c8484c7ecf4b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/interaction/adapters/antigravity-adapter.ts:591"}, "properties": {"repobilityId": "3983e9ed3fb05e5f", "scanner": "scanner-primary", "fingerprint": "b085c8484c7ecf4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6a610660b04e4b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/interaction/search/searcher.test.ts:284"}, "properties": {"repobilityId": "18c7e931dc925acb", "scanner": "scanner-primary", "fingerprint": "c6a610660b04e4b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0af4d075d99f7939", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/interaction/search/hit-parser.ts:84"}, "properties": {"repobilityId": "4e948743b541f4d5", "scanner": "scanner-primary", "fingerprint": "0af4d075d99f7939", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18fe1179e8f68ef7", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/interaction/search/searcher.ts:76"}, "properties": {"repobilityId": "68f9294e1511ef7a", "scanner": "scanner-primary", "fingerprint": "18fe1179e8f68ef7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7bb8bf417d385a9", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in packages/core/src/interaction/analysis/session-search.ts:142"}, "properties": {"repobilityId": "c65970758ae0a412", "scanner": "scanner-primary", "fingerprint": "d7bb8bf417d385a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7a1e1ac1395a52c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/interaction/analysis/extraction-engine.ts:200"}, "properties": {"repobilityId": "0eb3f5ffa9ec02a9", "scanner": "scanner-primary", "fingerprint": "7a1e1ac1395a52c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f53904c307e542b", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in packages/core/src/interaction/analysis/digest-search.ts:140"}, "properties": {"repobilityId": "488cc53e14b2567b", "scanner": "scanner-primary", "fingerprint": "9f53904c307e542b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-208ab531434df8a7", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/interaction/analysis/session-analyzer.ts:465"}, "properties": {"repobilityId": "18e39acb49900214", "scanner": "scanner-primary", "fingerprint": "208ab531434df8a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a7537a3b1c6402a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/llamaswap.ts:43"}, "properties": {"repobilityId": "a1a3f8ca9ce1e230", "scanner": "scanner-primary", "fingerprint": "6a7537a3b1c6402a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-53770fbba8e30822", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/llamabarn.ts:36"}, "properties": {"repobilityId": "998bd15dee57805a", "scanner": "scanner-primary", "fingerprint": "53770fbba8e30822", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aae752f6c29005b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/nvidia.ts:21"}, "properties": {"repobilityId": "32462cc6730c6a58", "scanner": "scanner-primary", "fingerprint": "aae752f6c29005b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-52fbdd36a6cc4171", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/lmstudio.ts:22"}, "properties": {"repobilityId": "1b4ef85aecad92cc", "scanner": "scanner-primary", "fingerprint": "52fbdd36a6cc4171", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-de7201dc2f6a4964", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/togetherai.ts:21"}, "properties": {"repobilityId": "3a09628413c5ed00", "scanner": "scanner-primary", "fingerprint": "de7201dc2f6a4964", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8adaea81a1fd8bcc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/fireworks.ts:21"}, "properties": {"repobilityId": "61e80c4ea13d0ebe", "scanner": "scanner-primary", "fingerprint": "8adaea81a1fd8bcc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b3d307e1abc733a", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core/src/providers/openrouter.integration.test.ts:106"}, "properties": {"repobilityId": "a6d78171ff882650", "scanner": "scanner-primary", "fingerprint": "6b3d307e1abc733a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e10c136a73584c66", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/local-fetch.ts:4"}, "properties": {"repobilityId": "30054a57908ed925", "scanner": "scanner-primary", "fingerprint": "e10c136a73584c66", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89d7e714c6a79b65", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/providers/index.ts:92"}, "properties": {"repobilityId": "0f6da0d521b183a1", "scanner": "scanner-primary", "fingerprint": "89d7e714c6a79b65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aeaab632236d929c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/minimax.ts:128"}, "properties": {"repobilityId": "9774ea76a2d6d32e", "scanner": "scanner-primary", "fingerprint": "aeaab632236d929c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e9ccb4a9d99e4400", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/openrouter.ts:26"}, "properties": {"repobilityId": "2ae1f136f3529149", "scanner": "scanner-primary", "fingerprint": "e9ccb4a9d99e4400", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ce52be2e47be30bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/deepinfra.ts:21"}, "properties": {"repobilityId": "5a1a58cf3405c9d2", "scanner": "scanner-primary", "fingerprint": "ce52be2e47be30bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d05062724b5ef105", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/providers/ollama.ts:201"}, "properties": {"repobilityId": "6f57cc1f07b2c88b", "scanner": "scanner-primary", "fingerprint": "d05062724b5ef105", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ab49d3ce1b23e76", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/providers/github-models.ts:7"}, "properties": {"repobilityId": "e9368e28058fa1f2", "scanner": "scanner-primary", "fingerprint": "2ab49d3ce1b23e76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a70a68ad1e3d9fa8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/github-models.ts:28"}, "properties": {"repobilityId": "2a554533366acb32", "scanner": "scanner-primary", "fingerprint": "a70a68ad1e3d9fa8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ec439cbb7e2e815d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/providers/google.ts:44"}, "properties": {"repobilityId": "13086c20d9ef2104", "scanner": "scanner-primary", "fingerprint": "ec439cbb7e2e815d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-865bc87acbc2634c", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/stimulus/stimulus.ts:247"}, "properties": {"repobilityId": "7213169045f625f3", "scanner": "scanner-primary", "fingerprint": "865bc87acbc2634c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5e05dd1421ce7e0", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/memory/determine_operations.integration.test.ts:50"}, "properties": {"repobilityId": "8f7d0e4fec5ac3da", "scanner": "scanner-primary", "fingerprint": "a5e05dd1421ce7e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5536aa15ba8cf727", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/markdown/from_html.ts:38"}, "properties": {"repobilityId": "e235f5bd698634d8", "scanner": "scanner-primary", "fingerprint": "5536aa15ba8cf727", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc8080728ec1995e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/habitat/src/container-server.ts:474"}, "properties": {"repobilityId": "895134fc09262604", "scanner": "scanner-primary", "fingerprint": "dc8080728ec1995e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cdb13602386d3277", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/habitat/src/web/WebAdapter.ts:18"}, "properties": {"repobilityId": "9dfbe2b7f6ed9731", "scanner": "scanner-primary", "fingerprint": "cdb13602386d3277", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1caa7ecc81b7bca", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/habitat/src/tools/self-modify-tools.ts:31"}, "properties": {"repobilityId": "38ca4e03846e0e5a", "scanner": "scanner-primary", "fingerprint": "a1caa7ecc81b7bca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bfd2df13f3c577d3", "level": "note", "message": {"text": "Legacy-named symbol `ghp_old` in packages/habitat/src/tools/gaia/capability-resolver.test.ts:138"}, "properties": {"repobilityId": "51298c543541b904", "scanner": "scanner-primary", "fingerprint": "bfd2df13f3c577d3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f03115596387aa1d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/habitat/src/tools/gaia/gaia-tools/habitats.ts:417"}, "properties": {"repobilityId": "43098ed8c42d359f", "scanner": "scanner-primary", "fingerprint": "f03115596387aa1d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f639bf41f4471348", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/protocols/src/a2a/client.ts:231"}, "properties": {"repobilityId": "7fcb1e8b7bc1e8d8", "scanner": "scanner-primary", "fingerprint": "f639bf41f4471348", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-68c8ea5eb05a133f", "level": "note", "message": {"text": "Legacy-named symbol `unstable_legacy` in examples/umwelten-web-demo/public/assets/index-UyR5kFrb.js:8"}, "properties": {"repobilityId": "d5783cd2a7eb7c47", "scanner": "scanner-primary", "fingerprint": "68c8ea5eb05a133f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6cacc4e7e2a6038f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/umwelten-web-demo/public/assets/index-UyR5kFrb.js:1"}, "properties": {"repobilityId": "9ce66d03e1d98704", "scanner": "scanner-primary", "fingerprint": "6cacc4e7e2a6038f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-10c9286b3a973f3e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/oura-mcp/src/oura-tool-set.ts:14"}, "properties": {"repobilityId": "bf90e7dcb4a7ccda", "scanner": "scanner-primary", "fingerprint": "10c9286b3a973f3e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14b5599964b5938f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/oura-mcp/src/oura-provider.ts:24"}, "properties": {"repobilityId": "f257687afc947795", "scanner": "scanner-primary", "fingerprint": "14b5599964b5938f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f832c09b48c44d30", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/jeeves-bot/scripts/check-discord-setup.ts:69"}, "properties": {"repobilityId": "176bef3b1629f6f8", "scanner": "scanner-primary", "fingerprint": "f832c09b48c44d30", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-60eb772587952ece", "level": "none", "message": {"text": "Commented-code block (6 lines) in examples/local-providers/run-matrix.ts:111"}, "properties": {"repobilityId": "9aa0bb1f98e0aa75", "scanner": "scanner-primary", "fingerprint": "60eb772587952ece", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-468da8eb647ddb30", "level": "none", "message": {"text": "Commented-code block (6 lines) in examples/local-providers/run-coding-2pass.ts:27"}, "properties": {"repobilityId": "89c244d24d9cebfa", "scanner": "scanner-primary", "fingerprint": "468da8eb647ddb30", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8995faa491bf1158", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/twitter-mcp/src/twitter-tools.ts:65"}, "properties": {"repobilityId": "72061a6c47df01e3", "scanner": "scanner-primary", "fingerprint": "8995faa491bf1158", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-185d53cfa13de90b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/twitter-mcp/src/twitter-provider.ts:69"}, "properties": {"repobilityId": "215a59dd4dc3e6d3", "scanner": "scanner-primary", "fingerprint": "185d53cfa13de90b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0a57cec261c98d9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 examples/gaia-ui/app.js:850"}, "properties": {"repobilityId": "96cc21907b3e91f8", "scanner": "scanner-primary", "fingerprint": "0a57cec261c98d9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}