{"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-ca067d3f033c07e9", "name": "Possibly dead Python function: replace_heading", "shortDescription": {"text": "Possibly dead Python function: replace_heading"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-81ffea1f1f843bdc", "name": "Possibly dead Python function: compute_risk", "shortDescription": {"text": "Possibly dead Python function: compute_risk"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df0abe3ee274ae62", "name": "Possibly dead Python function: compute_venue_observation_variances", "shortDescription": {"text": "Possibly dead Python function: compute_venue_observation_variances"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd570820ab42594f", "name": "Possibly dead Python function: compute_trimmed_median", "shortDescription": {"text": "Possibly dead Python function: compute_trimmed_median"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87a8ed9522fff15f", "name": "Possibly dead Python function: create_data_aggregator", "shortDescription": {"text": "Possibly dead Python function: create_data_aggregator"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c6e0254035a1656c", "name": "Possibly dead Python function: adjust_venue_weight", "shortDescription": {"text": "Possibly dead Python function: adjust_venue_weight"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f2d53f6251eea84", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/update-build-version.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/update-build-version.js:23"}, "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-dec1df5d5063f7fc", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/validate-build.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/validate-build.js: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-8156349e68959b67", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/verify-deployment.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/verify-deployment.js:30"}, "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-fd9a307f69b8f6d5", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/persistance.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/persistance.js: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-4fd564ad0450c129", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/utils/sybilDetection.js:512", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/utils/sybilDetection.js:512"}, "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-12c2c24cfd405098", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/JarvisPage.jsx:481", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/JarvisPage.jsx:481"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30240e6c0ba5abbc", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/JarvisPage.jsx:459", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/JarvisPage.jsx:459"}, "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-5eb69232a9ab0dce", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ForumPage.jsx:579", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ForumPage.jsx:579"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb96e49ef177e56a", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/components/GameSwapPage.jsx:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components/GameSwapPage.jsx: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-04155f6245308b56", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TutorialPage.jsx:303", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TutorialPage.jsx:303"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e03a4246016611d4", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ContributorsPage.jsx:275", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ContributorsPage.jsx:275"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd7122b6d15afecc", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AchievementsPage.jsx:207", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AchievementsPage.jsx:207"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b26a7592b5372ec", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TreasuryPage.jsx:291", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TreasuryPage.jsx:291"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62db5ea095b9061d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CRPCPage.jsx:173", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CRPCPage.jsx:173"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b83f456b26d786d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ProfilePage.jsx:260", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ProfilePage.jsx:260"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a507a079044dea1f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/WatchlistPage.jsx:225", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/WatchlistPage.jsx:225"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c657400e3e797f5", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DAOToolsPage.jsx:518", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DAOToolsPage.jsx:518"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5675026b47350e9b", "name": "Icon-only button without accessible name \u2014 frontend/src/components/RosettaPage.jsx:5540", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/src/components/RosettaPage.jsx:5540"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39445a266f8404f8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RosettaPage.jsx:956", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RosettaPage.jsx:956"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4373f8236f1d03ce", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TransakPage.jsx:496", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TransakPage.jsx:496"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dc8a2b007d856bd2", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/APIDocsPage.jsx:447", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/APIDocsPage.jsx:447"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8df028039116f473", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/components/APIDocsPage.jsx:363", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components/APIDocsPage.jsx:363"}, "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-d0436b7edf33b5fd", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/InsurancePage.jsx:349", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/InsurancePage.jsx:349"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51ae3bd9de4f999d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BadgesPage.jsx:123", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BadgesPage.jsx:123"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ae96f21801de5850", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/NFTPage.jsx:106", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/NFTPage.jsx:106"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e6f933c42f3f359", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CommitRevealPage.jsx:108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CommitRevealPage.jsx:108"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a695d3c665b69c25", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GovernanceProposalsPage.jsx:242", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GovernanceProposalsPage.jsx:242"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db89e3fba1470378", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SmartContractPage.jsx:579", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SmartContractPage.jsx:579"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-28922efb7526c08b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AgentHub.jsx:348", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AgentHub.jsx:348"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d3116ef3477fb86", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/EcosystemPage.jsx:228", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/EcosystemPage.jsx:228"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf1ebffb0b67061d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AutomationPage.jsx:596", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AutomationPage.jsx:596"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d266d17e6aa9d83f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TokenUnlockPage.jsx:649", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TokenUnlockPage.jsx:649"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a8f05ce26d70683", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/MessageBoard.jsx:114", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/MessageBoard.jsx:114"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-132786574ec5ddc9", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ActivityPage.jsx:276", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ActivityPage.jsx:276"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f2bcdeb273d657a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/VibePlayer.jsx:288", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/VibePlayer.jsx:288"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-44d033e1cdfc13a1", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/VibeFeed.jsx:531", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/VibeFeed.jsx:531"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18006b0aa8bc3264", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RWAHub.jsx:231", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RWAHub.jsx:231"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d5c37fcb907ecea0", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/HomePage.jsx:85", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/HomePage.jsx:85"}, "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-d92ae11d995bad1e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PersonalityPage.jsx:198", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PersonalityPage.jsx:198"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de09d807f6584dd9", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/VisionPage.jsx:279", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/VisionPage.jsx:279"}, "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-dd7e6870fddf5097", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CommandPalette.jsx:365", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CommandPalette.jsx:365"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e892902223cf9d19", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ApprovalManagerPage.jsx:170", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ApprovalManagerPage.jsx:170"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e41ce39446e6b8ba", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/PriceChart.jsx:3", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/PriceChart.jsx:3"}, "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-7e0ac26156df27c6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/JarvisOSPage.jsx:537", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/JarvisOSPage.jsx:537"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d13a5052248ab0e0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LiveStream.jsx:328", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LiveStream.jsx:328"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9d9841e37362a278", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ReferralDashboardPage.jsx:530", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ReferralDashboardPage.jsx:530"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-79f7b78577d3d517", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PortfolioDashboard.jsx:444", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PortfolioDashboard.jsx:444"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd690cfe41242e37", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GovernancePage.jsx:561", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GovernancePage.jsx:561"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a8c8c99d167da9a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BridgePage.jsx:222", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BridgePage.jsx:222"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-63dcd7a4a0de4fb9", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/InfoFiPage.jsx:243", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/InfoFiPage.jsx:243"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2dcdc46cf0e20c51", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AggregatorPage.jsx:503", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AggregatorPage.jsx:503"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8df7852664a98ac", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PartnersPage.jsx:241", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PartnersPage.jsx:241"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b2c288599080fc8a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ReferralPage.jsx:181", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ReferralPage.jsx:181"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f8438636883ad3d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SwapHistoryPage.jsx:136", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SwapHistoryPage.jsx:136"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62dc4bc4bfe09c5a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AirdropClaimsPage.jsx:445", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AirdropClaimsPage.jsx:445"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1850742dcffc712b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/NetworkSelectorPage.jsx:336", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/NetworkSelectorPage.jsx:336"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a7f4dd6161d12e57", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BridgeHistoryPage.jsx:189", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BridgeHistoryPage.jsx:189"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-88d12fd2f29ba4cb", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/EducationPage.jsx:382", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/EducationPage.jsx:382"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f448d47e8971cb51", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SettingsPage.jsx:124", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SettingsPage.jsx:124"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ffc4cc6639a429e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PredictionMarket.jsx:458", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PredictionMarket.jsx:458"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a2f8c253c8fdc9d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/JobMarket.jsx:198", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/JobMarket.jsx:198"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57ad2364b61d6870", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/StreakTrackerPage.jsx:476", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/StreakTrackerPage.jsx:476"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f60db31d67c8976", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TeamPage.jsx:280", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TeamPage.jsx:280"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d1bd91a42295a83", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TokenCreatorPage.jsx:737", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TokenCreatorPage.jsx:737"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-56ad26608ce43dee", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AppStore.jsx:288", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AppStore.jsx:288"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-502732427fb203f6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BuySellPage.jsx:272", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BuySellPage.jsx:272"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-161d5969f0e8e276", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SnapshotPage.jsx:489", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SnapshotPage.jsx:489"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc7ba01cda0d127a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GameTheoryPage.jsx:1055", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GameTheoryPage.jsx:1055"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7e1bc6de8ce203a", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/PsiNetPage.jsx:259", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/PsiNetPage.jsx:259"}, "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-9d9ba55a346b59ac", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RewardsPage.jsx:195", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RewardsPage.jsx:195"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1fc450b309cb899b", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/RewardsPage.jsx:32", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/RewardsPage.jsx:32"}, "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-7445512cca2d8a4b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RecoverySetup.jsx:614", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RecoverySetup.jsx:614"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f7c49b53aec8813", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GauntletPage.jsx:196", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GauntletPage.jsx:196"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7846b8cb39cb228c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/VestingPage.jsx:600", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/VestingPage.jsx:600"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5242336db75f601d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ProtocolHealthPage.jsx:459", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ProtocolHealthPage.jsx:459"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69672656214a55db", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/SearchOverlay.jsx:164", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/SearchOverlay.jsx:164"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2757ac392cc1b519", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/TokenList.jsx:44", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/TokenList.jsx:44"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-897f967570f07409", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/Dropdown.jsx:67", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/Dropdown.jsx:67"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-586a97e89e506772", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/TokenIcon.jsx:47", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/TokenIcon.jsx:47"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35263a39a99794e2", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/WalletBalance.jsx:30", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/WalletBalance.jsx:30"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce4035129af1547f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/contexts/ToastContext.jsx:88", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/contexts/ToastContext.jsx:88"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ea2868b60c7acb4", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/hooks/useIncentives.jsx:69", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/hooks/useIncentives.jsx:69"}, "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-4f91381d158b1d6d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/hooks/useTransactions.jsx:259", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/hooks/useTransactions.jsx:259"}, "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-b1ad698663f3a243", "name": "Stray `console.log` in TS/JS \u2014 polyglot/javascript/main.js:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 polyglot/javascript/main.js:1"}, "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-61cf05ba6fd79996", "name": "Stray `console.log` in TS/JS \u2014 polyglot/typescript/main.ts:2", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 polyglot/typescript/main.ts:2"}, "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-42d91dc54a1ab08f", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/test/magnum-opus.test.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/test/magnum-opus.test.js: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-ee986a844b7999ea", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/verify-digest.js:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/verify-digest.js:112"}, "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-752a15cc263bfc18", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/mario-sim.js:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/mario-sim.js:179"}, "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-54bc1ccdf2d7132d", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/run-gate.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/run-gate.js:53"}, "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-52db9231e6b51901", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/seed-licho-attribution.js:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/seed-licho-attribution.js: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-3acbac3c91e78902", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/constellation.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/constellation.js:24"}, "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-7a9f1a04afcaf6f8", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/reward-signal.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/reward-signal.js:104"}, "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-6f5933750601ca55", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/vibe-emissions.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/vibe-emissions.js: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-15fed68810f2e328", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mi-host.js:567", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mi-host.js:567"}, "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-0d17f8a7f17fafc5", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-router.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-router.js:70"}, "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-40d791cbf6a71887", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-dedup.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-dedup.js:42"}, "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-c0a47421e104f4f7", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/voice-gate.test.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/voice-gate.test.js:10"}, "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-0f298838f66fd612", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/x402.js:461", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/x402.js:461"}, "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-bd8c1ef0ce4eb6f3", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/ckb-generator.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/ckb-generator.js:62"}, "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-5c308b5a38829d55", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/moderation.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/moderation.js: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-3e922513b34dfbe2", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/attribution-bridge.js:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/attribution-bridge.js:157"}, "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-069027db543f04e1", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/consensus.js:185", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/consensus.js:185"}, "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-e14a744da137147e", "name": "TODO/FIXME marker in shipping code \u2014 jarvis-bot/src/claude.js:842", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 jarvis-bot/src/claude.js:842"}, "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-b97ce92035b37261", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/claude.js:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/claude.js:103"}, "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-7b6cdb734748023a", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/knowledge-chain.js:405", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/knowledge-chain.js:405"}, "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-5acca65ecd56d0be", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/reputation-consensus.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/reputation-consensus.js: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-3e7a2dcac8663f54", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/compute-economics.js:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/compute-economics.js: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-d5ad6adae7e8529e", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/pantheon.js:569", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/pantheon.js:569"}, "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-02f654540a144b8e", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/telegram-monitor.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/telegram-monitor.js:96"}, "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-89d903ddfb58de64", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-predictions.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-predictions.js:53"}, "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-86a41941bc165669", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mi-bridge.js:281", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mi-bridge.js:281"}, "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-03b23cd27786d12c", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/knowledge-bridge.js:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/knowledge-bridge.js:103"}, "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-e46265a395155d9b", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/verkle-context.js:308", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/verkle-context.js:308"}, "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-d51a0cb8717144a1", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/infofi.js:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/infofi.js:132"}, "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-37893428ac5e5a42", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/pantheon-merkle.js:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/pantheon-merkle.js:286"}, "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-04d1abdf50c18864", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/wallet.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/wallet.js:104"}, "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-2f3472552583ff43", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/contract-bridge.js:142", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/contract-bridge.js:142"}, "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-8426f370beb2c4b4", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/learning.js:205", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/learning.js:205"}, "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-f574dffedad79bb7", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/trading.js:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/trading.js: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-80f9c1353c6ab19c", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-memory.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-memory.js: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-5e0339f7ca49c5a3", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/memory.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/memory.js:53"}, "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-2718fd576bcc470b", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/self-eval.js:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/self-eval.js: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-259e8212412159f7", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/web-api.js:333", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/web-api.js:333"}, "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-a314861893170cf5", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/passive-attribution.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/passive-attribution.js:83"}, "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-d0b6eea4d5efae02", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/group-context.js:188", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/group-context.js:188"}, "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-f776210c291b7050", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/self-improve.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/self-improve.js: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-e93b30f8039c76e6", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/proactive.js:295", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/proactive.js:295"}, "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-d7a383c6d8fd3555", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-scheduler.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-scheduler.js:37"}, "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-5369b9012bd9164e", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-social.js:241", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-social.js:241"}, "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-381d3727baeee0cf", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/crpc.js:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/crpc.js:137"}, "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-df087e8f03678fd3", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/intelligence.js:355", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/intelligence.js:355"}, "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-1a849bcc4486b65e", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/rosetta.js:1354", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/rosetta.js:1354"}, "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-df76357e36e59b7a", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/context-memory.js:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/context-memory.js:72"}, "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-c9335df8079fc944", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/archive-mirror.js:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/archive-mirror.js: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-0e1875968c95538f", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/idea-pipeline.js:274", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/idea-pipeline.js:274"}, "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-0b4cddbeebb3d582", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/persona.test.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/persona.test.js: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-9410b655eacb67ef", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/inner-dialogue.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/inner-dialogue.js:92"}, "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-0491460c77544208", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tracker.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tracker.js: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-37ad0c7b0a1bd7f5", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mesh-monitor.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mesh-monitor.js:76"}, "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-52a335959bbdd60a", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-learnings.js:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-learnings.js:85"}, "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-695851d25b75c124", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/directives.js:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/directives.js:141"}, "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-4db9f4bae851a794", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/security-checks.js:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/security-checks.js: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-f597bc82ab2fee5f", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/dialogue-to-code.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/dialogue-to-code.js:76"}, "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-c4b557045f9c2f48", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shadow.js:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shadow.js:106"}, "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-f7bbd218c452c99f", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/cross-context.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/cross-context.js: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-0ed659c422df55c9", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/antispam.js:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/antispam.js:208"}, "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-307231bbe8865644", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/llm-provider.js:307", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/llm-provider.js:307"}, "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-72739fdb22df6b33", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/anchor.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/anchor.js: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-e831ca4320d95feb", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/broadcast.js:270", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/broadcast.js:270"}, "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-db7463aff526f7f1", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/privacy.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/privacy.js: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-c333a0d6e03904bd", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard.js: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-c339f3a72a27f5f1", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/relay.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/relay.js:37"}, "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-a201b4eff8acc5c5", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/persona.js:259", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/persona.js:259"}, "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-693380a09347ce5c", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/knowledge-constitution.js:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/knowledge-constitution.js:117"}, "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-fa34e2824984a315", "name": "TODO/FIXME marker in shipping code \u2014 jarvis-bot/src/index.js:3397", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 jarvis-bot/src/index.js:3397"}, "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-5bb0594e383e5c80", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/index.js:333", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/index.js:333"}, "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-62f36313261acb7b", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/katarakti.js:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/katarakti.js:115"}, "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-5d86a177f3b17009", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/router.js:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/router.js:95"}, "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-cc8d6428f6ee5b1c", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/task-queue.js:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/task-queue.js: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-8626aa51b990233a", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/operator.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/operator.js: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-c88d5a4fb1faf405", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/threads.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/threads.js: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-54957065c0d0c894", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/social.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/social.js: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-687c3085c328fd39", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mi-manifest.js:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mi-manifest.js: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-80dfc094d502ce94", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/vip-detector.js:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/vip-detector.js:198"}, "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-f8bd16ce9c60b1c2", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/deep-storage.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/deep-storage.js: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-02e4e6f76350ed95", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/autonomous.js:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/autonomous.js: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-d00a8c562beffb1a", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/limni.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/limni.js:83"}, "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-ba121a72c2e67953", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/message-collision.js:128", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/message-collision.js:128"}, "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-3932a787768536f9", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/time-awareness.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/time-awareness.js:98"}, "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-9047347b7aa24aea", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/nervos-talks.js:256", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/nervos-talks.js:256"}, "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-e7fbd87a6a482fbd", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/sticker.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/sticker.js:96"}, "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-49b54d08dbb73325", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/user-memory.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/user-memory.js:42"}, "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-380e93ffb6c46d78", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-xp.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-xp.js:92"}, "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-7df91b37deb2d1f1", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/hell.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/hell.js:55"}, "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-79b15c4b55ace726", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/reward-batcher.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/reward-batcher.js:70"}, "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-02e822216265b45f", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/state-store.js:254", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/state-store.js:254"}, "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-4d79837e435bf0ce", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tts.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tts.js:89"}, "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-0fd79182755fc9d0", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/agent-gateway.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/agent-gateway.js: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-d989e7fabf796b73", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-preferences.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-preferences.js:34"}, "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-33372bc646a57635", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mining.js:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mining.js:194"}, "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-d57184b97aed2b6f", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shards/trading-shard.js:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shards/trading-shard.js:122"}, "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-b251be88a79aba08", "name": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/chatterbox/index.js:258", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/chatterbox/index.js:258"}, "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-2317aec7c473df9e", "name": "Stray `console.log` in TS/JS \u2014 scripts/mesh-test.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mesh-test.js:16"}, "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-304918aac02e7e6c", "name": "Stray `console.log` in TS/JS \u2014 scripts/weekly-digest.js:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/weekly-digest.js:202"}, "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-f3b6b4576edf45fe", "name": "Stray `console.log` in TS/JS \u2014 scripts/bd-toolkit.js:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bd-toolkit.js:143"}, "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-c8f5e7811f47fdf1", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-thesis-docx.js:409", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-thesis-docx.js:409"}, "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-80cacdc48aa18a15", "name": "Stray `console.log` in TS/JS \u2014 tooling/docs/convert-whitepaper.js:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tooling/docs/convert-whitepaper.js:194"}, "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-bd37ed174cb929d4", "name": "Stray `console.log` in TS/JS \u2014 cogproof/src/compression-mining/mine.js:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/compression-mining/mine.js:163"}, "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-1e33242f514b8407", "name": "Stray `console.log` in TS/JS \u2014 cogproof/src/api/server.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/api/server.js:89"}, "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-456d641f4c2bdfe6", "name": "Stray `console.log` in TS/JS \u2014 cogproof/src/commit-reveal/commit-reveal.js:191", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/commit-reveal/commit-reveal.js:191"}, "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-26a6bf9ce4674bef", "name": "Stray `console.log` in TS/JS \u2014 cogproof/src/bitcoin/op-return.js:417", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/bitcoin/op-return.js:417"}, "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-435151e0afbb9e87", "name": "Stray `console.log` in TS/JS \u2014 cogproof/src/shapley-dag/shapley.js:257", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/shapley-dag/shapley.js:257"}, "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-0edbe7c7dec76642", "name": "Stray `console.log` in TS/JS \u2014 cogproof/src/trust/behavior-analyzer.js:416", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/trust/behavior-analyzer.js:416"}, "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-5b4709910244d556", "name": "Stray `console.log` in TS/JS \u2014 cogproof/src/credentials/credential-registry.js:280", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/credentials/credential-registry.js:280"}, "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-a3ac84e5e376effa", "name": "Stray `console.log` in TS/JS \u2014 script/slippage-demo.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 script/slippage-demo.js: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-2a37b598a3b821e7", "name": "Dockerfile runs as root: polyglot/dockerfile/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: polyglot/dockerfile/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-1345030a07f4bdbf", "name": "Dockerfile runs as root: jarvis-bot/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: jarvis-bot/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-a642399a11719f83", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-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-dca865e22154bfc3", "name": "Dockerfile runs as root: jarvis-bot/scraper/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: jarvis-bot/scraper/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-3eadcc2d5ba24843", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-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-333eeeb172e71265", "name": "Dockerfile runs as root: jarvis-bot/src/chatterbox/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: jarvis-bot/src/chatterbox/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-4f445dde560da51f", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-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-41194acb18a7e41a", "name": "Dockerfile runs as root: cogproof/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: cogproof/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-0992010a00f454bc", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-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-c01120dfd1383794", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/index.html:139", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/index.html:139"}, "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-5e892c506df9f9bf", "name": "Insecure pattern 'cors_wildcard' in frontend/api/mind.js:38", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in frontend/api/mind.js:38"}, "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-572393febe4d865d", "name": "Insecure pattern 'cors_wildcard' in frontend/api/chat.js:51", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in frontend/api/chat.js:51"}, "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-d83782e2988a3f54", "name": "Insecure pattern 'cors_wildcard' in frontend/api/prices.js:184", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in frontend/api/prices.js:184"}, "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-c8e0c719c0f63b95", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/youtube-e01.html:665", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/youtube-e01.html:665"}, "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-63a666893b7b0a66", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/wardenclyffe.html:233", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/wardenclyffe.html:233"}, "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-034c2ada3e8dcd4f", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/decks.html:442", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/decks.html:442"}, "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-661c9b9818ba3d80", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/papers/index.html:431", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/papers/index.html:431"}, "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-2a1b036dd98a3f0b", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/utils/entropyPassword.js:236", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/utils/entropyPassword.js:236"}, "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-a918e0fe0d883875", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/JarvisPage.jsx:459", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/JarvisPage.jsx:459"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bc211a0ebfc79b72", "name": "Insecure pattern 'document_write' in frontend/src/components/RosettaPage.jsx:1068", "shortDescription": {"text": "Insecure pattern 'document_write' in frontend/src/components/RosettaPage.jsx:1068"}, "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-ef07690675e05d8e", "name": "Insecure pattern 'document_write' in frontend/src/components/PaperBackup.jsx:250", "shortDescription": {"text": "Insecure pattern 'document_write' in frontend/src/components/PaperBackup.jsx:250"}, "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-f71d3819ef45fae8", "name": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/voice-bridge.html:136", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/voice-bridge.html:136"}, "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-90462805c45932d4", "name": "Insecure pattern 'node_child_process' in jarvis-bot/scripts/run-gate.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in jarvis-bot/scripts/run-gate.js: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-06f7e1c411d89cdb", "name": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/constellation.js:322", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/constellation.js:322"}, "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-f552ca1c4ee9e192", "name": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/voice.html:359", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/voice.html:359"}, "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-74c02369b584649f", "name": "Insecure pattern 'new_function_used' in jarvis-bot/src/tools-utility.js:229", "shortDescription": {"text": "Insecure pattern 'new_function_used' in jarvis-bot/src/tools-utility.js:229"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8af669fd2c6e7442", "name": "Insecure pattern 'node_child_process' in jarvis-bot/src/index.js:398", "shortDescription": {"text": "Insecure pattern 'node_child_process' in jarvis-bot/src/index.js:398"}, "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-efb39d03cb24f708", "name": "Insecure pattern 'cors_wildcard' in jarvis-bot/src/index.js:8831", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in jarvis-bot/src/index.js:8831"}, "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-2bbe0076165f6b77", "name": "Insecure pattern 'weak_hash' in jarvis-bot/src/social.js:145", "shortDescription": {"text": "Insecure pattern 'weak_hash' in jarvis-bot/src/social.js:145"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f04b3ca9b628998", "name": "Insecure pattern 'exec_used' in jarvis-bot/src/nyx.js:113", "shortDescription": {"text": "Insecure pattern 'exec_used' in jarvis-bot/src/nyx.js:113"}, "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-6767cb22eb94785a", "name": "Insecure pattern 'node_child_process' in jarvis-bot/src/nyx.js:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in jarvis-bot/src/nyx.js:21"}, "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-2f213a336985d7ac", "name": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/nyx.js:553", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/nyx.js:553"}, "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-fb0620395be57c28", "name": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/theai-dashboard.js:309", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/theai-dashboard.js:309"}, "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-a28f315b83a5bff6", "name": "Insecure pattern 'node_child_process' in docs/architecture/ipfs-contribution-graph-spec/ipfs-contribution-graph-spec.htm", "shortDescription": {"text": "Insecure pattern 'node_child_process' in docs/architecture/ipfs-contribution-graph-spec/ipfs-contribution-graph-spec.html:76"}, "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-b17709b1a49eef2b", "name": "Insecure pattern 'node_child_process' in scripts/weekly-digest.js:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/weekly-digest.js:21"}, "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-5f008974d95e38bb", "name": "Insecure pattern 'node_child_process' in scripts/bd-toolkit.js:31", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/bd-toolkit.js:31"}, "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-814e115f84a09280", "name": "Insecure pattern 'cors_wildcard' in cogproof/src/api/server.js:50", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in cogproof/src/api/server.js:50"}, "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-dcb659e0e29ced7d", "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@v4 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-e958862cf5863f46", "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-9108f200712682bb", "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@v4 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-9e69da2705d7aba7", "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-0d43da25bc1ff5ed", "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@v4 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-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/upload-artifact@v4 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-7f1e4527e6fecffa", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "superfly/flyctl-actions/setup-flyctl@master 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": "high", "confidence": 1.0}}, {"id": "scanner-21aa0c39a7c1ca23", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "foundry-rs/foundry-toolchain@v1 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": "medium", "confidence": 1.0}}, {"id": "scanner-a7e7a76a566ddcc2", "name": "Very large file: frontend/src/utils/rosetta-engine.js (3299 lines)", "shortDescription": {"text": "Very large file: frontend/src/utils/rosetta-engine.js (3299 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-3526e1a6b0b47900", "name": "Very large file: frontend/src/components/JarvisPage.jsx (1313 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/JarvisPage.jsx (1313 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-8ca51316a997005b", "name": "Very large file: frontend/src/components/SwapCore.jsx (1561 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/SwapCore.jsx (1561 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-60f25632d41f9dca", "name": "Very large file: frontend/src/components/RosettaPage.jsx (6783 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/RosettaPage.jsx (6783 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-7a785fb8f47edc48", "name": "Very large file: frontend/src/components/SmartContractPage.jsx (1102 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/SmartContractPage.jsx (1102 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-766a34eee1b6654a", "name": "Very large file: frontend/src/components/TokenUnlockPage.jsx (1085 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/TokenUnlockPage.jsx (1085 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-0a8741ce7f7419e3", "name": "Very large file: frontend/src/components/PersonalityExplainer.jsx (1284 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/PersonalityExplainer.jsx (1284 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-80340eaa286b9d52", "name": "Very large file: frontend/src/components/JarvisOSPage.jsx (1736 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/JarvisOSPage.jsx (1736 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-1604c83a34773ca4", "name": "Very large file: frontend/src/components/VibeNamesPage.jsx (1109 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/VibeNamesPage.jsx (1109 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-1f8f53d1734d1e13", "name": "Very large file: frontend/src/components/JobMarket.jsx (1192 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/JobMarket.jsx (1192 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-9e5cdcc062d706f2", "name": "Very large file: frontend/src/components/GameTheoryPage.jsx (1245 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/GameTheoryPage.jsx (1245 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-3b2cab6e4096d142", "name": "Very large file: frontend/src/components/RecoverySetup.jsx (1348 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/RecoverySetup.jsx (1348 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-a02b1664200a47a0", "name": "Very large file: jarvis-bot/src/tools-education.js (941 lines)", "shortDescription": {"text": "Very large file: jarvis-bot/src/tools-education.js (941 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-5e0b9ee48a61629f", "name": "Very large file: jarvis-bot/src/claude.js (2608 lines)", "shortDescription": {"text": "Very large file: jarvis-bot/src/claude.js (2608 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-9d5d1f88b01a5deb", "name": "Very large file: jarvis-bot/src/memory.js (962 lines)", "shortDescription": {"text": "Very large file: jarvis-bot/src/memory.js (962 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-0bd4a4ed3d387d03", "name": "Very large file: jarvis-bot/src/web-api.js (1571 lines)", "shortDescription": {"text": "Very large file: jarvis-bot/src/web-api.js (1571 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-74f5882e451820c1", "name": "Very large file: jarvis-bot/src/rosetta.js (1389 lines)", "shortDescription": {"text": "Very large file: jarvis-bot/src/rosetta.js (1389 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-fa2d8ef8c1c24da9", "name": "Very large file: jarvis-bot/src/llm-provider.js (2271 lines)", "shortDescription": {"text": "Very large file: jarvis-bot/src/llm-provider.js (2271 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-cc39e5b9d92e2d33", "name": "Very large file: jarvis-bot/src/index.js (9640 lines)", "shortDescription": {"text": "Very large file: jarvis-bot/src/index.js (9640 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-8845ba258ea59679", "name": "Very large file: ckb/tests/src/fuzz.rs (2353 lines)", "shortDescription": {"text": "Very large file: ckb/tests/src/fuzz.rs (2353 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-e2e81bf13014924b", "name": "Very large file: ckb/tests/src/integration.rs (2148 lines)", "shortDescription": {"text": "Very large file: ckb/tests/src/integration.rs (2148 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-ee00abbaff3dc6f4", "name": "Very large file: ckb/tests/src/adversarial.rs (1480 lines)", "shortDescription": {"text": "Very large file: ckb/tests/src/adversarial.rs (1480 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-16acbe613f85375f", "name": "Very large file: ckb/lib/types/src/lib.rs (1706 lines)", "shortDescription": {"text": "Very large file: ckb/lib/types/src/lib.rs (1706 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-7668c7456be7c2a8", "name": "Very large file: ckb/lib/lending-math/src/lib.rs (2127 lines)", "shortDescription": {"text": "Very large file: ckb/lib/lending-math/src/lib.rs (2127 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-929e487b0a8ee2e9", "name": "Very large file: ckb/sdk/src/flashloan.rs (2551 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/flashloan.rs (2551 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-c04ec762599ecf3e", "name": "Very large file: ckb/sdk/src/data_feed.rs (2938 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/data_feed.rs (2938 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-5ee2df1633e5bdbe", "name": "Very large file: ckb/sdk/src/monitoring.rs (2990 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/monitoring.rs (2990 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-06b2cd4afe115d46", "name": "Very large file: ckb/sdk/src/orderbook.rs (2786 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/orderbook.rs (2786 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-efe1cce1c527113b", "name": "Very large file: ckb/sdk/src/validator.rs (2934 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/validator.rs (2934 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-1aa817ab47019332", "name": "Very large file: ckb/sdk/src/auction_v2.rs (2742 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/auction_v2.rs (2742 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-a691da9673f92d30", "name": "Very large file: ckb/sdk/src/vesting.rs (2642 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/vesting.rs (2642 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-a484283f82de51bd", "name": "Very large file: ckb/sdk/src/scheduler.rs (3368 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/scheduler.rs (3368 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-758bf95903b197ee", "name": "Very large file: ckb/sdk/src/identity.rs (2800 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/identity.rs (2800 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-9b55af2cc3f73811", "name": "Very large file: ckb/sdk/src/token_economics.rs (2376 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/token_economics.rs (2376 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-e99399223e075a30", "name": "Very large file: ckb/sdk/src/prediction.rs (3410 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/prediction.rs (3410 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-1f85e1796cf68537", "name": "Very large file: ckb/sdk/src/lib.rs (3954 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/lib.rs (3954 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-f8cd3532d5595f2f", "name": "Very large file: ckb/sdk/src/staking.rs (2109 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/staking.rs (2109 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-251271a2050d85f6", "name": "Very large file: ckb/sdk/src/notify.rs (2553 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/notify.rs (2553 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-5d9b6bc82a0efb65", "name": "Very large file: ckb/sdk/src/simulator.rs (3026 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/simulator.rs (3026 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-37176498d02a1b25", "name": "Very large file: ckb/sdk/src/compliance.rs (2428 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/compliance.rs (2428 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-42f6903c69a0379d", "name": "Very large file: ckb/sdk/src/accounting.rs (2948 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/accounting.rs (2948 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-64dfd50fa7028333", "name": "Very large file: ckb/sdk/src/checkpoint.rs (3047 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/checkpoint.rs (3047 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-5e8eab3497be6706", "name": "Very large file: ckb/sdk/src/testing.rs (2649 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/testing.rs (2649 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-cc04650aa8f3b9ef", "name": "Very large file: ckb/sdk/src/snapshot.rs (2926 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/snapshot.rs (2926 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-a0775213966f8e4f", "name": "Very large file: ckb/sdk/src/liquidity.rs (2701 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/liquidity.rs (2701 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-46375df5299d94cc", "name": "Very large file: ckb/sdk/src/math_ext.rs (1954 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/math_ext.rs (1954 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-9f33e967ad4c3e96", "name": "Very large file: ckb/sdk/src/circuit_breaker.rs (3330 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/circuit_breaker.rs (3330 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-ed606ccefbc9e1cc", "name": "Very large file: ckb/sdk/src/metrics.rs (2869 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/metrics.rs (2869 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-d1603ae7bf4c6678", "name": "Very large file: ckb/sdk/src/escrow.rs (2811 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/escrow.rs (2811 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-4922cd28ade4bb6d", "name": "Very large file: ckb/sdk/src/strategy.rs (3327 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/strategy.rs (3327 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-2625f38da4fa33ad", "name": "Very large file: ckb/sdk/src/antibot.rs (3159 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/antibot.rs (3159 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-f8029da6484e1c11", "name": "Very large file: ckb/sdk/src/router.rs (3508 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/router.rs (3508 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-80f1ac604e2e50b8", "name": "Very large file: ckb/sdk/src/cache.rs (2762 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/cache.rs (2762 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-d374afc3bb61bad4", "name": "Very large file: ckb/sdk/src/serde_cell.rs (2837 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/serde_cell.rs (2837 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-a1821b3590cb7972", "name": "Very large file: ckb/sdk/src/cross_chain.rs (2553 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/cross_chain.rs (2553 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-65b69d956e909fd3", "name": "Very large file: ckb/sdk/src/arbitrage.rs (2881 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/arbitrage.rs (2881 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-b4da3d77003f54df", "name": "Very large file: ckb/sdk/src/dao_voting.rs (2637 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/dao_voting.rs (2637 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-6e6439872076aef9", "name": "Very large file: ckb/sdk/src/auction.rs (3191 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/auction.rs (3191 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-6f192c11a298eb1b", "name": "Very large file: ckb/sdk/src/governance.rs (3167 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/governance.rs (3167 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-d48e873965d156da", "name": "Very large file: ckb/sdk/src/bridge.rs (2676 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/bridge.rs (2676 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-d30c9bef01e89d56", "name": "Very large file: ckb/sdk/src/settlement.rs (3213 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/settlement.rs (3213 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-43dcf5c810c85b40", "name": "Very large file: ckb/sdk/src/incentive.rs (2548 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/incentive.rs (2548 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-98194341b5309847", "name": "Very large file: ckb/sdk/src/lending.rs (2662 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/lending.rs (2662 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-45217c61c86a8cf4", "name": "Very large file: ckb/sdk/src/emission.rs (2464 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/emission.rs (2464 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-80552a23e9e04254", "name": "Very large file: ckb/sdk/src/upgrade.rs (2686 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/upgrade.rs (2686 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-d4d000f3c7fe7e6e", "name": "Very large file: ckb/sdk/src/treasury.rs (3023 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/treasury.rs (3023 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-23482f2d8556d129", "name": "Very large file: ckb/sdk/src/migration.rs (2261 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/migration.rs (2261 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-d5e803971602d05a", "name": "Very large file: ckb/sdk/src/keeper.rs (3586 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/keeper.rs (3586 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-e54cdd070c08f79d", "name": "Very large file: ckb/sdk/src/gauge.rs (2653 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/gauge.rs (2653 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-550077be0204207a", "name": "Very large file: ckb/sdk/src/whitelist.rs (2755 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/whitelist.rs (2755 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-436617b1b29d353a", "name": "Very large file: ckb/sdk/src/pricing.rs (2882 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/pricing.rs (2882 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-3a87de9a61e88539", "name": "Very large file: ckb/sdk/src/pool.rs (2816 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/pool.rs (2816 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-c9ec8a746f564d88", "name": "Very large file: ckb/sdk/src/batch.rs (2823 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/batch.rs (2823 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-a91526422cb9f6ec", "name": "Very large file: ckb/sdk/src/multisig.rs (2868 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/multisig.rs (2868 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-b716330995a172c1", "name": "Very large file: ckb/sdk/src/risk.rs (3741 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/risk.rs (3741 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-392193ee29fb0a44", "name": "Very large file: ckb/sdk/src/collector.rs (2540 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/collector.rs (2540 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-f893e1246a6e6a73", "name": "Very large file: ckb/sdk/src/protocol_state.rs (2921 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/protocol_state.rs (2921 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-7f90e48084386285", "name": "Very large file: ckb/sdk/src/config.rs (2619 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/config.rs (2619 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-c0aaf5836d936eb7", "name": "Very large file: ckb/sdk/src/insurance.rs (2934 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/insurance.rs (2934 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-368f2f0b69ddc87f", "name": "Very large file: ckb/sdk/src/rate_limiter.rs (2611 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/rate_limiter.rs (2611 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-464a0b302281ea0f", "name": "Very large file: ckb/sdk/src/fees.rs (3220 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/fees.rs (3220 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-c6c92fbd6a82ac43", "name": "Very large file: ckb/sdk/src/indexer.rs (2580 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/indexer.rs (2580 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-5d481b797cc3e5bf", "name": "Very large file: ckb/sdk/src/knowledge.rs (3373 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/knowledge.rs (3373 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-ff6897c7998c1f48", "name": "Very large file: ckb/sdk/src/portfolio.rs (4402 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/portfolio.rs (4402 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-58cc98f353eb04ce", "name": "Very large file: ckb/sdk/src/reputation.rs (2631 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/reputation.rs (2631 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-3c7deca5350cae04", "name": "Very large file: ckb/sdk/src/rollup.rs (2956 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/rollup.rs (2956 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-b7cef86f3d8745bd", "name": "Very large file: ckb/sdk/src/order_router.rs (2933 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/order_router.rs (2933 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-d77cfa8e58f3df65", "name": "Very large file: ckb/sdk/src/permission.rs (3020 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/permission.rs (3020 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-207e2ac96e75659a", "name": "Very large file: ckb/sdk/src/consensus.rs (2941 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/consensus.rs (2941 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-3fc85106887df2f3", "name": "Very large file: ckb/sdk/src/delegate.rs (2863 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/delegate.rs (2863 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-6ae064cf9e0e400b", "name": "Very large file: ckb/sdk/src/analytics.rs (2597 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/analytics.rs (2597 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-7e56560bf34d1e3f", "name": "Very large file: ckb/sdk/src/token.rs (3851 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/token.rs (3851 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-7ca3117b5a666080", "name": "Very large file: ckb/sdk/src/market_maker.rs (2906 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/market_maker.rs (2906 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-b3d1df6c125ec520", "name": "Very large file: ckb/sdk/src/assembler.rs (2989 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/assembler.rs (2989 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-6730b302b6a7f5d0", "name": "Very large file: ckb/sdk/src/rewards.rs (2564 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/rewards.rs (2564 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-018069967969d94b", "name": "Very large file: ckb/sdk/src/miner.rs (2979 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/miner.rs (2979 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-fc9eeb0da8a933b2", "name": "Very large file: ckb/sdk/src/oracle.rs (2134 lines)", "shortDescription": {"text": "Very large file: ckb/sdk/src/oracle.rs (2134 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "76 test file(s) for 903 source file(s) (ratio 0.08). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9e94dee9f37e2093", "name": "169 TODO/FIXME markers", "shortDescription": {"text": "169 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0463a73bef1f651", "name": "Node manifest has dependencies but no lockfile: jarvis-bot/src/chatterbox/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: jarvis-bot/src/chatterbox/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 1271 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 589 placeholder/mock markers across 188 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "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 license, 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-c37b2ef6af1adb65", "name": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/feedback_crash-resilient-memory.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/feedback_crash-resilient-memory.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-6844298ebaf42191", "name": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/feedback_50pct-context-reboot.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/feedback_50pct-context-reboot.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-810d1b1a7a863eab", "name": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/autopilot-loop.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/autopilot-loop.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-411f7ddab6be5b1d", "name": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/primitive_verbal-to-gate.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/primitive_verbal-to-gate.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-455847485a85530d", "name": "Agent authority lacks a verifier contract: jarvis-template/.claude/session-chain/README.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: jarvis-template/.claude/session-chain/README.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-71442e5a4ef940aa", "name": "Commented-code block (16 lines) in frontend/src/utils/trustChain.js:624", "shortDescription": {"text": "Commented-code block (16 lines) in frontend/src/utils/trustChain.js:624"}, "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-3e77294995af0218", "name": "Commented-code block (5 lines) in frontend/src/utils/sybilDetection.js:48", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/sybilDetection.js:48"}, "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-30b0e8fe8accb2b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/utils/sybilDetection.js:514", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/utils/sybilDetection.js:514"}, "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-a3cf0bc99380b1fb", "name": "Commented-code block (5 lines) in frontend/src/utils/protocol-constants.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/protocol-constants.js:8"}, "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-ca4448d9d3b15cbd", "name": "Commented-code block (5 lines) in frontend/src/utils/soundboard-constants.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/soundboard-constants.js:1"}, "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-09e3c0c0af618542", "name": "Commented-code block (6 lines) in frontend/src/utils/vibe-tokenomics.js:11", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/utils/vibe-tokenomics.js:11"}, "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-5423044ab059aed8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/utils/proofs.js:322", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/utils/proofs.js:322"}, "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-ff1fa21a7981d58c", "name": "Commented-code block (5 lines) in frontend/src/utils/finality.js:42", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/finality.js:42"}, "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-864e9fef37f0ed7c", "name": "Commented-code block (5 lines) in frontend/src/utils/rosetta-engine.js:649", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/rosetta-engine.js:649"}, "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-aa8298aaae4d6be1", "name": "Commented-code block (5 lines) in frontend/src/utils/ckb-constants.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/ckb-constants.js:3"}, "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-5ffb8bc82e96b3c6", "name": "Commented-code block (5 lines) in frontend/src/utils/constants.js:12", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/constants.js:12"}, "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-ab43e4047c64c908", "name": "Commented-code block (5 lines) in frontend/src/components/TreasuryPage.jsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/TreasuryPage.jsx:8"}, "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-f2e56962678e33a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/CRPCPage.jsx:356", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/CRPCPage.jsx:356"}, "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-659520da3ac82344", "name": "Commented-code block (5 lines) in frontend/src/components/DAOToolsPage.jsx:9", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/DAOToolsPage.jsx:9"}, "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-f0615bc0104a3f25", "name": "Commented-code block (5 lines) in frontend/src/components/RosettaPage.jsx:3101", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/RosettaPage.jsx:3101"}, "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-ce8ddb0a93a8fd49", "name": "Commented-code block (7 lines) in frontend/src/components/IdeaPage.jsx:9", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/IdeaPage.jsx:9"}, "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-1025a00b7c5f8080", "name": "Commented-code block (5 lines) in frontend/src/components/OnboardingTour.jsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/OnboardingTour.jsx:4"}, "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-7230722061698741", "name": "Commented-code block (5 lines) in frontend/src/components/DePINHub.jsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/DePINHub.jsx: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-3d19ce1f4847e965", "name": "Commented-code block (5 lines) in frontend/src/components/FeeCalculatorPage.jsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/FeeCalculatorPage.jsx:8"}, "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-22d320975f8e8782", "name": "Commented-code block (7 lines) in frontend/src/components/MessageBoard.jsx:8", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/MessageBoard.jsx:8"}, "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-5a830898ea4ffeea", "name": "Commented-code block (5 lines) in frontend/src/components/PersonalityExplainer.jsx:151", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/PersonalityExplainer.jsx:151"}, "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-e5bcd8171527f60b", "name": "Commented-code block (5 lines) in frontend/src/components/CommandPalette.jsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/CommandPalette.jsx:5"}, "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-1fb45fca9d2abc9f", "name": "Commented-code block (5 lines) in frontend/src/components/ProposalDetailPage.jsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ProposalDetailPage.jsx:8"}, "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-06c3d6a7521a018b", "name": "Commented-code block (5 lines) in frontend/src/components/GovernancePage.jsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/GovernancePage.jsx: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-f2aa856e1426d664", "name": "Commented-code block (5 lines) in frontend/src/components/InfoFiPage.jsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/InfoFiPage.jsx: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-cec7506b96e6d5c5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/InfoFiPage.jsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/InfoFiPage.jsx:57"}, "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-40bd5cc9ecdca5b8", "name": "Commented-code block (5 lines) in frontend/src/components/GovernanceDelegatePage.jsx:9", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/GovernanceDelegatePage.jsx:9"}, "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-85859ab3900806ec", "name": "Commented-code block (8 lines) in frontend/src/components/Hero3DScene.jsx:7", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/Hero3DScene.jsx: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-90da4b8d1ea6f43d", "name": "Commented-code block (5 lines) in frontend/src/components/SafariGuide.jsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/SafariGuide.jsx:6"}, "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-c78ccc2d313bb67a", "name": "Commented-code block (5 lines) in frontend/src/components/MedicineWheel.jsx:12", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/MedicineWheel.jsx:12"}, "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-6d0479c734bf0f6a", "name": "Commented-code block (6 lines) in frontend/src/components/RewardsPage.jsx:31", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/RewardsPage.jsx:31"}, "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-7e8807376aa9a554", "name": "Commented-code block (8 lines) in frontend/src/components/MindMesh.jsx:10", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/MindMesh.jsx:10"}, "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-a98b7948157e02f5", "name": "Commented-code block (5 lines) in frontend/src/components/ui/TokenBadge.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/TokenBadge.jsx:3"}, "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-b6dace573cb08b5f", "name": "Commented-code block (5 lines) in frontend/src/components/ui/Timeline.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/Timeline.jsx:3"}, "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-10ee7ea2a04bfbf7", "name": "Commented-code block (8 lines) in frontend/src/components/ui/PriceChart.jsx:8", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/ui/PriceChart.jsx:8"}, "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-0b3f59b15fc16238", "name": "Commented-code block (5 lines) in frontend/src/components/ui/BatchCountdown.jsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/BatchCountdown.jsx:5"}, "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-b7f92b79b994fa3c", "name": "Commented-code block (5 lines) in frontend/src/components/ui/ChainBadge.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/ChainBadge.jsx:1"}, "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-c0c91b9f9f96391e", "name": "Commented-code block (6 lines) in frontend/src/components/ui/Ouroboros.jsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/ui/Ouroboros.jsx:5"}, "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-8222e2b81bd5d4b0", "name": "Commented-code block (5 lines) in frontend/src/components/ui/terminal/TerminalButton.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/terminal/TerminalButton.jsx:1"}, "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-4c91f63a0407f5cb", "name": "Commented-code block (6 lines) in frontend/src/components/ui/terminal/Accent3DScene.jsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/ui/terminal/Accent3DScene.jsx:5"}, "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-1c554f241934e196", "name": "Commented-code block (6 lines) in frontend/src/components/ui/terminal/TerminalPanel.jsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/ui/terminal/TerminalPanel.jsx:6"}, "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-e1bc1704bd58b160", "name": "Commented-code block (7 lines) in frontend/src/components/ui/terminal/Accent3D.jsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/ui/terminal/Accent3D.jsx:4"}, "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-5680f146390ba8a8", "name": "Commented-code block (7 lines) in frontend/src/components/ui/terminal/index.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/ui/terminal/index.js:1"}, "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-047b2a78b168373e", "name": "Commented-code block (8 lines) in frontend/src/components/ui/terminal/OpSig.jsx:9", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/ui/terminal/OpSig.jsx:9"}, "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-58160733b5090e42", "name": "Commented-code block (5 lines) in frontend/src/contexts/ContributionsContext.jsx:338", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/contexts/ContributionsContext.jsx:338"}, "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-e4739e71e46f4615", "name": "Commented-code block (8 lines) in frontend/src/contexts/MessagingContext.jsx:10", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/contexts/MessagingContext.jsx:10"}, "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-daecf553c7a0d237", "name": "Commented-code block (6 lines) in frontend/src/hooks/useUserLevel.jsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/hooks/useUserLevel.jsx:6"}, "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-6b36a6a8c067d597", "name": "Commented-code block (5 lines) in frontend/src/hooks/usePriceFeed.jsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/usePriceFeed.jsx:4"}, "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-248829df2b4eb3a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/usePriceFeed.jsx:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/usePriceFeed.jsx:68"}, "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-0c6239748b19bbcd", "name": "Commented-code block (7 lines) in frontend/src/hooks/useCKBWallet.jsx:5", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/hooks/useCKBWallet.jsx:5"}, "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-e1dda0eea40f73f8", "name": "Commented-code block (7 lines) in frontend/src/hooks/useAnalytics.js:52", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/hooks/useAnalytics.js:52"}, "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-ff4796e8511da5c2", "name": "Commented-code block (5 lines) in frontend/src/hooks/useSoundboard.jsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useSoundboard.jsx:8"}, "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-252168beede960ac", "name": "Commented-code block (5 lines) in frontend/src/hooks/useMessaging.js:13", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useMessaging.js:13"}, "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-30b27f33209350a2", "name": "Commented-code block (6 lines) in frontend/src/hooks/useCKBContracts.jsx:12", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/hooks/useCKBContracts.jsx:12"}, "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-9c12c5362ec7a7fa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useCKBContracts.jsx:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useCKBContracts.jsx: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-4077dc00b6f794ab", "name": "Commented-code block (7 lines) in frontend/src/hooks/useInfinityStones.jsx:9", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/hooks/useInfinityStones.jsx:9"}, "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-82fd36fb999432bb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useJarvis.jsx:204", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useJarvis.jsx:204"}, "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-aacc2cb1bac9865f", "name": "Commented-code block (5 lines) in frontend/src/hooks/useSwap.jsx:85", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useSwap.jsx:85"}, "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-b8d9469ebebe2ce3", "name": "Commented-code block (5 lines) in frontend/src/hooks/useChains.jsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useChains.jsx:5"}, "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-74266b7ae3b09194", "name": "Commented-code block (5 lines) in frontend/src/hooks/useContractRead.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useContractRead.jsx:3"}, "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-61fb25b45c4dbdf5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useMindMesh.jsx:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useMindMesh.jsx:25"}, "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-83e528b8a5d216c0", "name": "Commented-code block (5 lines) in frontend/src/hooks/useTokenPrice.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useTokenPrice.jsx:3"}, "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-fc0e14a07965d2c6", "name": "Network/subprocess call without timeout or try/except \u2014 jarvis-bot/serve-bridge.py:17", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 jarvis-bot/serve-bridge.py:17"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6eca8bf71f413d6d", "name": "Commented-code block (5 lines) in jarvis-bot/test/rosetta.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/test/rosetta.test.js:1"}, "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-14cd831acda1c7cb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/webapp/src/lib/api.js:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/webapp/src/lib/api.js:7"}, "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-d7f31d856f6995ed", "name": "Commented-code block (5 lines) in jarvis-bot/src/tools-alpha.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/tools-alpha.js:6"}, "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-ded0520fdd7806f2", "name": "Commented-code block (7 lines) in jarvis-bot/src/tools-derivatives.js:6", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/tools-derivatives.js:6"}, "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-98f43cfba474a0e0", "name": "Commented-code block (7 lines) in jarvis-bot/src/constellation.js:6", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/constellation.js:6"}, "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-2535065502ac5286", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/constellation.js:266", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/constellation.js:266"}, "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-8f4380bb67807b36", "name": "Commented-code block (6 lines) in jarvis-bot/src/vibe-emissions.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/vibe-emissions.js:6"}, "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-fbc617ad9eeab7f3", "name": "Commented-code block (5 lines) in jarvis-bot/src/mi-host.js:12", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/mi-host.js:12"}, "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-566b8afe56a3854e", "name": "Commented-code block (7 lines) in jarvis-bot/src/shard-dedup.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/shard-dedup.js: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-8d421a50b0b5d8b9", "name": "Commented-code block (7 lines) in jarvis-bot/src/tools-memehunter.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/tools-memehunter.js:3"}, "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-aab5659d758cc813", "name": "Commented-code block (7 lines) in jarvis-bot/src/mi-bandit.js:6", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/mi-bandit.js:6"}, "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-85ba54e4c7f8b17e", "name": "Legacy-named symbol `rest_v1` in jarvis-bot/src/tools-education.js:48", "shortDescription": {"text": "Legacy-named symbol `rest_v1` in jarvis-bot/src/tools-education.js:48"}, "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-aea93f6e30934ac8", "name": "Commented-code block (12 lines) in jarvis-bot/src/tools-education.js:6", "shortDescription": {"text": "Commented-code block (12 lines) in jarvis-bot/src/tools-education.js:6"}, "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-fde65e9ba7f2e323", "name": "Commented-code block (7 lines) in jarvis-bot/src/x402.js:15", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/x402.js:15"}, "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-488073dacf481d34", "name": "Commented-code block (5 lines) in jarvis-bot/src/ckb-generator.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/ckb-generator.js: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-a5122fa42a8eef5a", "name": "Commented-code block (6 lines) in jarvis-bot/src/attribution-bridge.js:9", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/attribution-bridge.js:9"}, "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-27cd65ceb577b132", "name": "Commented-code block (5 lines) in jarvis-bot/src/consensus.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/consensus.js:6"}, "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-9fc05650e6a65d67", "name": "Commented-code block (5 lines) in jarvis-bot/src/data-economy.js:13", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/data-economy.js:13"}, "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-ef4b3eb012700c93", "name": "Commented-code block (15 lines) in jarvis-bot/src/tools.js:6", "shortDescription": {"text": "Commented-code block (15 lines) in jarvis-bot/src/tools.js:6"}, "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-32518ff6ddab9643", "name": "Commented-code block (5 lines) in jarvis-bot/src/claude.js:824", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/claude.js:824"}, "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-8751e73887333fd0", "name": "Commented-code block (5 lines) in jarvis-bot/src/tools-archive.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/tools-archive.js:3"}, "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-96bb3cb7aeb2bf3a", "name": "Commented-code block (5 lines) in jarvis-bot/src/knowledge-chain.js:17", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/knowledge-chain.js:17"}, "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-76e9c5548a5c9459", "name": "Commented-code block (9 lines) in jarvis-bot/src/reputation-consensus.js:6", "shortDescription": {"text": "Commented-code block (9 lines) in jarvis-bot/src/reputation-consensus.js:6"}, "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-cf53c40832c38c8b", "name": "Commented-code block (5 lines) in jarvis-bot/src/compute-economics.js:44", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/compute-economics.js:44"}, "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-5901506d25fb5f5c", "name": "Commented-code block (7 lines) in jarvis-bot/src/tools-scanner.js:6", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/tools-scanner.js:6"}, "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-450531661127e9aa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/pantheon.js:150", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/pantheon.js:150"}, "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-59adf071fd8164f8", "name": "Commented-code block (8 lines) in jarvis-bot/src/tools-predictions.js:7", "shortDescription": {"text": "Commented-code block (8 lines) in jarvis-bot/src/tools-predictions.js: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-4e42642593154638", "name": "Commented-code block (12 lines) in jarvis-bot/src/tools-engagement.js:3", "shortDescription": {"text": "Commented-code block (12 lines) in jarvis-bot/src/tools-engagement.js:3"}, "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-2bce38296f42aba6", "name": "Commented-code block (10 lines) in jarvis-bot/src/tools-vibeswap.js:6", "shortDescription": {"text": "Commented-code block (10 lines) in jarvis-bot/src/tools-vibeswap.js:6"}, "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-b44cbc5926306422", "name": "Commented-code block (5 lines) in jarvis-bot/src/knowledge-bridge.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/knowledge-bridge.js:3"}, "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-2f5e7c5b6f2239c5", "name": "Commented-code block (9 lines) in jarvis-bot/src/verkle-context.js:9", "shortDescription": {"text": "Commented-code block (9 lines) in jarvis-bot/src/verkle-context.js:9"}, "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-b41f3ee9f64bb5eb", "name": "Commented-code block (5 lines) in jarvis-bot/src/infofi.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/infofi.js: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-204ac7c83dc42ac2", "name": "Commented-code block (11 lines) in jarvis-bot/src/tools-alerts.js:3", "shortDescription": {"text": "Commented-code block (11 lines) in jarvis-bot/src/tools-alerts.js:3"}, "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-72ddf61de607d638", "name": "Commented-code block (6 lines) in jarvis-bot/src/learning.js:8", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/learning.js:8"}, "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-038123a9a0198ac6", "name": "Commented-code block (6 lines) in jarvis-bot/src/trading.js:7", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/trading.js: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-9dde6cefa60e008b", "name": "Legacy-named symbol `rest_v1` in jarvis-bot/src/tools-utility.js:87", "shortDescription": {"text": "Legacy-named symbol `rest_v1` in jarvis-bot/src/tools-utility.js:87"}, "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-47d706c980c176c8", "name": "Commented-code block (9 lines) in jarvis-bot/src/tools-utility.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in jarvis-bot/src/tools-utility.js:3"}, "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-3dee20ea9d74bf18", "name": "Commented-code block (9 lines) in jarvis-bot/src/archive.js:18", "shortDescription": {"text": "Commented-code block (9 lines) in jarvis-bot/src/archive.js: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-05f3edc1582d555c", "name": "Commented-code block (5 lines) in jarvis-bot/src/memory.js:237", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/memory.js:237"}, "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-eff2d1c19e9bb9a9", "name": "Commented-code block (7 lines) in jarvis-bot/src/self-eval.js:9", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/self-eval.js:9"}, "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-e2148347ca163a29", "name": "Commented-code block (13 lines) in jarvis-bot/src/web-api.js:7", "shortDescription": {"text": "Commented-code block (13 lines) in jarvis-bot/src/web-api.js: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-13cdaf20da08b04e", "name": "Commented-code block (6 lines) in jarvis-bot/src/primitive-gate.js:10", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/primitive-gate.js:10"}, "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-11c075e32cdc74cf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/primitive-gate.js:251", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/primitive-gate.js:251"}, "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-77307dfdd5cbf0cf", "name": "Commented-code block (7 lines) in jarvis-bot/src/voice-gate.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/voice-gate.js:3"}, "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-04c0b688c7661481", "name": "Commented-code block (5 lines) in jarvis-bot/src/passive-attribution.js:10", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/passive-attribution.js:10"}, "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-5e4687b91c5aa442", "name": "Commented-code block (5 lines) in jarvis-bot/src/self-improve.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/self-improve.js: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-8e2788319fa46221", "name": "Commented-code block (9 lines) in jarvis-bot/src/tools-fun.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in jarvis-bot/src/tools-fun.js:3"}, "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-853f280a8a328cf1", "name": "Commented-code block (7 lines) in jarvis-bot/src/tools-scheduler.js:6", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/tools-scheduler.js:6"}, "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-ec14f4c3c232b167", "name": "Commented-code block (5 lines) in jarvis-bot/src/tools-catchup.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/tools-catchup.js:6"}, "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-242f62a7998c5b03", "name": "Commented-code block (12 lines) in jarvis-bot/src/tools-social.js:3", "shortDescription": {"text": "Commented-code block (12 lines) in jarvis-bot/src/tools-social.js:3"}, "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-e9ab0976ef7bcc70", "name": "Commented-code block (5 lines) in jarvis-bot/src/crpc.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/crpc.js:6"}, "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-8d8d1c2201171315", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/crpc.js:769", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/crpc.js:769"}, "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-beedb43994b4d3db", "name": "Commented-code block (5 lines) in jarvis-bot/src/intelligence.js:14", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/intelligence.js:14"}, "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-6c062c4f297004a1", "name": "Commented-code block (6 lines) in jarvis-bot/src/workflow-router.js:7", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/workflow-router.js: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-e1c55e1d233f2687", "name": "Commented-code block (6 lines) in jarvis-bot/src/rosetta.js:12", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/rosetta.js:12"}, "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-62227fca9e2fc449", "name": "Legacy-named symbol `hadLegacy` in jarvis-bot/src/context-memory.js:353", "shortDescription": {"text": "Legacy-named symbol `hadLegacy` in jarvis-bot/src/context-memory.js:353"}, "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-5cc148af0e6dc0aa", "name": "Commented-code block (5 lines) in jarvis-bot/src/context-memory.js:14", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/context-memory.js:14"}, "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-bb05ed81775fab31", "name": "Commented-code block (5 lines) in jarvis-bot/src/archive-mirror.js:117", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/archive-mirror.js:117"}, "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-49f27080c9b14502", "name": "Commented-code block (7 lines) in jarvis-bot/src/idea-pipeline.js:6", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/idea-pipeline.js:6"}, "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-ec5e65c98ec0e1fc", "name": "Commented-code block (6 lines) in jarvis-bot/src/tools-security.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/tools-security.js:6"}, "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-56dff39bb7ae7eb9", "name": "Commented-code block (6 lines) in jarvis-bot/src/shapley-compute.js:12", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/shapley-compute.js:12"}, "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-55e6ba9fa0982275", "name": "Commented-code block (10 lines) in jarvis-bot/src/tools-portfolio.js:6", "shortDescription": {"text": "Commented-code block (10 lines) in jarvis-bot/src/tools-portfolio.js:6"}, "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-79fffab472abb5dd", "name": "Commented-code block (6 lines) in jarvis-bot/src/directives.js:17", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/directives.js:17"}, "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-ddf51fadfb823a2e", "name": "Legacy-named symbol `eleven_multilingual_v2` in jarvis-bot/src/config.js:128", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in jarvis-bot/src/config.js:128"}, "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-05114d13a16ba3de", "name": "Commented-code block (6 lines) in jarvis-bot/src/dialogue-to-code.js:11", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/dialogue-to-code.js:11"}, "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-a4bbdc1bf1f9a70c", "name": "Commented-code block (7 lines) in jarvis-bot/src/shadow.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/shadow.js: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-18dea9b1ff549102", "name": "Commented-code block (6 lines) in jarvis-bot/src/cross-context.js:39", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/cross-context.js:39"}, "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-67d9b3d4ef29712c", "name": "Commented-code block (6 lines) in jarvis-bot/src/llm-provider.js:67", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/llm-provider.js:67"}, "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-97afa66c75eb57eb", "name": "Commented-code block (10 lines) in jarvis-bot/src/anchor.js:120", "shortDescription": {"text": "Commented-code block (10 lines) in jarvis-bot/src/anchor.js:120"}, "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-69592ba42192e0dd", "name": "Commented-code block (6 lines) in jarvis-bot/src/broadcast.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/broadcast.js:6"}, "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-037088415c4afd35", "name": "Commented-code block (5 lines) in jarvis-bot/src/magnum-opus.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/magnum-opus.js:8"}, "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-19887ed4d0450429", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/web-reader.js:187", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/web-reader.js:187"}, "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-6082adbcdc4e0c19", "name": "Commented-code block (5 lines) in jarvis-bot/src/privacy.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/privacy.js:5"}, "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-ac4e26a031592449", "name": "Commented-code block (7 lines) in jarvis-bot/src/shard.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/shard.js:3"}, "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-f4e760c998ca3229", "name": "Commented-code block (6 lines) in jarvis-bot/src/persona.js:10", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/persona.js:10"}, "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-57035058f7aaa3d4", "name": "Commented-code block (5 lines) in jarvis-bot/src/knowledge-constitution.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/knowledge-constitution.js:8"}, "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-82712eb35c8de187", "name": "Commented-code block (7 lines) in jarvis-bot/src/reply-pacer.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/reply-pacer.js:3"}, "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-2d5d66afe85dc35d", "name": "Commented-code block (6 lines) in jarvis-bot/src/index.js:920", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/index.js:920"}, "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-e2f548dc9e17f670", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/index.js:6050", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/index.js:6050"}, "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-ee36300155f7525c", "name": "Commented-code block (5 lines) in jarvis-bot/src/katarakti.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/katarakti.js:3"}, "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-576e21baee40b34c", "name": "Commented-code block (5 lines) in jarvis-bot/src/router.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/router.js:6"}, "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-4efe194caebc084c", "name": "Commented-code block (9 lines) in jarvis-bot/src/tools-onchain.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in jarvis-bot/src/tools-onchain.js:3"}, "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-365cb9193d843570", "name": "Commented-code block (6 lines) in jarvis-bot/src/task-queue.js:8", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/task-queue.js:8"}, "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-941f29efdc3d1810", "name": "Commented-code block (7 lines) in jarvis-bot/src/operator.js:6", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/operator.js:6"}, "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-480f736e0881ecc8", "name": "Commented-code block (5 lines) in jarvis-bot/src/mi-manifest.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/mi-manifest.js:5"}, "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-35f6592be94bc29f", "name": "Commented-code block (10 lines) in jarvis-bot/src/tools-research.js:6", "shortDescription": {"text": "Commented-code block (10 lines) in jarvis-bot/src/tools-research.js:6"}, "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-4ad71c95ba2087bc", "name": "Commented-code block (5 lines) in jarvis-bot/src/shard-shapley.js:11", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/shard-shapley.js:11"}, "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-4bcbcd7b8a754466", "name": "Commented-code block (5 lines) in jarvis-bot/src/autonomous.js:293", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/autonomous.js:293"}, "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-3fb4f8d1f4b2a159", "name": "Commented-code block (6 lines) in jarvis-bot/src/limni.js:14", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/limni.js:14"}, "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-53a93567c28dcd8c", "name": "Commented-code block (5 lines) in jarvis-bot/src/nervos-talks.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/nervos-talks.js:6"}, "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-647389d519c4772a", "name": "Commented-code block (6 lines) in jarvis-bot/src/tools-xp.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/tools-xp.js:6"}, "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-aa1d174670f0cbf4", "name": "Commented-code block (7 lines) in jarvis-bot/src/hell.js:12", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/hell.js:12"}, "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-18083548c6c895ac", "name": "Commented-code block (7 lines) in jarvis-bot/src/tools-news.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/tools-news.js:3"}, "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-877006026eecf9ad", "name": "Commented-code block (7 lines) in jarvis-bot/src/reward-batcher.js:5", "shortDescription": {"text": "Commented-code block (7 lines) in jarvis-bot/src/reward-batcher.js:5"}, "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-f5541a16534ba44f", "name": "Commented-code block (9 lines) in jarvis-bot/src/nyx.js:6", "shortDescription": {"text": "Commented-code block (9 lines) in jarvis-bot/src/nyx.js:6"}, "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-f7d8171930656d12", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/nyx.js:291", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/nyx.js:291"}, "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-b0308a71a6feb5ef", "name": "Commented-code block (6 lines) in jarvis-bot/src/state-store.js:7", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/state-store.js: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-599011cf66c47882", "name": "Commented-code block (5 lines) in jarvis-bot/src/tts.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/tts.js:5"}, "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-f5bfa54a0da69b11", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/tts.js:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/tts.js: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-b7cb3985b818bba8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/theai-dashboard.js:296", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/theai-dashboard.js:296"}, "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-7eb740dee1315d23", "name": "Commented-code block (6 lines) in jarvis-bot/src/tools-preferences.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/tools-preferences.js:6"}, "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-549571048b1e1677", "name": "Commented-code block (5 lines) in jarvis-bot/src/mining.js:10", "shortDescription": {"text": "Commented-code block (5 lines) in jarvis-bot/src/mining.js:10"}, "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-23b87ac4014e85bb", "name": "Commented-code block (6 lines) in jarvis-bot/src/shards/trading-shard.js:8", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/shards/trading-shard.js:8"}, "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-15705dd277845b92", "name": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/shards/trading-shard.js:223", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/shards/trading-shard.js:223"}, "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-afe84ab21f11d7e1", "name": "Commented-code block (6 lines) in jarvis-bot/src/chatterbox/index.js:14", "shortDescription": {"text": "Commented-code block (6 lines) in jarvis-bot/src/chatterbox/index.js:14"}, "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-bc9f9c2b038f6640", "name": "Commented-code block (5 lines) in oracle/backtest/shapley_reference.py:488", "shortDescription": {"text": "Commented-code block (5 lines) in oracle/backtest/shapley_reference.py:488"}, "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-c175810ed05e8ae2", "name": "Commented-code block (5 lines) in oracle/backtest/guardian_collusion.py:78", "shortDescription": {"text": "Commented-code block (5 lines) in oracle/backtest/guardian_collusion.py:78"}, "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-22f7c9ecd4348a67", "name": "Commented-code block (6 lines) in oracle/feeds/prices/kraken.py:94", "shortDescription": {"text": "Commented-code block (6 lines) in oracle/feeds/prices/kraken.py:94"}, "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-be3aa2152e359de9", "name": "Network/subprocess call without timeout or try/except \u2014 jarvis-template/jarvis-cli.py:403", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 jarvis-template/jarvis-cli.py:403"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c79138f50bfb70ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/services/priceFeed.js:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/services/priceFeed.js:42"}, "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-0becfe9f30bb8c45", "name": "132 env vars used in code but missing from .env.example", "shortDescription": {"text": "132 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_CHAT_ID`, `ALLIUM_API_KEY`, `ARCHIVE_MIRROR_ENABLED`, `ARCHIVE_MIRROR_INTERVAL_MS`, `CEREBRAS_API_KEY`, `CEREBRAS_MODEL`, `CHATTERBOX_BOT_TOKEN`, `CHECKPOINT_REGISTRY` + 124 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0027e313ade46c8f", "name": "Near-duplicate function bodies in 7 places", "shortDescription": {"text": "Near-duplicate function bodies in 7 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\noracle/config.py:validate, oracle/config.py:validate, oracle/config.py:validate, oracle/config.py:validate\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\noracle/backtest/batch_auction.py:commit_hash, oracle/backtest/batch_auction.py:commit\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\noracle/models/signal.py:to_dict, oracle/models/signal.py:to_dict, oracle/models/signal.py:to_dict\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\noracle/models/stablecoin.py:to_dict, oracle/models/stablecoin.py:to_dict, oracle/models/stablecoin.py:to_dict, oracle/models/stablecoin.py:to_dict\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f3fc780a18b797a", "name": "Frontend route `/jarvis-os` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/jarvis-os` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2e07ffae47f05990", "name": "Frontend route `/papers/story/nci` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/papers/story/nci` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80a4855265e978ef", "name": "Frontend route `/crpc` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/crpc` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7685537701ed0c38", "name": "Frontend route `/emissions` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/emissions` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2357b4fa09b838ce", "name": "Frontend route `/token/:symbol` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/token/:symbol` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-40bd21cdf1296432", "name": "Frontend route `/pool/:id` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/pool/:id` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da463d78f0f1e72b", "name": "Frontend route `/user/:address` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/user/:address` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-509b4ff55f97c83f", "name": "Frontend route `/psinet` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/psinet` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7405071412a9fd87", "name": "Frontend route `/gauntlet` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/gauntlet` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-666bedfea5546257", "name": "FastAPI POST `scrape_page` without auth dependency \u2014 jarvis-bot/scraper/server.py:65", "shortDescription": {"text": "FastAPI POST `scrape_page` without auth dependency \u2014 jarvis-bot/scraper/server.py:65"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4deba07c63d66403", "name": "FastAPI POST `scrape_multiple` without auth dependency \u2014 jarvis-bot/scraper/server.py:152", "shortDescription": {"text": "FastAPI POST `scrape_multiple` without auth dependency \u2014 jarvis-bot/scraper/server.py:152"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fc3a9f2ee7ca6d12", "name": "Dangling fetch: POST https://jarvis-vibeswap.fly.dev/transcript (frontend/api/transcript.js:11)", "shortDescription": {"text": "Dangling fetch: POST https://jarvis-vibeswap.fly.dev/transcript (frontend/api/transcript.js:11)"}, "fullDescription": {"text": "`frontend/api/transcript.js:11` calls `POST https://jarvis-vibeswap.fly.dev/transcript` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/jarvis-vibeswap.fly.dev/transcript`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-993c7b75ed8daf1d", "name": "Dangling fetch: GET /jarvis-api/x402/stats (frontend/src/components/X402Page.jsx:89)", "shortDescription": {"text": "Dangling fetch: GET /jarvis-api/x402/stats (frontend/src/components/X402Page.jsx:89)"}, "fullDescription": {"text": "`frontend/src/components/X402Page.jsx:89` calls `GET /jarvis-api/x402/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/jarvis-api/x402/stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a8c1ebaa9c6296b8", "name": "Dangling fetch: POST /api/chat (frontend/src/components/JarvisIntro.jsx:65)", "shortDescription": {"text": "Dangling fetch: POST /api/chat (frontend/src/components/JarvisIntro.jsx:65)"}, "fullDescription": {"text": "`frontend/src/components/JarvisIntro.jsx:65` calls `POST /api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-68c2a4fd18c05373", "name": "Dangling fetch: POST https://mainnet.base.org (frontend/src/components/HeaderMinimal.jsx:40)", "shortDescription": {"text": "Dangling fetch: POST https://mainnet.base.org (frontend/src/components/HeaderMinimal.jsx:40)"}, "fullDescription": {"text": "`frontend/src/components/HeaderMinimal.jsx:40` calls `POST https://mainnet.base.org` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/mainnet.base.org`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e2a3bcd6c357738e", "name": "Dangling fetch: POST /api/chat (frontend/src/hooks/useJarvis.jsx:204)", "shortDescription": {"text": "Dangling fetch: POST /api/chat (frontend/src/hooks/useJarvis.jsx:204)"}, "fullDescription": {"text": "`frontend/src/hooks/useJarvis.jsx:204` calls `POST /api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c48a27f9a349efaf", "name": "Dangling fetch: GET /prices (frontend/src/services/api.js:33)", "shortDescription": {"text": "Dangling fetch: GET /prices (frontend/src/services/api.js:33)"}, "fullDescription": {"text": "`frontend/src/services/api.js:33` calls `GET /prices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/prices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0946e3fa20cfb517", "name": "Dangling fetch: GET /prices/pairs/${base}/${quote} (frontend/src/services/api.js:41)", "shortDescription": {"text": "Dangling fetch: GET /prices/pairs/${base}/${quote} (frontend/src/services/api.js:41)"}, "fullDescription": {"text": "`frontend/src/services/api.js:41` calls `GET /prices/pairs/${base}/${quote}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/prices/pairs/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-199c209774bf0f87", "name": "Dangling fetch: GET /tokens/${chainId} (frontend/src/services/api.js:47)", "shortDescription": {"text": "Dangling fetch: GET /tokens/${chainId} (frontend/src/services/api.js:47)"}, "fullDescription": {"text": "`frontend/src/services/api.js:47` calls `GET /tokens/${chainId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tokens/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-811fd0de19a14847", "name": "Dangling fetch: GET /tokens (frontend/src/services/api.js:49)", "shortDescription": {"text": "Dangling fetch: GET /tokens (frontend/src/services/api.js:49)"}, "fullDescription": {"text": "`frontend/src/services/api.js:49` calls `GET /tokens` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tokens`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e875e1e49768160", "name": "Dangling fetch: GET /chains (frontend/src/services/api.js:54)", "shortDescription": {"text": "Dangling fetch: GET /chains (frontend/src/services/api.js:54)"}, "fullDescription": {"text": "`frontend/src/services/api.js:54` calls `GET /chains` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chains`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3fd376be9d22813e", "name": "Dangling fetch: GET /web/mining/target (jarvis-bot/webapp/src/lib/api.js:17)", "shortDescription": {"text": "Dangling fetch: GET /web/mining/target (jarvis-bot/webapp/src/lib/api.js:17)"}, "fullDescription": {"text": "`jarvis-bot/webapp/src/lib/api.js:17` calls `GET /web/mining/target` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/web/mining/target`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc1b37b8a703852f", "name": "Dangling fetch: POST /web/mining/submit (jarvis-bot/webapp/src/lib/api.js:21)", "shortDescription": {"text": "Dangling fetch: POST /web/mining/submit (jarvis-bot/webapp/src/lib/api.js:21)"}, "fullDescription": {"text": "`jarvis-bot/webapp/src/lib/api.js:21` calls `POST /web/mining/submit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/web/mining/submit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef101bacb1adb6f7", "name": "Dangling fetch: GET /web/mining/stats/${encodeURIComponent(userId)} (jarvis-bot/webapp/src/lib/api.js:28)", "shortDescription": {"text": "Dangling fetch: GET /web/mining/stats/${encodeURIComponent(userId)} (jarvis-bot/webapp/src/lib/api.js:28)"}, "fullDescription": {"text": "`jarvis-bot/webapp/src/lib/api.js:28` calls `GET /web/mining/stats/${encodeURIComponent(userId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/web/mining/stats/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c096a2def0177351", "name": "Dangling fetch: GET /router/topology (jarvis-bot/webapp/src/lib/api.js:53)", "shortDescription": {"text": "Dangling fetch: GET /router/topology (jarvis-bot/webapp/src/lib/api.js:53)"}, "fullDescription": {"text": "`jarvis-bot/webapp/src/lib/api.js:53` calls `GET /router/topology` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/router/topology`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b72b574d8db837db", "name": "Dangling fetch: GET /web/health (jarvis-bot/webapp/src/lib/api.js:59)", "shortDescription": {"text": "Dangling fetch: GET /web/health (jarvis-bot/webapp/src/lib/api.js:59)"}, "fullDescription": {"text": "`jarvis-bot/webapp/src/lib/api.js:59` calls `GET /web/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/web/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e32269b2e70cce1a", "name": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/liquidation_history?symbol=${symbol}&time_type=all (jarvis-", "shortDescription": {"text": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/liquidation_history?symbol=${symbol}&time_type=all (jarvis-bot/src/tools-derivatives.js:23)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-derivatives.js:23` calls `GET https://open-api.coinglass.com/public/v2/liquidation_history?symbol=${symbol}&time_type=all` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open-api.coinglass.com/public/v2/liquidation_history`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d819f777ea787dd", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${symbolToId(symbol)}&vs_currencies=usd&include_24", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${symbolToId(symbol)}&vs_currencies=usd&include_24hr_change=true&include_24hr_vol=true (jarvis-bot/src/tools-derivatives.js:56)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-derivatives.js:56` calls `GET https://api.coingecko.com/api/v3/simple/price?ids=${symbolToId(symbol)}&vs_currencies=usd&include_24hr_change=true&include_24hr_vol=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/simple/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e895acd89c4820c7", "name": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/funding?symbol=${symbol} (jarvis-bot/src/tools-derivatives.", "shortDescription": {"text": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/funding?symbol=${symbol} (jarvis-bot/src/tools-derivatives.js:95)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-derivatives.js:95` calls `GET https://open-api.coinglass.com/public/v2/funding?symbol=${symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open-api.coinglass.com/public/v2/funding`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9027b8cefe164c8c", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${symbolToId(symbol)}&vs_currencies=usd&include_24", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${symbolToId(symbol)}&vs_currencies=usd&include_24hr_change=true (jarvis-bot/src/tools-derivatives.js:129)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-derivatives.js:129` calls `GET https://api.coingecko.com/api/v3/simple/price?ids=${symbolToId(symbol)}&vs_currencies=usd&include_24hr_change=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/simple/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-29904b96b14a40f9", "name": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/open_interest?symbol=${symbol} (jarvis-bot/src/tools-deriva", "shortDescription": {"text": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/open_interest?symbol=${symbol} (jarvis-bot/src/tools-derivatives.js:161)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-derivatives.js:161` calls `GET https://open-api.coinglass.com/public/v2/open_interest?symbol=${symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open-api.coinglass.com/public/v2/open_interest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0489afad39d21ba5", "name": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/long_short?symbol=${symbol}&time_type=4 (jarvis-bot/src/too", "shortDescription": {"text": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/long_short?symbol=${symbol}&time_type=4 (jarvis-bot/src/tools-derivatives.js:201)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-derivatives.js:201` calls `GET https://open-api.coinglass.com/public/v2/long_short?symbol=${symbol}&time_type=4` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open-api.coinglass.com/public/v2/long_short`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e2a1de75a9c4791", "name": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/etf/bitcoin_flow_total (jarvis-bot/src/tools-derivatives.js", "shortDescription": {"text": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/etf/bitcoin_flow_total (jarvis-bot/src/tools-derivatives.js:239)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-derivatives.js:239` calls `GET https://open-api.coinglass.com/public/v2/etf/bitcoin_flow_total` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open-api.coinglass.com/public/v2/etf/bitcoin_flow_total`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b50e85856e38f6e8", "name": "Dangling fetch: GET /theai/constellation/api/state (jarvis-bot/src/constellation.js:266)", "shortDescription": {"text": "Dangling fetch: GET /theai/constellation/api/state (jarvis-bot/src/constellation.js:266)"}, "fullDescription": {"text": "`jarvis-bot/src/constellation.js:266` calls `GET /theai/constellation/api/state` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/theai/constellation/api/state`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f811266b177938a", "name": "Dangling fetch: POST /theai/constellation/api/consult (jarvis-bot/src/constellation.js:504)", "shortDescription": {"text": "Dangling fetch: POST /theai/constellation/api/consult (jarvis-bot/src/constellation.js:504)"}, "fullDescription": {"text": "`jarvis-bot/src/constellation.js:504` calls `POST /theai/constellation/api/consult` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/theai/constellation/api/consult`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d88d552a6c5bd46", "name": "Dangling fetch: POST /theai/constellation/api/proof (jarvis-bot/src/constellation.js:518)", "shortDescription": {"text": "Dangling fetch: POST /theai/constellation/api/proof (jarvis-bot/src/constellation.js:518)"}, "fullDescription": {"text": "`jarvis-bot/src/constellation.js:518` calls `POST /theai/constellation/api/proof` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/theai/constellation/api/proof`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48e94f8fc80613a1", "name": "Dangling fetch: GET https://api.dexscreener.com/token-profiles/latest/v1 (jarvis-bot/src/tools-memehunter.js:610)", "shortDescription": {"text": "Dangling fetch: GET https://api.dexscreener.com/token-profiles/latest/v1 (jarvis-bot/src/tools-memehunter.js:610)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-memehunter.js:610` calls `GET https://api.dexscreener.com/token-profiles/latest/v1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dexscreener.com/token-profiles/latest/v1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7853e6db8b5beb76", "name": "Dangling fetch: GET https://api.dexscreener.com/token-boosts/latest/v1 (jarvis-bot/src/tools-memehunter.js:611)", "shortDescription": {"text": "Dangling fetch: GET https://api.dexscreener.com/token-boosts/latest/v1 (jarvis-bot/src/tools-memehunter.js:611)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-memehunter.js:611` calls `GET https://api.dexscreener.com/token-boosts/latest/v1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dexscreener.com/token-boosts/latest/v1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa8350e14c55cf71", "name": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot", "shortDescription": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot/src/tools-memehunter.js:654)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-memehunter.js:654` calls `GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.gopluslabs.io/api/v1/token_security/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bfdd55a97396e6da", "name": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/tokens/${address} (jarvis-bot/src/tools-memehunter.js:665)", "shortDescription": {"text": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/tokens/${address} (jarvis-bot/src/tools-memehunter.js:665)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-memehunter.js:665` calls `GET https://api.dexscreener.com/latest/dex/tokens/${address}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dexscreener.com/latest/dex/tokens/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ebc7a1f2169713f", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/events (jarvis-bot/src/tools-education.js:825)", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/events (jarvis-bot/src/tools-education.js:825)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-education.js:825` calls `GET https://api.coingecko.com/api/v3/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c4f5dd89cebc7df", "name": "Dangling fetch: GET https://api.alternative.me/fng/?limit=1 (jarvis-bot/src/tools-education.js:922)", "shortDescription": {"text": "Dangling fetch: GET https://api.alternative.me/fng/?limit=1 (jarvis-bot/src/tools-education.js:922)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-education.js:922` calls `GET https://api.alternative.me/fng/?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.alternative.me/fng`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2c41b7f51a55546", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3${path} (jarvis-bot/src/tools.js:33)", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3${path} (jarvis-bot/src/tools.js:33)"}, "fullDescription": {"text": "`jarvis-bot/src/tools.js:33` calls `GET https://api.coingecko.com/api/v3${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7aeae1cecf687185", "name": "Dangling fetch: GET https://api.alternative.me/fng/?limit=1 (jarvis-bot/src/tools.js:193)", "shortDescription": {"text": "Dangling fetch: GET https://api.alternative.me/fng/?limit=1 (jarvis-bot/src/tools.js:193)"}, "fullDescription": {"text": "`jarvis-bot/src/tools.js:193` calls `GET https://api.alternative.me/fng/?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.alternative.me/fng`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4834fd6096aa6af6", "name": "Dangling fetch: GET https://api.etherscan.io/api?module=gastracker&action=gasoracle (jarvis-bot/src/tools.js:220)", "shortDescription": {"text": "Dangling fetch: GET https://api.etherscan.io/api?module=gastracker&action=gasoracle (jarvis-bot/src/tools.js:220)"}, "fullDescription": {"text": "`jarvis-bot/src/tools.js:220` calls `GET https://api.etherscan.io/api?module=gastracker&action=gasoracle` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.etherscan.io/api`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3349d79029272de", "name": "Dangling fetch: GET https://yields.llama.fi/pools (jarvis-bot/src/tools.js:409)", "shortDescription": {"text": "Dangling fetch: GET https://yields.llama.fi/pools (jarvis-bot/src/tools.js:409)"}, "fullDescription": {"text": "`jarvis-bot/src/tools.js:409` calls `GET https://yields.llama.fi/pools` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/yields.llama.fi/pools`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c14db8b2dc7a54d", "name": "Dangling fetch: GET https://api.llama.fi/v2/chains (jarvis-bot/src/tools.js:447)", "shortDescription": {"text": "Dangling fetch: GET https://api.llama.fi/v2/chains (jarvis-bot/src/tools.js:447)"}, "fullDescription": {"text": "`jarvis-bot/src/tools.js:447` calls `GET https://api.llama.fi/v2/chains` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.llama.fi/v2/chains`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-beb88cf2c313776f", "name": "Dangling fetch: GET https://stablecoins.llama.fi/stablecoins?includePrices=true (jarvis-bot/src/tools.js:473)", "shortDescription": {"text": "Dangling fetch: GET https://stablecoins.llama.fi/stablecoins?includePrices=true (jarvis-bot/src/tools.js:473)"}, "fullDescription": {"text": "`jarvis-bot/src/tools.js:473` calls `GET https://stablecoins.llama.fi/stablecoins?includePrices=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/stablecoins.llama.fi/stablecoins`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f63bca2bd5d167a8", "name": "Dangling fetch: GET https://api.llama.fi/overview/dexs?excludeTotalDataChart=true&excludeTotalDataChartBreakdown=true (j", "shortDescription": {"text": "Dangling fetch: GET https://api.llama.fi/overview/dexs?excludeTotalDataChart=true&excludeTotalDataChartBreakdown=true (jarvis-bot/src/tools.js:504)"}, "fullDescription": {"text": "`jarvis-bot/src/tools.js:504` calls `GET https://api.llama.fi/overview/dexs?excludeTotalDataChart=true&excludeTotalDataChartBreakdown=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.llama.fi/overview/dexs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ac5860f234dad239", "name": "Dangling fetch: GET https://api.etherscan.io/api?module=account&action=balance&address=${address}&tag=latest (jarvis-bot", "shortDescription": {"text": "Dangling fetch: GET https://api.etherscan.io/api?module=account&action=balance&address=${address}&tag=latest (jarvis-bot/src/tools.js:537)"}, "fullDescription": {"text": "`jarvis-bot/src/tools.js:537` calls `GET https://api.etherscan.io/api?module=account&action=balance&address=${address}&tag=latest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.etherscan.io/api`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-69f29e34c2baed8c", "name": "Dangling fetch: GET https://api.llama.fi/protocol/${encodeURIComponent(protocol)} (jarvis-bot/src/tools.js:563)", "shortDescription": {"text": "Dangling fetch: GET https://api.llama.fi/protocol/${encodeURIComponent(protocol)} (jarvis-bot/src/tools.js:563)"}, "fullDescription": {"text": "`jarvis-bot/src/tools.js:563` calls `GET https://api.llama.fi/protocol/${encodeURIComponent(protocol)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.llama.fi/protocol/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-03ad0e95708e3b35", "name": "Dangling fetch: GET https://api.llama.fi/v2/historicalChainTvl (jarvis-bot/src/tools.js:572)", "shortDescription": {"text": "Dangling fetch: GET https://api.llama.fi/v2/historicalChainTvl (jarvis-bot/src/tools.js:572)"}, "fullDescription": {"text": "`jarvis-bot/src/tools.js:572` calls `GET https://api.llama.fi/v2/historicalChainTvl` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.llama.fi/v2/historicalchaintvl`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d9058ca3cdeaa12", "name": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/pairs/${chainId} (jarvis-bot/src/tools-scanner.js:93)", "shortDescription": {"text": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/pairs/${chainId} (jarvis-bot/src/tools-scanner.js:93)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-scanner.js:93` calls `GET https://api.dexscreener.com/latest/dex/pairs/${chainId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dexscreener.com/latest/dex/pairs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20096f447c26706f", "name": "Dangling fetch: GET https://api.dexscreener.com/token-boosts/top/v1 (jarvis-bot/src/tools-scanner.js:134)", "shortDescription": {"text": "Dangling fetch: GET https://api.dexscreener.com/token-boosts/top/v1 (jarvis-bot/src/tools-scanner.js:134)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-scanner.js:134` calls `GET https://api.dexscreener.com/token-boosts/top/v1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dexscreener.com/token-boosts/top/v1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2271f9c4cf94b00e", "name": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/search?q=${encodeURIComponent(query)} (jarvis-bot/src/tools-s", "shortDescription": {"text": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/search?q=${encodeURIComponent(query)} (jarvis-bot/src/tools-scanner.js:172)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-scanner.js:172` calls `GET https://api.dexscreener.com/latest/dex/search?q=${encodeURIComponent(query)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dexscreener.com/latest/dex/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e75c5d084b6af069", "name": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/tokens/${address} (jarvis-bot/src/tools-scanner.js:215)", "shortDescription": {"text": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/tokens/${address} (jarvis-bot/src/tools-scanner.js:215)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-scanner.js:215` calls `GET https://api.dexscreener.com/latest/dex/tokens/${address}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dexscreener.com/latest/dex/tokens/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95f97202e36109ec", "name": "Dangling fetch: GET https://uselessfacts.jsph.pl/api/v2/facts/random?language=en (jarvis-bot/src/tools-engagement.js:143", "shortDescription": {"text": "Dangling fetch: GET https://uselessfacts.jsph.pl/api/v2/facts/random?language=en (jarvis-bot/src/tools-engagement.js:143)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-engagement.js:143` calls `GET https://uselessfacts.jsph.pl/api/v2/facts/random?language=en` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/uselessfacts.jsph.pl/api/v2/facts/random`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-996f90143cc44bcf", "name": "Dangling fetch: GET http://numbersapi.com/random/trivia (jarvis-bot/src/tools-engagement.js:152)", "shortDescription": {"text": "Dangling fetch: GET http://numbersapi.com/random/trivia (jarvis-bot/src/tools-engagement.js:152)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-engagement.js:152` calls `GET http://numbersapi.com/random/trivia` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/numbersapi.com/random/trivia`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e55f7cf179ea8e4a", "name": "Dangling fetch: GET https://api.wikimedia.org/feed/v1/wikipedia/en/onthisday/events/${month}/${day} (jarvis-bot/src/tool", "shortDescription": {"text": "Dangling fetch: GET https://api.wikimedia.org/feed/v1/wikipedia/en/onthisday/events/${month}/${day} (jarvis-bot/src/tools-engagement.js:170)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-engagement.js:170` calls `GET https://api.wikimedia.org/feed/v1/wikipedia/en/onthisday/events/${month}/${day}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.wikimedia.org/feed/v1/wikipedia/en/onthisday/events/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3be3431e475397a1", "name": "Dangling fetch: GET https://dog.ceo/api/breeds/image/random (jarvis-bot/src/tools-engagement.js:200)", "shortDescription": {"text": "Dangling fetch: GET https://dog.ceo/api/breeds/image/random (jarvis-bot/src/tools-engagement.js:200)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-engagement.js:200` calls `GET https://dog.ceo/api/breeds/image/random` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/dog.ceo/api/breeds/image/random`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8fd391d61d68d58d", "name": "Dangling fetch: GET https://api.thecatapi.com/v1/images/search (jarvis-bot/src/tools-engagement.js:213)", "shortDescription": {"text": "Dangling fetch: GET https://api.thecatapi.com/v1/images/search (jarvis-bot/src/tools-engagement.js:213)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-engagement.js:213` calls `GET https://api.thecatapi.com/v1/images/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.thecatapi.com/v1/images/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c6dae4c409639e76", "name": "Dangling fetch: POST https://carbonara.solopov.dev/api/cook (jarvis-bot/src/tools-engagement.js:229)", "shortDescription": {"text": "Dangling fetch: POST https://carbonara.solopov.dev/api/cook (jarvis-bot/src/tools-engagement.js:229)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-engagement.js:229` calls `POST https://carbonara.solopov.dev/api/cook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/carbonara.solopov.dev/api/cook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-952927c7482aa380", "name": "Dangling fetch: POST https://dpaste.org/api/ (jarvis-bot/src/tools-engagement.js:262)", "shortDescription": {"text": "Dangling fetch: POST https://dpaste.org/api/ (jarvis-bot/src/tools-engagement.js:262)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-engagement.js:262` calls `POST https://dpaste.org/api/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/dpaste.org/api`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dca058da024e7c44", "name": "Dangling fetch: GET https://api.adviceslip.com/advice (jarvis-bot/src/tools-engagement.js:279)", "shortDescription": {"text": "Dangling fetch: GET https://api.adviceslip.com/advice (jarvis-bot/src/tools-engagement.js:279)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-engagement.js:279` calls `GET https://api.adviceslip.com/advice` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.adviceslip.com/advice`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0dfbdec60a556a32", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3${path} (jarvis-bot/src/tools-alerts.js:18)", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3${path} (jarvis-bot/src/tools-alerts.js:18)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-alerts.js:18` calls `GET https://api.coingecko.com/api/v3${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b2a311bbc405f54", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/nfts/${encodeURIComponent(collection.toLowerCase())} (jarvis-bot/sr", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/nfts/${encodeURIComponent(collection.toLowerCase())} (jarvis-bot/src/tools-alerts.js:212)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-alerts.js:212` calls `GET https://api.coingecko.com/api/v3/nfts/${encodeURIComponent(collection.toLowerCase())}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/nfts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b70627d35156118", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/nfts/list?per_page=250 (jarvis-bot/src/tools-alerts.js:219)", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/nfts/list?per_page=250 (jarvis-bot/src/tools-alerts.js:219)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-alerts.js:219` calls `GET https://api.coingecko.com/api/v3/nfts/list?per_page=250` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/nfts/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-59c1c64194d73c8d", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/nfts/${match.id} (jarvis-bot/src/tools-alerts.js:229)", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/nfts/${match.id} (jarvis-bot/src/tools-alerts.js:229)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-alerts.js:229` calls `GET https://api.coingecko.com/api/v3/nfts/${match.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/nfts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-502e784d88a31454", "name": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot", "shortDescription": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot/src/tools-alerts.js:266)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-alerts.js:266` calls `GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.gopluslabs.io/api/v1/token_security/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-47096f687816467c", "name": "Dangling fetch: GET https://geocoding-api.open-meteo.com/v1/search?name=${encodeURIComponent(city)}&count=1&language=en ", "shortDescription": {"text": "Dangling fetch: GET https://geocoding-api.open-meteo.com/v1/search?name=${encodeURIComponent(city)}&count=1&language=en (jarvis-bot/src/tools-utility.js:20)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-utility.js:20` calls `GET https://geocoding-api.open-meteo.com/v1/search?name=${encodeURIComponent(city)}&count=1&language=en` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/geocoding-api.open-meteo.com/v1/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a9314eebddb940b9", "name": "Dangling fetch: GET https://api.open-meteo.com/v1/forecast?latitude=${loc.latitude}&longitude=${loc.longitude}&current=t", "shortDescription": {"text": "Dangling fetch: GET https://api.open-meteo.com/v1/forecast?latitude=${loc.latitude}&longitude=${loc.longitude}&current=temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m&daily=temperature_2m_max,temperature"}, "fullDescription": {"text": "`jarvis-bot/src/tools-utility.js:29` calls `GET https://api.open-meteo.com/v1/forecast?latitude=${loc.latitude}&longitude=${loc.longitude}&current=temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m&daily=temperature_2m_max,temperature_2m_min,precipitation_probability_max&timezone=auto&forecast_days=3` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.open-meteo.com/v1/forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d1d3d4b0cab5406", "name": "Dangling fetch: GET https://en.wikipedia.org/api/rest_v1/page/summary/${encodeURIComponent(topic)} (jarvis-bot/src/tools", "shortDescription": {"text": "Dangling fetch: GET https://en.wikipedia.org/api/rest_v1/page/summary/${encodeURIComponent(topic)} (jarvis-bot/src/tools-utility.js:86)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-utility.js:86` calls `GET https://en.wikipedia.org/api/rest_v1/page/summary/${encodeURIComponent(topic)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/en.wikipedia.org/api/rest_v1/page/summary/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-491dddf9f0b31885", "name": "Dangling fetch: GET https://api.dictionaryapi.dev/api/v2/entries/en/${encodeURIComponent(word)} (jarvis-bot/src/tools-ut", "shortDescription": {"text": "Dangling fetch: GET https://api.dictionaryapi.dev/api/v2/entries/en/${encodeURIComponent(word)} (jarvis-bot/src/tools-utility.js:113)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-utility.js:113` calls `GET https://api.dictionaryapi.dev/api/v2/entries/en/${encodeURIComponent(word)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dictionaryapi.dev/api/v2/entries/en/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea90a9ac8fb9210a", "name": "Dangling fetch: GET https://api.mymemory.translated.net/get?q=${encodeURIComponent(text.slice(0, 500))}&langpair=autodet", "shortDescription": {"text": "Dangling fetch: GET https://api.mymemory.translated.net/get?q=${encodeURIComponent(text.slice(0, 500))}&langpair=autodetect|${to} (jarvis-bot/src/tools-utility.js:180)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-utility.js:180` calls `GET https://api.mymemory.translated.net/get?q=${encodeURIComponent(text.slice(0, 500))}&langpair=autodetect|${to}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.mymemory.translated.net/get`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf53517745b558ca", "name": "Dangling fetch: GET https://tinyurl.com/api-create.php?url=${encodeURIComponent(url)} (jarvis-bot/src/tools-utility.js:3", "shortDescription": {"text": "Dangling fetch: GET https://tinyurl.com/api-create.php?url=${encodeURIComponent(url)} (jarvis-bot/src/tools-utility.js:306)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-utility.js:306` calls `GET https://tinyurl.com/api-create.php?url=${encodeURIComponent(url)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/tinyurl.com/api-create.php`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c694098f0462a32a", "name": "Dangling fetch: GET https://api.github.com/repos/wglynn/vibeswap/commits?per_page=1 (jarvis-bot/src/web-api.js:1166)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/repos/wglynn/vibeswap/commits?per_page=1 (jarvis-bot/src/web-api.js:1166)"}, "fullDescription": {"text": "`jarvis-bot/src/web-api.js:1166` calls `GET https://api.github.com/repos/wglynn/vibeswap/commits?per_page=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/wglynn/vibeswap/commits`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a4921014ed47742b", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${token}&vs_currencies=usd&include_1hr_change=true", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${token}&vs_currencies=usd&include_1hr_change=true (jarvis-bot/src/tools-scheduler.js:181)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-scheduler.js:181` calls `GET https://api.coingecko.com/api/v3/simple/price?ids=${token}&vs_currencies=usd&include_1hr_change=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/simple/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6be3c84e7d404ea3", "name": "Dangling fetch: GET https://api.etherscan.io/api?module=gastracker&action=gasoracle (jarvis-bot/src/tools-scheduler.js:2", "shortDescription": {"text": "Dangling fetch: GET https://api.etherscan.io/api?module=gastracker&action=gasoracle (jarvis-bot/src/tools-scheduler.js:210)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-scheduler.js:210` calls `GET https://api.etherscan.io/api?module=gastracker&action=gasoracle` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.etherscan.io/api`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a937e4afad42639d", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/status_updates?per_page=10 (jarvis-bot/src/tools-catchup.js:113)", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/status_updates?per_page=10 (jarvis-bot/src/tools-catchup.js:113)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-catchup.js:113` calls `GET https://api.coingecko.com/api/v3/status_updates?per_page=10` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/status_updates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d1801dd37cf618b", "name": "Dangling fetch: GET https://api.llama.fi/protocols (jarvis-bot/src/tools-catchup.js:176)", "shortDescription": {"text": "Dangling fetch: GET https://api.llama.fi/protocols (jarvis-bot/src/tools-catchup.js:176)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-catchup.js:176` calls `GET https://api.llama.fi/protocols` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.llama.fi/protocols`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf9b546682f47a44", "name": "Dangling fetch: GET /crpc/demo (jarvis-bot/src/crpc.js:769)", "shortDescription": {"text": "Dangling fetch: GET /crpc/demo (jarvis-bot/src/crpc.js:769)"}, "fullDescription": {"text": "`jarvis-bot/src/crpc.js:769` calls `GET /crpc/demo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/crpc/demo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5eb9a756b0537d24", "name": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot", "shortDescription": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot/src/tools-security.js:43)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-security.js:43` calls `GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.gopluslabs.io/api/v1/token_security/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-47757c88a8f3713f", "name": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot", "shortDescription": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot/src/tools-security.js:138)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-security.js:138` calls `GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.gopluslabs.io/api/v1/token_security/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e10061bafc1af934", "name": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/contract_security/${chainId}?contract_addresses=${address} (jarvis-", "shortDescription": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/contract_security/${chainId}?contract_addresses=${address} (jarvis-bot/src/tools-security.js:169)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-security.js:169` calls `GET https://api.gopluslabs.io/api/v1/contract_security/${chainId}?contract_addresses=${address}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.gopluslabs.io/api/v1/contract_security/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-61d33dc8221f4fd7", "name": "Dangling fetch: GET https://api.etherscan.io/api?module=contract&action=getsourcecode&address=${address} (jarvis-bot/src", "shortDescription": {"text": "Dangling fetch: GET https://api.etherscan.io/api?module=contract&action=getsourcecode&address=${address} (jarvis-bot/src/tools-security.js:180)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-security.js:180` calls `GET https://api.etherscan.io/api?module=contract&action=getsourcecode&address=${address}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.etherscan.io/api`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e7a780414f08153", "name": "Dangling fetch: GET https://api.etherscan.io/api?module=token&action=tokenholderlist&contractaddress=${address}&page=1&o", "shortDescription": {"text": "Dangling fetch: GET https://api.etherscan.io/api?module=token&action=tokenholderlist&contractaddress=${address}&page=1&offset=10 (jarvis-bot/src/tools-security.js:222)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-security.js:222` calls `GET https://api.etherscan.io/api?module=token&action=tokenholderlist&contractaddress=${address}&page=1&offset=10` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.etherscan.io/api`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d0391d3c7700f2f5", "name": "Dangling fetch: GET https://api.gopluslabs.io/api/v2/token_approval_security/${chainId}?addresses=${address} (jarvis-bot", "shortDescription": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v2/token_approval_security/${chainId}?addresses=${address} (jarvis-bot/src/tools-security.js:254)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-security.js:254` calls `GET https://api.gopluslabs.io/api/v2/token_approval_security/${chainId}?addresses=${address}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.gopluslabs.io/api/v2/token_approval_security/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-70b3bcebed8264ee", "name": "Dangling fetch: GET https://api.machines.dev/v1/apps/${node.app}/machines (jarvis-bot/src/mesh-monitor.js:155)", "shortDescription": {"text": "Dangling fetch: GET https://api.machines.dev/v1/apps/${node.app}/machines (jarvis-bot/src/mesh-monitor.js:155)"}, "fullDescription": {"text": "`jarvis-bot/src/mesh-monitor.js:155` calls `GET https://api.machines.dev/v1/apps/${node.app}/machines` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.machines.dev/v1/apps/<p>/machines`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f71ebb9a5ee653e1", "name": "Dangling fetch: POST https://api.machines.dev/v1/apps/${node.app}/machines/${machine.id}/${action} (jarvis-bot/src/mesh-", "shortDescription": {"text": "Dangling fetch: POST https://api.machines.dev/v1/apps/${node.app}/machines/${machine.id}/${action} (jarvis-bot/src/mesh-monitor.js:170)"}, "fullDescription": {"text": "`jarvis-bot/src/mesh-monitor.js:170` calls `POST https://api.machines.dev/v1/apps/${node.app}/machines/${machine.id}/${action}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.machines.dev/v1/apps/<p>/machines/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35de6cd564f81bcd", "name": "Dangling fetch: GET https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json (jarvis-bo", "shortDescription": {"text": "Dangling fetch: GET https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json (jarvis-bot/src/youtube.js:46)"}, "fullDescription": {"text": "`jarvis-bot/src/youtube.js:46` calls `GET https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.youtube.com/oembed`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db8c9fbcf8eacf39", "name": "Dangling fetch: GET https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json (jarvis-bo", "shortDescription": {"text": "Dangling fetch: GET https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json (jarvis-bot/src/youtube.js:66)"}, "fullDescription": {"text": "`jarvis-bot/src/youtube.js:66` calls `GET https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.youtube.com/oembed`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e12c83b326c0e72", "name": "Dangling fetch: POST https://api.github.com/repos/WGlynn/VibeSwap/actions/workflows/deploy-jarvis.yml/dispatches (jarvis", "shortDescription": {"text": "Dangling fetch: POST https://api.github.com/repos/WGlynn/VibeSwap/actions/workflows/deploy-jarvis.yml/dispatches (jarvis-bot/src/index.js:1074)"}, "fullDescription": {"text": "`jarvis-bot/src/index.js:1074` calls `POST https://api.github.com/repos/WGlynn/VibeSwap/actions/workflows/deploy-jarvis.yml/dispatches` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/wglynn/vibeswap/actions/workflows/deploy-jarvis.yml/dispatches`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3431b74f4f0626bc", "name": "Dangling fetch: GET https://${appName}.fly.dev/health (jarvis-bot/src/index.js:4988)", "shortDescription": {"text": "Dangling fetch: GET https://${appName}.fly.dev/health (jarvis-bot/src/index.js:4988)"}, "fullDescription": {"text": "`jarvis-bot/src/index.js:4988` calls `GET https://${appName}.fly.dev/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/<p>.fly.dev/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f9b17e28d431692", "name": "Dangling fetch: GET https://api.github.com/repos/wglynn/vibeswap/commits?per_page=1 (jarvis-bot/src/index.js:5029)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/repos/wglynn/vibeswap/commits?per_page=1 (jarvis-bot/src/index.js:5029)"}, "fullDescription": {"text": "`jarvis-bot/src/index.js:5029` calls `GET https://api.github.com/repos/wglynn/vibeswap/commits?per_page=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/wglynn/vibeswap/commits`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-308fff24c93f57b6", "name": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (jarvis-bot/src/index.js:6207)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (jarvis-bot/src/index.js:6207)"}, "fullDescription": {"text": "`jarvis-bot/src/index.js:6207` calls `POST https://api.openai.com/v1/audio/transcriptions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/audio/transcriptions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d17216a50844f337", "name": "Dangling fetch: GET https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines (jarvis-bot/src/index.js:7838)", "shortDescription": {"text": "Dangling fetch: GET https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines (jarvis-bot/src/index.js:7838)"}, "fullDescription": {"text": "`jarvis-bot/src/index.js:7838` calls `GET https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.machines.dev/v1/apps/<p>/machines`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ae20b71eb300fdb", "name": "Dangling fetch: POST https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines/${machine.id}/start (jarvis-bot/src/index.", "shortDescription": {"text": "Dangling fetch: POST https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines/${machine.id}/start (jarvis-bot/src/index.js:7847)"}, "fullDescription": {"text": "`jarvis-bot/src/index.js:7847` calls `POST https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines/${machine.id}/start` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.machines.dev/v1/apps/<p>/machines/<p>/start`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b27e3d972df24dbe", "name": "Dangling fetch: POST https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines/${machine.id}/restart (jarvis-bot/src/inde", "shortDescription": {"text": "Dangling fetch: POST https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines/${machine.id}/restart (jarvis-bot/src/index.js:7855)"}, "fullDescription": {"text": "`jarvis-bot/src/index.js:7855` calls `POST https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines/${machine.id}/restart` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.machines.dev/v1/apps/<p>/machines/<p>/restart`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d0d07733d7cbc6c5", "name": "Dangling fetch: POST https://api.fireflies.ai/graphql (jarvis-bot/src/index.js:8519)", "shortDescription": {"text": "Dangling fetch: POST https://api.fireflies.ai/graphql (jarvis-bot/src/index.js:8519)"}, "fullDescription": {"text": "`jarvis-bot/src/index.js:8519` calls `POST https://api.fireflies.ai/graphql` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.fireflies.ai/graphql`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f2ecb42bd6234af8", "name": "Dangling fetch: GET https://blockchain.info/q/getblockcount (jarvis-bot/src/tools-onchain.js:71)", "shortDescription": {"text": "Dangling fetch: GET https://blockchain.info/q/getblockcount (jarvis-bot/src/tools-onchain.js:71)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-onchain.js:71` calls `GET https://blockchain.info/q/getblockcount` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/blockchain.info/q/getblockcount`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bdb44a79219ed4c4", "name": "Dangling fetch: POST https://api.thegraph.com/subgraphs/name/ensdomains/ens (jarvis-bot/src/tools-onchain.js:116)", "shortDescription": {"text": "Dangling fetch: POST https://api.thegraph.com/subgraphs/name/ensdomains/ens (jarvis-bot/src/tools-onchain.js:116)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-onchain.js:116` calls `POST https://api.thegraph.com/subgraphs/name/ensdomains/ens` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.thegraph.com/subgraphs/name/ensdomains/ens`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5abb75842bf2c9b4", "name": "Dangling fetch: POST https://eth.llamarpc.com (jarvis-bot/src/tools-onchain.js:154)", "shortDescription": {"text": "Dangling fetch: POST https://eth.llamarpc.com (jarvis-bot/src/tools-onchain.js:154)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-onchain.js:154` calls `POST https://eth.llamarpc.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/eth.llamarpc.com`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-888871e6df091564", "name": "Dangling fetch: POST https://eth.llamarpc.com (jarvis-bot/src/tools-onchain.js:169)", "shortDescription": {"text": "Dangling fetch: POST https://eth.llamarpc.com (jarvis-bot/src/tools-onchain.js:169)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-onchain.js:169` calls `POST https://eth.llamarpc.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/eth.llamarpc.com`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1dd91d1385fee93a", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=tether,usd-coin,dai,first-digital-usd,true-usd,fra", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=tether,usd-coin,dai,first-digital-usd,true-usd,frax,paypal-usd,ethena-usde&vs_currencies=usd&include_24hr_change=true (jarvis-bot/src/tools-onchain.js:214)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-onchain.js:214` calls `GET https://api.coingecko.com/api/v3/simple/price?ids=tether,usd-coin,dai,first-digital-usd,true-usd,frax,paypal-usd,ethena-usde&vs_currencies=usd&include_24hr_change=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/simple/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb856d1c2a72964a", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${token}&vs_currencies=usd&include_24hr_change=tru", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${token}&vs_currencies=usd&include_24hr_change=true (jarvis-bot/src/task-queue.js:94)"}, "fullDescription": {"text": "`jarvis-bot/src/task-queue.js:94` calls `GET https://api.coingecko.com/api/v3/simple/price?ids=${token}&vs_currencies=usd&include_24hr_change=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/simple/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c9b5ce6607ca084", "name": "Dangling fetch: GET https://${record.flyAppName}.fly.dev/health (jarvis-bot/src/operator.js:303)", "shortDescription": {"text": "Dangling fetch: GET https://${record.flyAppName}.fly.dev/health (jarvis-bot/src/operator.js:303)"}, "fullDescription": {"text": "`jarvis-bot/src/operator.js:303` calls `GET https://${record.flyAppName}.fly.dev/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/<p>.fly.dev/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9252275276a99bc5", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (jarvis-bot/src/operator.js:368)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (jarvis-bot/src/operator.js:368)"}, "fullDescription": {"text": "`jarvis-bot/src/operator.js:368` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-727167af19a7437f", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (jarvis-bot/src/operator.js:385)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (jarvis-bot/src/operator.js:385)"}, "fullDescription": {"text": "`jarvis-bot/src/operator.js:385` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-276533df196113f3", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${apiK", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${apiKey} (jarvis-bot/src/operator.js:401)"}, "fullDescription": {"text": "`jarvis-bot/src/operator.js:401` calls `POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${apiKey}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8d62f84bc7827aea", "name": "Dangling fetch: POST https://api.deepseek.com/chat/completions (jarvis-bot/src/operator.js:412)", "shortDescription": {"text": "Dangling fetch: POST https://api.deepseek.com/chat/completions (jarvis-bot/src/operator.js:412)"}, "fullDescription": {"text": "`jarvis-bot/src/operator.js:412` calls `POST https://api.deepseek.com/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.deepseek.com/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-657dd2b982ae6a6e", "name": "Dangling fetch: POST https://hub.snapshot.org/graphql (jarvis-bot/src/tools-research.js:341)", "shortDescription": {"text": "Dangling fetch: POST https://hub.snapshot.org/graphql (jarvis-bot/src/tools-research.js:341)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-research.js:341` calls `POST https://hub.snapshot.org/graphql` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/hub.snapshot.org/graphql`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-557e661f6357481e", "name": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd&include_", "shortDescription": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd&include_24hr_change=true (jarvis-bot/src/autonomous.js:220)"}, "fullDescription": {"text": "`jarvis-bot/src/autonomous.js:220` calls `GET https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd&include_24hr_change=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.coingecko.com/api/v3/simple/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26e6d1103b276bbc", "name": "Dangling fetch: GET https://www.reddit.com/r/${encodeURIComponent(sub)}/${sort}.json?limit=8 (jarvis-bot/src/tools-news.", "shortDescription": {"text": "Dangling fetch: GET https://www.reddit.com/r/${encodeURIComponent(sub)}/${sort}.json?limit=8 (jarvis-bot/src/tools-news.js:20)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-news.js:20` calls `GET https://www.reddit.com/r/${encodeURIComponent(sub)}/${sort}.json?limit=8` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.reddit.com/r/<p>/<p>.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f7a1f0343f93832b", "name": "Dangling fetch: GET https://hacker-news.firebaseio.com/v0/topstories.json (jarvis-bot/src/tools-news.js:58)", "shortDescription": {"text": "Dangling fetch: GET https://hacker-news.firebaseio.com/v0/topstories.json (jarvis-bot/src/tools-news.js:58)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-news.js:58` calls `GET https://hacker-news.firebaseio.com/v0/topstories.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/hacker-news.firebaseio.com/v0/topstories.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-097c920073ba198e", "name": "Dangling fetch: GET https://hacker-news.firebaseio.com/v0/item/${id}.json (jarvis-bot/src/tools-news.js:66)", "shortDescription": {"text": "Dangling fetch: GET https://hacker-news.firebaseio.com/v0/item/${id}.json (jarvis-bot/src/tools-news.js:66)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-news.js:66` calls `GET https://hacker-news.firebaseio.com/v0/item/${id}.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/hacker-news.firebaseio.com/v0/item/<p>.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c1d2913ee21553c", "name": "Dangling fetch: GET https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(url)} (jarvis-bot/src/tools-news.j", "shortDescription": {"text": "Dangling fetch: GET https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(url)} (jarvis-bot/src/tools-news.js:120)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-news.js:120` calls `GET https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(url)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.rss2json.com/v1/api.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-394a712d9ae91eb0", "name": "Dangling fetch: GET https://api.github.com/repos/${repoPath}/commits?per_page=5 (jarvis-bot/src/tools-news.js:206)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/repos/${repoPath}/commits?per_page=5 (jarvis-bot/src/tools-news.js:206)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-news.js:206` calls `GET https://api.github.com/repos/${repoPath}/commits?per_page=5` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/commits`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3f7e16b9787c7f0", "name": "Dangling fetch: GET https://api.github.com/repos/${repoPath} (jarvis-bot/src/tools-news.js:210)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/repos/${repoPath} (jarvis-bot/src/tools-news.js:210)"}, "fullDescription": {"text": "`jarvis-bot/src/tools-news.js:210` calls `GET https://api.github.com/repos/${repoPath}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55b601d71ab4cde6", "name": "Dangling fetch: GET /nyx/api/files (jarvis-bot/src/nyx.js:291)", "shortDescription": {"text": "Dangling fetch: GET /nyx/api/files (jarvis-bot/src/nyx.js:291)"}, "fullDescription": {"text": "`jarvis-bot/src/nyx.js:291` calls `GET /nyx/api/files` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nyx/api/files`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-593c4612d877f8a3", "name": "Dangling fetch: GET /nyx/api/files (jarvis-bot/src/nyx.js:296)", "shortDescription": {"text": "Dangling fetch: GET /nyx/api/files (jarvis-bot/src/nyx.js:296)"}, "fullDescription": {"text": "`jarvis-bot/src/nyx.js:296` calls `GET /nyx/api/files` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nyx/api/files`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84600ad0539485c9", "name": "Dangling fetch: POST /nyx/api/chat (jarvis-bot/src/nyx.js:579)", "shortDescription": {"text": "Dangling fetch: POST /nyx/api/chat (jarvis-bot/src/nyx.js:579)"}, "fullDescription": {"text": "`jarvis-bot/src/nyx.js:579` calls `POST /nyx/api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nyx/api/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20ac585d31bc92ca", "name": "Dangling fetch: GET /nyx/api/pantheon (jarvis-bot/src/nyx.js:608)", "shortDescription": {"text": "Dangling fetch: GET /nyx/api/pantheon (jarvis-bot/src/nyx.js:608)"}, "fullDescription": {"text": "`jarvis-bot/src/nyx.js:608` calls `GET /nyx/api/pantheon` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nyx/api/pantheon`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad3d0d2633841e00", "name": "Dangling fetch: GET /nyx/api/activity?limit=100 (jarvis-bot/src/nyx.js:655)", "shortDescription": {"text": "Dangling fetch: GET /nyx/api/activity?limit=100 (jarvis-bot/src/nyx.js:655)"}, "fullDescription": {"text": "`jarvis-bot/src/nyx.js:655` calls `GET /nyx/api/activity?limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nyx/api/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-77cf2d0f4eb4f7b1", "name": "Dangling fetch: POST /nyx/api/file (jarvis-bot/src/nyx.js:756)", "shortDescription": {"text": "Dangling fetch: POST /nyx/api/file (jarvis-bot/src/nyx.js:756)"}, "fullDescription": {"text": "`jarvis-bot/src/nyx.js:756` calls `POST /nyx/api/file` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nyx/api/file`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a5595c7e48cf7610", "name": "Dangling fetch: POST /nyx/api/exec (jarvis-bot/src/nyx.js:775)", "shortDescription": {"text": "Dangling fetch: POST /nyx/api/exec (jarvis-bot/src/nyx.js:775)"}, "fullDescription": {"text": "`jarvis-bot/src/nyx.js:775` calls `POST /nyx/api/exec` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/nyx/api/exec`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eaa0e00feece45a5", "name": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId} (jarvis-bot/src/tts.js:24)", "shortDescription": {"text": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId} (jarvis-bot/src/tts.js:24)"}, "fullDescription": {"text": "`jarvis-bot/src/tts.js:24` calls `POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.elevenlabs.io/v1/text-to-speech/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b369d87703adb7c", "name": "Dangling fetch: GET /theai/api/status (jarvis-bot/src/theai-dashboard.js:296)", "shortDescription": {"text": "Dangling fetch: GET /theai/api/status (jarvis-bot/src/theai-dashboard.js:296)"}, "fullDescription": {"text": "`jarvis-bot/src/theai-dashboard.js:296` calls `GET /theai/api/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/theai/api/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4038572bf1c7a3b4", "name": "Dangling fetch: GET /theai/api/health (jarvis-bot/src/theai-dashboard.js:297)", "shortDescription": {"text": "Dangling fetch: GET /theai/api/health (jarvis-bot/src/theai-dashboard.js:297)"}, "fullDescription": {"text": "`jarvis-bot/src/theai-dashboard.js:297` calls `GET /theai/api/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/theai/api/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed90749cbad3a17a", "name": "Dangling fetch: GET /theai/api/primitives (jarvis-bot/src/theai-dashboard.js:298)", "shortDescription": {"text": "Dangling fetch: GET /theai/api/primitives (jarvis-bot/src/theai-dashboard.js:298)"}, "fullDescription": {"text": "`jarvis-bot/src/theai-dashboard.js:298` calls `GET /theai/api/primitives` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/theai/api/primitives`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b4f3d64f5119aea", "name": "Dangling fetch: POST /theai/api/chat (jarvis-bot/src/theai-dashboard.js:385)", "shortDescription": {"text": "Dangling fetch: POST /theai/api/chat (jarvis-bot/src/theai-dashboard.js:385)"}, "fullDescription": {"text": "`jarvis-bot/src/theai-dashboard.js:385` calls `POST /theai/api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/theai/api/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f36b4e7ac7db6b4e", "name": "Dangling fetch: POST /theai/api/fork (jarvis-bot/src/theai-dashboard.js:395)", "shortDescription": {"text": "Dangling fetch: POST /theai/api/fork (jarvis-bot/src/theai-dashboard.js:395)"}, "fullDescription": {"text": "`jarvis-bot/src/theai-dashboard.js:395` calls `POST /theai/api/fork` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/theai/api/fork`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ca2fefbc9b66c05e", "name": "Dangling fetch: POST /theai/api/prune (jarvis-bot/src/theai-dashboard.js:411)", "shortDescription": {"text": "Dangling fetch: POST /theai/api/prune (jarvis-bot/src/theai-dashboard.js:411)"}, "fullDescription": {"text": "`jarvis-bot/src/theai-dashboard.js:411` calls `POST /theai/api/prune` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/theai/api/prune`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-56e3766b1da8daa9", "name": "Dangling fetch: POST /theai/api/route (jarvis-bot/src/theai-dashboard.js:428)", "shortDescription": {"text": "Dangling fetch: POST /theai/api/route (jarvis-bot/src/theai-dashboard.js:428)"}, "fullDescription": {"text": "`jarvis-bot/src/theai-dashboard.js:428` calls `POST /theai/api/route` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/theai/api/route`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4557095e40494be0", "name": "Dangling fetch: GET https://api.github.com/repos/${GITHUB_REPO}/commits?per_page=1 (scripts/mesh-test.js:57)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/repos/${GITHUB_REPO}/commits?per_page=1 (scripts/mesh-test.js:57)"}, "fullDescription": {"text": "`scripts/mesh-test.js:57` calls `GET https://api.github.com/repos/${GITHUB_REPO}/commits?per_page=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/commits`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab8b3c68308c92da", "name": "Unused endpoint: POST /scrape", "shortDescription": {"text": "Unused endpoint: POST /scrape"}, "fullDescription": {"text": "`jarvis-bot/scraper/server.py` declares `POST /scrape` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-81397bfffcf09ea3", "name": "Unused endpoint: POST /scrape/multi", "shortDescription": {"text": "Unused endpoint: POST /scrape/multi"}, "fullDescription": {"text": "`jarvis-bot/scraper/server.py` declares `POST /scrape/multi` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59355af6b2719d84", "name": "Unused endpoint: GET /sentiment/{query}", "shortDescription": {"text": "Unused endpoint: GET /sentiment/{query}"}, "fullDescription": {"text": "`jarvis-bot/scraper/server.py` declares `GET /sentiment/{query}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e97f9b8a9b221225", "name": "Unused endpoint: GET /router/status", "shortDescription": {"text": "Unused endpoint: GET /router/status"}, "fullDescription": {"text": "`jarvis-bot/src/shard-router.js` declares `GET /router/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56934ce42cb28717", "name": "Unused endpoint: POST /router/assign", "shortDescription": {"text": "Unused endpoint: POST /router/assign"}, "fullDescription": {"text": "`jarvis-bot/src/shard-router.js` declares `POST /router/assign` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a20628f5a31cd1ba", "name": "Unused endpoint: POST /router/broadcast", "shortDescription": {"text": "Unused endpoint: POST /router/broadcast"}, "fullDescription": {"text": "`jarvis-bot/src/shard-router.js` declares `POST /router/broadcast` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `GET /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c4f0a74c897a39f", "name": "Unused endpoint: POST /api/batch/:id/commit", "shortDescription": {"text": "Unused endpoint: POST /api/batch/:id/commit"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/batch/:id/commit` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ede9cbf539fd866", "name": "Unused endpoint: POST /api/batch/:id/close-commit", "shortDescription": {"text": "Unused endpoint: POST /api/batch/:id/close-commit"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/batch/:id/close-commit` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-328f3695a6778f6e", "name": "Unused endpoint: POST /api/batch/:id/reveal", "shortDescription": {"text": "Unused endpoint: POST /api/batch/:id/reveal"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/batch/:id/reveal` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-241555b3077dcde6", "name": "Unused endpoint: POST /api/batch/:id/settle", "shortDescription": {"text": "Unused endpoint: POST /api/batch/:id/settle"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/batch/:id/settle` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-131c9474edbdf2a1", "name": "Unused endpoint: POST /api/event", "shortDescription": {"text": "Unused endpoint: POST /api/event"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/event` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e12d90997e7fe1a", "name": "Unused endpoint: POST /api/credential", "shortDescription": {"text": "Unused endpoint: POST /api/credential"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/credential` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b05df932d3f950bd", "name": "Unused endpoint: POST /api/mine", "shortDescription": {"text": "Unused endpoint: POST /api/mine"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/mine` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3d39bc86c96a243", "name": "Unused endpoint: POST /api/mine/verify", "shortDescription": {"text": "Unused endpoint: POST /api/mine/verify"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/mine/verify` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd94bd22005ec8c8", "name": "Unused endpoint: POST /api/trust/batch", "shortDescription": {"text": "Unused endpoint: POST /api/trust/batch"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/trust/batch` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee79344b2e6f45d1", "name": "Unused endpoint: POST /api/bitcoin/commit", "shortDescription": {"text": "Unused endpoint: POST /api/bitcoin/commit"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/bitcoin/commit` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-459134038822d941", "name": "Unused endpoint: POST /api/bitcoin/reveal", "shortDescription": {"text": "Unused endpoint: POST /api/bitcoin/reveal"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/bitcoin/reveal` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb3d6426a498134e", "name": "Unused endpoint: POST /api/bitcoin/mine", "shortDescription": {"text": "Unused endpoint: POST /api/bitcoin/mine"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/bitcoin/mine` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5d43036282dbecf", "name": "Unused endpoint: POST /api/bitcoin/credential", "shortDescription": {"text": "Unused endpoint: POST /api/bitcoin/credential"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/bitcoin/credential` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26cbbaf04761d713", "name": "Unused endpoint: POST /api/bitcoin/reputation/burn", "shortDescription": {"text": "Unused endpoint: POST /api/bitcoin/reputation/burn"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/bitcoin/reputation/burn` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad9d23aa9606099e", "name": "Unused endpoint: POST /api/bitcoin/shapley-anchor", "shortDescription": {"text": "Unused endpoint: POST /api/bitcoin/shapley-anchor"}, "fullDescription": {"text": "`cogproof/src/api/server.js` declares `POST /api/bitcoin/shapley-anchor` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76889df7c8e240c5", "name": "Unused endpoint: USE /api/", "shortDescription": {"text": "Unused endpoint: USE /api/"}, "fullDescription": {"text": "`backend/src/server.js` declares `USE /api/` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-972b54078ec2581f", "name": "Unused endpoint: USE /api/health", "shortDescription": {"text": "Unused endpoint: USE /api/health"}, "fullDescription": {"text": "`backend/src/server.js` declares `USE /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d6235a39b2c4c57e", "name": "Unused endpoint: USE /api/prices", "shortDescription": {"text": "Unused endpoint: USE /api/prices"}, "fullDescription": {"text": "`backend/src/server.js` declares `USE /api/prices` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a73f63e9eeeae241", "name": "Unused endpoint: USE /api/tokens", "shortDescription": {"text": "Unused endpoint: USE /api/tokens"}, "fullDescription": {"text": "`backend/src/server.js` declares `USE /api/tokens` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-621bf8c7b692cbb6", "name": "Unused endpoint: USE /api/chains", "shortDescription": {"text": "Unused endpoint: USE /api/chains"}, "fullDescription": {"text": "`backend/src/server.js` declares `USE /api/chains` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9cd7e2cd7bbdef7d", "name": "Unused endpoint: USE /api/github", "shortDescription": {"text": "Unused endpoint: USE /api/github"}, "fullDescription": {"text": "`backend/src/server.js` declares `USE /api/github` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`backend/src/server.js` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ae38010c60493f1", "name": "Unused endpoint: POST /webhook", "shortDescription": {"text": "Unused endpoint: POST /webhook"}, "fullDescription": {"text": "`backend/src/routes/github.js` declares `POST /webhook` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-304b6f2b403d93f7", "name": "Unused endpoint: POST /register", "shortDescription": {"text": "Unused endpoint: POST /register"}, "fullDescription": {"text": "`backend/src/routes/github.js` declares `POST /register` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-431835284e2fe701", "name": "Unused endpoint: POST /flush", "shortDescription": {"text": "Unused endpoint: POST /flush"}, "fullDescription": {"text": "`backend/src/routes/github.js` declares `POST /flush` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86c4d1171e733bb8", "name": "Unused endpoint: GET /:chainId", "shortDescription": {"text": "Unused endpoint: GET /:chainId"}, "fullDescription": {"text": "`backend/src/routes/chains.js` declares `GET /:chainId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a38ab4a7eae7f88", "name": "Unused endpoint: GET /:symbol", "shortDescription": {"text": "Unused endpoint: GET /:symbol"}, "fullDescription": {"text": "`backend/src/routes/prices.js` declares `GET /:symbol` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e98ac95647d495c9", "name": "Unused endpoint: GET /pairs/:base/:quote", "shortDescription": {"text": "Unused endpoint: GET /pairs/:base/:quote"}, "fullDescription": {"text": "`backend/src/routes/prices.js` declares `GET /pairs/:base/:quote` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c236625afb6a8cb", "name": "Unused endpoint: GET /ready", "shortDescription": {"text": "Unused endpoint: GET /ready"}, "fullDescription": {"text": "`backend/src/routes/health.js` declares `GET /ready` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d6d412ba6647f6cc", "name": "Unused endpoint: GET /live", "shortDescription": {"text": "Unused endpoint: GET /live"}, "fullDescription": {"text": "`backend/src/routes/health.js` declares `GET /live` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/22733"}, "properties": {"repository": "WGlynn/VibeSwap", "repoUrl": "https://github.com/WGlynn/VibeSwap", "branch": "main"}, "results": [{"ruleId": "scanner-ca067d3f033c07e9", "level": "note", "message": {"text": "Possibly dead Python function: replace_heading"}, "properties": {"repobilityId": "954d0b21dcd93fca", "scanner": "scanner-primary", "fingerprint": "ca067d3f033c07e9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/scripts/generate_papers_site.py:995"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-81ffea1f1f843bdc", "level": "note", "message": {"text": "Possibly dead Python function: compute_risk"}, "properties": {"repobilityId": "f1d9b78cd17d94c7", "scanner": "scanner-primary", "fingerprint": "81ffea1f1f843bdc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "oracle/regime/cascade_detector.py:121"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-df0abe3ee274ae62", "level": "note", "message": {"text": "Possibly dead Python function: compute_venue_observation_variances"}, "properties": {"repobilityId": "23afdc18ae1199e1", "scanner": "scanner-primary", "fingerprint": "df0abe3ee274ae62", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "oracle/kalman/covariance.py:140"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fd570820ab42594f", "level": "note", "message": {"text": "Possibly dead Python function: compute_trimmed_median"}, "properties": {"repobilityId": "4ab81493aef6eb6f", "scanner": "scanner-primary", "fingerprint": "fd570820ab42594f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "oracle/kalman/covariance.py:180"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-87a8ed9522fff15f", "level": "note", "message": {"text": "Possibly dead Python function: create_data_aggregator"}, "properties": {"repobilityId": "eddd633d45e97cde", "scanner": "scanner-primary", "fingerprint": "87a8ed9522fff15f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "oracle/feeds/aggregator.py:271"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c6e0254035a1656c", "level": "note", "message": {"text": "Possibly dead Python function: adjust_venue_weight"}, "properties": {"repobilityId": "9ad0e7bfc71f2140", "scanner": "scanner-primary", "fingerprint": "c6e0254035a1656c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "oracle/feeds/prices/aggregator.py:233"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2f2d53f6251eea84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/update-build-version.js:23"}, "properties": {"repobilityId": "e3bac0dbaa9ce75e", "scanner": "scanner-primary", "fingerprint": "2f2d53f6251eea84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dec1df5d5063f7fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/validate-build.js:17"}, "properties": {"repobilityId": "8a1799d5ee32ea93", "scanner": "scanner-primary", "fingerprint": "dec1df5d5063f7fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8156349e68959b67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/verify-deployment.js:30"}, "properties": {"repobilityId": "d4388588af729800", "scanner": "scanner-primary", "fingerprint": "8156349e68959b67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd9a307f69b8f6d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/persistance.js:26"}, "properties": {"repobilityId": "bfa9c8342d600070", "scanner": "scanner-primary", "fingerprint": "fd9a307f69b8f6d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4fd564ad0450c129", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/utils/sybilDetection.js:512"}, "properties": {"repobilityId": "fc5e504a90e3a713", "scanner": "scanner-primary", "fingerprint": "4fd564ad0450c129", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-12c2c24cfd405098", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/JarvisPage.jsx:481"}, "properties": {"repobilityId": "3eec2fa305d6ed0b", "scanner": "scanner-primary", "fingerprint": "12c2c24cfd405098", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-30240e6c0ba5abbc", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/JarvisPage.jsx:459"}, "properties": {"repobilityId": "2c950b84b9350cd4", "scanner": "scanner-primary", "fingerprint": "30240e6c0ba5abbc", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5eb69232a9ab0dce", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ForumPage.jsx:579"}, "properties": {"repobilityId": "a212df6c9698be6c", "scanner": "scanner-primary", "fingerprint": "5eb69232a9ab0dce", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fb96e49ef177e56a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components/GameSwapPage.jsx:22"}, "properties": {"repobilityId": "f0036ac8bee3bca3", "scanner": "scanner-primary", "fingerprint": "fb96e49ef177e56a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04155f6245308b56", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TutorialPage.jsx:303"}, "properties": {"repobilityId": "8e87dde0d588905e", "scanner": "scanner-primary", "fingerprint": "04155f6245308b56", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e03a4246016611d4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ContributorsPage.jsx:275"}, "properties": {"repobilityId": "7809bafda9f9e9d9", "scanner": "scanner-primary", "fingerprint": "e03a4246016611d4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dd7122b6d15afecc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AchievementsPage.jsx:207"}, "properties": {"repobilityId": "4ff6e0a793b9623e", "scanner": "scanner-primary", "fingerprint": "dd7122b6d15afecc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7b26a7592b5372ec", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TreasuryPage.jsx:291"}, "properties": {"repobilityId": "531c6d4fd24f8da5", "scanner": "scanner-primary", "fingerprint": "7b26a7592b5372ec", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-62db5ea095b9061d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CRPCPage.jsx:173"}, "properties": {"repobilityId": "433597946648d60c", "scanner": "scanner-primary", "fingerprint": "62db5ea095b9061d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4b83f456b26d786d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ProfilePage.jsx:260"}, "properties": {"repobilityId": "a540e6bd473c1a7c", "scanner": "scanner-primary", "fingerprint": "4b83f456b26d786d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a507a079044dea1f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/WatchlistPage.jsx:225"}, "properties": {"repobilityId": "9e2545432bd4bbc4", "scanner": "scanner-primary", "fingerprint": "a507a079044dea1f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5c657400e3e797f5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DAOToolsPage.jsx:518"}, "properties": {"repobilityId": "20457c150103fa69", "scanner": "scanner-primary", "fingerprint": "5c657400e3e797f5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5675026b47350e9b", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/src/components/RosettaPage.jsx:5540"}, "properties": {"repobilityId": "22e5dc988f03bd67", "scanner": "scanner-primary", "fingerprint": "5675026b47350e9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-39445a266f8404f8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RosettaPage.jsx:956"}, "properties": {"repobilityId": "094599fabcced2c1", "scanner": "scanner-primary", "fingerprint": "39445a266f8404f8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4373f8236f1d03ce", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TransakPage.jsx:496"}, "properties": {"repobilityId": "fa4fbb282a04fae2", "scanner": "scanner-primary", "fingerprint": "4373f8236f1d03ce", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dc8a2b007d856bd2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/APIDocsPage.jsx:447"}, "properties": {"repobilityId": "a7c9fa6afd28fb63", "scanner": "scanner-primary", "fingerprint": "dc8a2b007d856bd2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8df028039116f473", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components/APIDocsPage.jsx:363"}, "properties": {"repobilityId": "b5ff98c3f6fc02ba", "scanner": "scanner-primary", "fingerprint": "8df028039116f473", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0436b7edf33b5fd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/InsurancePage.jsx:349"}, "properties": {"repobilityId": "c20033110b82d066", "scanner": "scanner-primary", "fingerprint": "d0436b7edf33b5fd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-51ae3bd9de4f999d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BadgesPage.jsx:123"}, "properties": {"repobilityId": "810e8c9fccabe686", "scanner": "scanner-primary", "fingerprint": "51ae3bd9de4f999d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ae96f21801de5850", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/NFTPage.jsx:106"}, "properties": {"repobilityId": "89af79011371bf1e", "scanner": "scanner-primary", "fingerprint": "ae96f21801de5850", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6e6f933c42f3f359", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CommitRevealPage.jsx:108"}, "properties": {"repobilityId": "e4e6b0577e481465", "scanner": "scanner-primary", "fingerprint": "6e6f933c42f3f359", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a695d3c665b69c25", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GovernanceProposalsPage.jsx:242"}, "properties": {"repobilityId": "ca04caf858a4bd70", "scanner": "scanner-primary", "fingerprint": "a695d3c665b69c25", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-db89e3fba1470378", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SmartContractPage.jsx:579"}, "properties": {"repobilityId": "38426c55db4457c3", "scanner": "scanner-primary", "fingerprint": "db89e3fba1470378", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-28922efb7526c08b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AgentHub.jsx:348"}, "properties": {"repobilityId": "a2432a30e79c6489", "scanner": "scanner-primary", "fingerprint": "28922efb7526c08b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4d3116ef3477fb86", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/EcosystemPage.jsx:228"}, "properties": {"repobilityId": "612247124d7cb838", "scanner": "scanner-primary", "fingerprint": "4d3116ef3477fb86", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cf1ebffb0b67061d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AutomationPage.jsx:596"}, "properties": {"repobilityId": "725737e3c3ba0aff", "scanner": "scanner-primary", "fingerprint": "cf1ebffb0b67061d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d266d17e6aa9d83f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TokenUnlockPage.jsx:649"}, "properties": {"repobilityId": "29acbf3cedb3c79b", "scanner": "scanner-primary", "fingerprint": "d266d17e6aa9d83f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0a8f05ce26d70683", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/MessageBoard.jsx:114"}, "properties": {"repobilityId": "e3cd021d482fc156", "scanner": "scanner-primary", "fingerprint": "0a8f05ce26d70683", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-132786574ec5ddc9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ActivityPage.jsx:276"}, "properties": {"repobilityId": "592dc550d388287f", "scanner": "scanner-primary", "fingerprint": "132786574ec5ddc9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7f2bcdeb273d657a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/VibePlayer.jsx:288"}, "properties": {"repobilityId": "1bafcb943cbc24d2", "scanner": "scanner-primary", "fingerprint": "7f2bcdeb273d657a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-44d033e1cdfc13a1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/VibeFeed.jsx:531"}, "properties": {"repobilityId": "12a99ac91705269a", "scanner": "scanner-primary", "fingerprint": "44d033e1cdfc13a1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-18006b0aa8bc3264", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RWAHub.jsx:231"}, "properties": {"repobilityId": "742bd1ef5689680c", "scanner": "scanner-primary", "fingerprint": "18006b0aa8bc3264", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d5c37fcb907ecea0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/HomePage.jsx:85"}, "properties": {"repobilityId": "b2433d085debb876", "scanner": "scanner-primary", "fingerprint": "d5c37fcb907ecea0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d92ae11d995bad1e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PersonalityPage.jsx:198"}, "properties": {"repobilityId": "d5d598b0c1e41c6b", "scanner": "scanner-primary", "fingerprint": "d92ae11d995bad1e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-de09d807f6584dd9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/VisionPage.jsx:279"}, "properties": {"repobilityId": "d8fa9dffc63a4b22", "scanner": "scanner-primary", "fingerprint": "de09d807f6584dd9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-dd7e6870fddf5097", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CommandPalette.jsx:365"}, "properties": {"repobilityId": "cebd1e1d06c82ba9", "scanner": "scanner-primary", "fingerprint": "dd7e6870fddf5097", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e892902223cf9d19", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ApprovalManagerPage.jsx:170"}, "properties": {"repobilityId": "ef8c55036d0d7c88", "scanner": "scanner-primary", "fingerprint": "e892902223cf9d19", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e41ce39446e6b8ba", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/PriceChart.jsx:3"}, "properties": {"repobilityId": "52218e91b483d0be", "scanner": "scanner-primary", "fingerprint": "e41ce39446e6b8ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7e0ac26156df27c6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/JarvisOSPage.jsx:537"}, "properties": {"repobilityId": "aa5e25367ed5e72f", "scanner": "scanner-primary", "fingerprint": "7e0ac26156df27c6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d13a5052248ab0e0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LiveStream.jsx:328"}, "properties": {"repobilityId": "c759f10f2050b372", "scanner": "scanner-primary", "fingerprint": "d13a5052248ab0e0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9d9841e37362a278", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ReferralDashboardPage.jsx:530"}, "properties": {"repobilityId": "063211f15643eb27", "scanner": "scanner-primary", "fingerprint": "9d9841e37362a278", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-79f7b78577d3d517", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PortfolioDashboard.jsx:444"}, "properties": {"repobilityId": "abeef076109d0b65", "scanner": "scanner-primary", "fingerprint": "79f7b78577d3d517", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fd690cfe41242e37", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GovernancePage.jsx:561"}, "properties": {"repobilityId": "b9bec7ac8ff143dd", "scanner": "scanner-primary", "fingerprint": "fd690cfe41242e37", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0a8c8c99d167da9a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BridgePage.jsx:222"}, "properties": {"repobilityId": "f66ebe78d58b005c", "scanner": "scanner-primary", "fingerprint": "0a8c8c99d167da9a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-63dcd7a4a0de4fb9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/InfoFiPage.jsx:243"}, "properties": {"repobilityId": "5c662d14aea09eaa", "scanner": "scanner-primary", "fingerprint": "63dcd7a4a0de4fb9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2dcdc46cf0e20c51", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AggregatorPage.jsx:503"}, "properties": {"repobilityId": "6bcea075ba1d19dd", "scanner": "scanner-primary", "fingerprint": "2dcdc46cf0e20c51", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e8df7852664a98ac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PartnersPage.jsx:241"}, "properties": {"repobilityId": "97adcb6ddc7f4688", "scanner": "scanner-primary", "fingerprint": "e8df7852664a98ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b2c288599080fc8a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ReferralPage.jsx:181"}, "properties": {"repobilityId": "7a5ba5495360fe20", "scanner": "scanner-primary", "fingerprint": "b2c288599080fc8a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f8438636883ad3d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SwapHistoryPage.jsx:136"}, "properties": {"repobilityId": "473961a8514c286a", "scanner": "scanner-primary", "fingerprint": "0f8438636883ad3d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-62dc4bc4bfe09c5a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AirdropClaimsPage.jsx:445"}, "properties": {"repobilityId": "ecdab5b41260f336", "scanner": "scanner-primary", "fingerprint": "62dc4bc4bfe09c5a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1850742dcffc712b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/NetworkSelectorPage.jsx:336"}, "properties": {"repobilityId": "f6e44ea88ffa1338", "scanner": "scanner-primary", "fingerprint": "1850742dcffc712b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a7f4dd6161d12e57", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BridgeHistoryPage.jsx:189"}, "properties": {"repobilityId": "ec1ee7627a313559", "scanner": "scanner-primary", "fingerprint": "a7f4dd6161d12e57", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-88d12fd2f29ba4cb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/EducationPage.jsx:382"}, "properties": {"repobilityId": "c448339966f5d8a5", "scanner": "scanner-primary", "fingerprint": "88d12fd2f29ba4cb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f448d47e8971cb51", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SettingsPage.jsx:124"}, "properties": {"repobilityId": "73139fb028538815", "scanner": "scanner-primary", "fingerprint": "f448d47e8971cb51", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7ffc4cc6639a429e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/PredictionMarket.jsx:458"}, "properties": {"repobilityId": "6e5587f7e15645e4", "scanner": "scanner-primary", "fingerprint": "7ffc4cc6639a429e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6a2f8c253c8fdc9d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/JobMarket.jsx:198"}, "properties": {"repobilityId": "a07ba26e2437a9e6", "scanner": "scanner-primary", "fingerprint": "6a2f8c253c8fdc9d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-57ad2364b61d6870", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/StreakTrackerPage.jsx:476"}, "properties": {"repobilityId": "a492c053f618b71e", "scanner": "scanner-primary", "fingerprint": "57ad2364b61d6870", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1f60db31d67c8976", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TeamPage.jsx:280"}, "properties": {"repobilityId": "be8a2b1645414e7e", "scanner": "scanner-primary", "fingerprint": "1f60db31d67c8976", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3d1bd91a42295a83", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TokenCreatorPage.jsx:737"}, "properties": {"repobilityId": "4a52ba890af1a6b1", "scanner": "scanner-primary", "fingerprint": "3d1bd91a42295a83", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-56ad26608ce43dee", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AppStore.jsx:288"}, "properties": {"repobilityId": "e22d7c65028fa0bb", "scanner": "scanner-primary", "fingerprint": "56ad26608ce43dee", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-502732427fb203f6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/BuySellPage.jsx:272"}, "properties": {"repobilityId": "fa1ad9ad930d69ec", "scanner": "scanner-primary", "fingerprint": "502732427fb203f6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-161d5969f0e8e276", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SnapshotPage.jsx:489"}, "properties": {"repobilityId": "3f9294e7ad43e149", "scanner": "scanner-primary", "fingerprint": "161d5969f0e8e276", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fc7ba01cda0d127a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GameTheoryPage.jsx:1055"}, "properties": {"repobilityId": "29fbbe46fe9ad0d6", "scanner": "scanner-primary", "fingerprint": "fc7ba01cda0d127a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d7e1bc6de8ce203a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/PsiNetPage.jsx:259"}, "properties": {"repobilityId": "e70cf054cdd3aedb", "scanner": "scanner-primary", "fingerprint": "d7e1bc6de8ce203a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9d9ba55a346b59ac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RewardsPage.jsx:195"}, "properties": {"repobilityId": "76ca96a7b335377a", "scanner": "scanner-primary", "fingerprint": "9d9ba55a346b59ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1fc450b309cb899b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/components/RewardsPage.jsx:32"}, "properties": {"repobilityId": "b290d0e7abc859e2", "scanner": "scanner-primary", "fingerprint": "1fc450b309cb899b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7445512cca2d8a4b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/RecoverySetup.jsx:614"}, "properties": {"repobilityId": "fd1fbe6531283c0e", "scanner": "scanner-primary", "fingerprint": "7445512cca2d8a4b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f7c49b53aec8813", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/GauntletPage.jsx:196"}, "properties": {"repobilityId": "cfa14603029933c2", "scanner": "scanner-primary", "fingerprint": "0f7c49b53aec8813", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7846b8cb39cb228c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/VestingPage.jsx:600"}, "properties": {"repobilityId": "54d868f1ecbbe70b", "scanner": "scanner-primary", "fingerprint": "7846b8cb39cb228c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5242336db75f601d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ProtocolHealthPage.jsx:459"}, "properties": {"repobilityId": "4c71016af6111488", "scanner": "scanner-primary", "fingerprint": "5242336db75f601d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-69672656214a55db", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/SearchOverlay.jsx:164"}, "properties": {"repobilityId": "917b0f444a7d0438", "scanner": "scanner-primary", "fingerprint": "69672656214a55db", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2757ac392cc1b519", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/TokenList.jsx:44"}, "properties": {"repobilityId": "d5511a579e5fc3d5", "scanner": "scanner-primary", "fingerprint": "2757ac392cc1b519", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-897f967570f07409", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/Dropdown.jsx:67"}, "properties": {"repobilityId": "c9fe19fb2737c9ab", "scanner": "scanner-primary", "fingerprint": "897f967570f07409", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-586a97e89e506772", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/TokenIcon.jsx:47"}, "properties": {"repobilityId": "a55b680c13d281ef", "scanner": "scanner-primary", "fingerprint": "586a97e89e506772", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-35263a39a99794e2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/WalletBalance.jsx:30"}, "properties": {"repobilityId": "93d4399cc0d4f6f5", "scanner": "scanner-primary", "fingerprint": "35263a39a99794e2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ce4035129af1547f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/contexts/ToastContext.jsx:88"}, "properties": {"repobilityId": "5de348ad499dbd42", "scanner": "scanner-primary", "fingerprint": "ce4035129af1547f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3ea2868b60c7acb4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/hooks/useIncentives.jsx:69"}, "properties": {"repobilityId": "9d51419ca95b19bd", "scanner": "scanner-primary", "fingerprint": "3ea2868b60c7acb4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4f91381d158b1d6d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/hooks/useTransactions.jsx:259"}, "properties": {"repobilityId": "dd42d0f681b1c67b", "scanner": "scanner-primary", "fingerprint": "4f91381d158b1d6d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b1ad698663f3a243", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 polyglot/javascript/main.js:1"}, "properties": {"repobilityId": "4908d30172aa4664", "scanner": "scanner-primary", "fingerprint": "b1ad698663f3a243", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61cf05ba6fd79996", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 polyglot/typescript/main.ts:2"}, "properties": {"repobilityId": "1fb4d737fd7d8ad9", "scanner": "scanner-primary", "fingerprint": "61cf05ba6fd79996", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-42d91dc54a1ab08f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/test/magnum-opus.test.js:13"}, "properties": {"repobilityId": "4ee373010ad4810f", "scanner": "scanner-primary", "fingerprint": "42d91dc54a1ab08f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee986a844b7999ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/verify-digest.js:112"}, "properties": {"repobilityId": "96f91a3318bb1dc3", "scanner": "scanner-primary", "fingerprint": "ee986a844b7999ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-752a15cc263bfc18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/mario-sim.js:179"}, "properties": {"repobilityId": "b4cf36e4117f7785", "scanner": "scanner-primary", "fingerprint": "752a15cc263bfc18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54bc1ccdf2d7132d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/run-gate.js:53"}, "properties": {"repobilityId": "7633dd107bf75711", "scanner": "scanner-primary", "fingerprint": "54bc1ccdf2d7132d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52db9231e6b51901", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/scripts/seed-licho-attribution.js:90"}, "properties": {"repobilityId": "594f20afc898a67f", "scanner": "scanner-primary", "fingerprint": "52db9231e6b51901", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3acbac3c91e78902", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/constellation.js:24"}, "properties": {"repobilityId": "41b900645854dc54", "scanner": "scanner-primary", "fingerprint": "3acbac3c91e78902", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a9f1a04afcaf6f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/reward-signal.js:104"}, "properties": {"repobilityId": "2ac553898cd02269", "scanner": "scanner-primary", "fingerprint": "7a9f1a04afcaf6f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f5933750601ca55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/vibe-emissions.js:56"}, "properties": {"repobilityId": "f416e46e41d113fc", "scanner": "scanner-primary", "fingerprint": "6f5933750601ca55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15fed68810f2e328", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mi-host.js:567"}, "properties": {"repobilityId": "acbb1e079aace4cf", "scanner": "scanner-primary", "fingerprint": "15fed68810f2e328", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d17f8a7f17fafc5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-router.js:70"}, "properties": {"repobilityId": "2b3ef021ec7ed9a6", "scanner": "scanner-primary", "fingerprint": "0d17f8a7f17fafc5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40d791cbf6a71887", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-dedup.js:42"}, "properties": {"repobilityId": "8b0a924328ecbc63", "scanner": "scanner-primary", "fingerprint": "40d791cbf6a71887", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0a47421e104f4f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/voice-gate.test.js:10"}, "properties": {"repobilityId": "b145bfa3db99dae6", "scanner": "scanner-primary", "fingerprint": "c0a47421e104f4f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f298838f66fd612", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/x402.js:461"}, "properties": {"repobilityId": "50add616cbf99b69", "scanner": "scanner-primary", "fingerprint": "0f298838f66fd612", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd8c1ef0ce4eb6f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/ckb-generator.js:62"}, "properties": {"repobilityId": "09cdee4e424b697c", "scanner": "scanner-primary", "fingerprint": "bd8c1ef0ce4eb6f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c308b5a38829d55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/moderation.js:25"}, "properties": {"repobilityId": "7311d9da2d8fdc85", "scanner": "scanner-primary", "fingerprint": "5c308b5a38829d55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e922513b34dfbe2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/attribution-bridge.js:157"}, "properties": {"repobilityId": "c6831a6ed46b963b", "scanner": "scanner-primary", "fingerprint": "3e922513b34dfbe2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-069027db543f04e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/consensus.js:185"}, "properties": {"repobilityId": "3110caeb23413698", "scanner": "scanner-primary", "fingerprint": "069027db543f04e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e14a744da137147e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 jarvis-bot/src/claude.js:842"}, "properties": {"repobilityId": "99d67d7b5f9444b2", "scanner": "scanner-primary", "fingerprint": "e14a744da137147e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b97ce92035b37261", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/claude.js:103"}, "properties": {"repobilityId": "06ee6d77856fd866", "scanner": "scanner-primary", "fingerprint": "b97ce92035b37261", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b6cdb734748023a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/knowledge-chain.js:405"}, "properties": {"repobilityId": "abe99b7aa448debb", "scanner": "scanner-primary", "fingerprint": "7b6cdb734748023a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5acca65ecd56d0be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/reputation-consensus.js:80"}, "properties": {"repobilityId": "0c4834fe067b3658", "scanner": "scanner-primary", "fingerprint": "5acca65ecd56d0be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e7a2dcac8663f54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/compute-economics.js:153"}, "properties": {"repobilityId": "81ca83b52459717e", "scanner": "scanner-primary", "fingerprint": "3e7a2dcac8663f54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5ad6adae7e8529e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/pantheon.js:569"}, "properties": {"repobilityId": "c84835af3e1548c9", "scanner": "scanner-primary", "fingerprint": "d5ad6adae7e8529e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02f654540a144b8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/telegram-monitor.js:96"}, "properties": {"repobilityId": "4bd8dcae1f8001c4", "scanner": "scanner-primary", "fingerprint": "02f654540a144b8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89d903ddfb58de64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-predictions.js:53"}, "properties": {"repobilityId": "93cc96265156d31c", "scanner": "scanner-primary", "fingerprint": "89d903ddfb58de64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86a41941bc165669", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mi-bridge.js:281"}, "properties": {"repobilityId": "6865af7b589d77fb", "scanner": "scanner-primary", "fingerprint": "86a41941bc165669", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03b23cd27786d12c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/knowledge-bridge.js:103"}, "properties": {"repobilityId": "a226df62999ac4b5", "scanner": "scanner-primary", "fingerprint": "03b23cd27786d12c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e46265a395155d9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/verkle-context.js:308"}, "properties": {"repobilityId": "96dd392e8382521d", "scanner": "scanner-primary", "fingerprint": "e46265a395155d9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d51a0cb8717144a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/infofi.js:132"}, "properties": {"repobilityId": "af78f4d2ed559eb5", "scanner": "scanner-primary", "fingerprint": "d51a0cb8717144a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37893428ac5e5a42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/pantheon-merkle.js:286"}, "properties": {"repobilityId": "2262ddd4821d6665", "scanner": "scanner-primary", "fingerprint": "37893428ac5e5a42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04d1abdf50c18864", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/wallet.js:104"}, "properties": {"repobilityId": "dd54dbde464addb3", "scanner": "scanner-primary", "fingerprint": "04d1abdf50c18864", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f3472552583ff43", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/contract-bridge.js:142"}, "properties": {"repobilityId": "18da4f612a93790d", "scanner": "scanner-primary", "fingerprint": "2f3472552583ff43", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8426f370beb2c4b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/learning.js:205"}, "properties": {"repobilityId": "8880591c7e67ed2a", "scanner": "scanner-primary", "fingerprint": "8426f370beb2c4b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f574dffedad79bb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/trading.js:78"}, "properties": {"repobilityId": "c4629f33a9d91140", "scanner": "scanner-primary", "fingerprint": "f574dffedad79bb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80f9c1353c6ab19c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-memory.js:75"}, "properties": {"repobilityId": "526096ba6cb3d132", "scanner": "scanner-primary", "fingerprint": "80f9c1353c6ab19c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e0339f7ca49c5a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/memory.js:53"}, "properties": {"repobilityId": "b54cb04fdfddb85f", "scanner": "scanner-primary", "fingerprint": "5e0339f7ca49c5a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2718fd576bcc470b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/self-eval.js:100"}, "properties": {"repobilityId": "1ce2f1f6c9ba2549", "scanner": "scanner-primary", "fingerprint": "2718fd576bcc470b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-259e8212412159f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/web-api.js:333"}, "properties": {"repobilityId": "d49a0c6535906a77", "scanner": "scanner-primary", "fingerprint": "259e8212412159f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a314861893170cf5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/passive-attribution.js:83"}, "properties": {"repobilityId": "7c4954ad850fc8ce", "scanner": "scanner-primary", "fingerprint": "a314861893170cf5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0b6eea4d5efae02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/group-context.js:188"}, "properties": {"repobilityId": "3c55e4cd317cea2c", "scanner": "scanner-primary", "fingerprint": "d0b6eea4d5efae02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f776210c291b7050", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/self-improve.js:54"}, "properties": {"repobilityId": "d8b1c3250ce745e2", "scanner": "scanner-primary", "fingerprint": "f776210c291b7050", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e93b30f8039c76e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/proactive.js:295"}, "properties": {"repobilityId": "767c1db3d20c2e11", "scanner": "scanner-primary", "fingerprint": "e93b30f8039c76e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7a383c6d8fd3555", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-scheduler.js:37"}, "properties": {"repobilityId": "6887437cd2ad1024", "scanner": "scanner-primary", "fingerprint": "d7a383c6d8fd3555", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5369b9012bd9164e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-social.js:241"}, "properties": {"repobilityId": "b9f8a16ca5f13e65", "scanner": "scanner-primary", "fingerprint": "5369b9012bd9164e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-381d3727baeee0cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/crpc.js:137"}, "properties": {"repobilityId": "7b7f582452d88bd3", "scanner": "scanner-primary", "fingerprint": "381d3727baeee0cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df087e8f03678fd3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/intelligence.js:355"}, "properties": {"repobilityId": "2b1e5a17901e607f", "scanner": "scanner-primary", "fingerprint": "df087e8f03678fd3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1a849bcc4486b65e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/rosetta.js:1354"}, "properties": {"repobilityId": "852fb18aa60a54db", "scanner": "scanner-primary", "fingerprint": "1a849bcc4486b65e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df76357e36e59b7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/context-memory.js:72"}, "properties": {"repobilityId": "0807d3751c898428", "scanner": "scanner-primary", "fingerprint": "df76357e36e59b7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9335df8079fc944", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/archive-mirror.js:77"}, "properties": {"repobilityId": "1ff106a7a9003e78", "scanner": "scanner-primary", "fingerprint": "c9335df8079fc944", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e1875968c95538f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/idea-pipeline.js:274"}, "properties": {"repobilityId": "57d1faad9c1afaaa", "scanner": "scanner-primary", "fingerprint": "0e1875968c95538f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b4cddbeebb3d582", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/persona.test.js:22"}, "properties": {"repobilityId": "6b2c5a3edd3cad97", "scanner": "scanner-primary", "fingerprint": "0b4cddbeebb3d582", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9410b655eacb67ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/inner-dialogue.js:92"}, "properties": {"repobilityId": "e266b3d70152e0a1", "scanner": "scanner-primary", "fingerprint": "9410b655eacb67ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0491460c77544208", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tracker.js:61"}, "properties": {"repobilityId": "0b790e740521750e", "scanner": "scanner-primary", "fingerprint": "0491460c77544208", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37ad0c7b0a1bd7f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mesh-monitor.js:76"}, "properties": {"repobilityId": "02d91a660a36348e", "scanner": "scanner-primary", "fingerprint": "37ad0c7b0a1bd7f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52a335959bbdd60a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard-learnings.js:85"}, "properties": {"repobilityId": "c0216ac4d3472d91", "scanner": "scanner-primary", "fingerprint": "52a335959bbdd60a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-695851d25b75c124", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/directives.js:141"}, "properties": {"repobilityId": "6cb71e1fbaa187a4", "scanner": "scanner-primary", "fingerprint": "695851d25b75c124", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4db9f4bae851a794", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/security-checks.js:100"}, "properties": {"repobilityId": "a4aace2a85958981", "scanner": "scanner-primary", "fingerprint": "4db9f4bae851a794", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f597bc82ab2fee5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/dialogue-to-code.js:76"}, "properties": {"repobilityId": "d945e0205bfc3f9e", "scanner": "scanner-primary", "fingerprint": "f597bc82ab2fee5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4b557045f9c2f48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shadow.js:106"}, "properties": {"repobilityId": "712f3c7ff9b42b05", "scanner": "scanner-primary", "fingerprint": "c4b557045f9c2f48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f7bbd218c452c99f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/cross-context.js:64"}, "properties": {"repobilityId": "c49cc60a7af7a92b", "scanner": "scanner-primary", "fingerprint": "f7bbd218c452c99f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ed659c422df55c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/antispam.js:208"}, "properties": {"repobilityId": "946719e3ed3689ba", "scanner": "scanner-primary", "fingerprint": "0ed659c422df55c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-307231bbe8865644", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/llm-provider.js:307"}, "properties": {"repobilityId": "8e3133784b621fef", "scanner": "scanner-primary", "fingerprint": "307231bbe8865644", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72739fdb22df6b33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/anchor.js:43"}, "properties": {"repobilityId": "3c8cdf89d765e05b", "scanner": "scanner-primary", "fingerprint": "72739fdb22df6b33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e831ca4320d95feb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/broadcast.js:270"}, "properties": {"repobilityId": "0853cdd9fb629758", "scanner": "scanner-primary", "fingerprint": "e831ca4320d95feb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db7463aff526f7f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/privacy.js:52"}, "properties": {"repobilityId": "c892c0c1fa31cec3", "scanner": "scanner-primary", "fingerprint": "db7463aff526f7f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c333a0d6e03904bd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shard.js:63"}, "properties": {"repobilityId": "e803c9be57af314f", "scanner": "scanner-primary", "fingerprint": "c333a0d6e03904bd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c339f3a72a27f5f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/relay.js:37"}, "properties": {"repobilityId": "e6d3b48fdf8bf626", "scanner": "scanner-primary", "fingerprint": "c339f3a72a27f5f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a201b4eff8acc5c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/persona.js:259"}, "properties": {"repobilityId": "89fb3031dd314705", "scanner": "scanner-primary", "fingerprint": "a201b4eff8acc5c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-693380a09347ce5c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/knowledge-constitution.js:117"}, "properties": {"repobilityId": "e2c259eebced8843", "scanner": "scanner-primary", "fingerprint": "693380a09347ce5c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa34e2824984a315", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 jarvis-bot/src/index.js:3397"}, "properties": {"repobilityId": "fe2e72236420dfff", "scanner": "scanner-primary", "fingerprint": "fa34e2824984a315", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5bb0594e383e5c80", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/index.js:333"}, "properties": {"repobilityId": "358bb17f505d9c67", "scanner": "scanner-primary", "fingerprint": "5bb0594e383e5c80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62f36313261acb7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/katarakti.js:115"}, "properties": {"repobilityId": "3480b8d5ec8aa218", "scanner": "scanner-primary", "fingerprint": "62f36313261acb7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d86a177f3b17009", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/router.js:95"}, "properties": {"repobilityId": "c4dcca0f5eb0e5d7", "scanner": "scanner-primary", "fingerprint": "5d86a177f3b17009", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc8d6428f6ee5b1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/task-queue.js:153"}, "properties": {"repobilityId": "4bd2af4591511c50", "scanner": "scanner-primary", "fingerprint": "cc8d6428f6ee5b1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8626aa51b990233a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/operator.js:66"}, "properties": {"repobilityId": "62b880ea2f3a5e83", "scanner": "scanner-primary", "fingerprint": "8626aa51b990233a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c88d5a4fb1faf405", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/threads.js:41"}, "properties": {"repobilityId": "ff93bcabd1cef51e", "scanner": "scanner-primary", "fingerprint": "c88d5a4fb1faf405", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54957065c0d0c894", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/social.js:65"}, "properties": {"repobilityId": "9674c1451310cdbb", "scanner": "scanner-primary", "fingerprint": "54957065c0d0c894", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-687c3085c328fd39", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mi-manifest.js:149"}, "properties": {"repobilityId": "550544ba6e2ae206", "scanner": "scanner-primary", "fingerprint": "687c3085c328fd39", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80dfc094d502ce94", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/vip-detector.js:198"}, "properties": {"repobilityId": "21dcccacd1e56883", "scanner": "scanner-primary", "fingerprint": "80dfc094d502ce94", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8bd16ce9c60b1c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/deep-storage.js:46"}, "properties": {"repobilityId": "79e2fa9b9ace7f86", "scanner": "scanner-primary", "fingerprint": "f8bd16ce9c60b1c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02e4e6f76350ed95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/autonomous.js:87"}, "properties": {"repobilityId": "64c6ac8857a79364", "scanner": "scanner-primary", "fingerprint": "02e4e6f76350ed95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d00a8c562beffb1a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/limni.js:83"}, "properties": {"repobilityId": "71db261e6bcc3663", "scanner": "scanner-primary", "fingerprint": "d00a8c562beffb1a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba121a72c2e67953", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/message-collision.js:128"}, "properties": {"repobilityId": "4385e9ab7d751438", "scanner": "scanner-primary", "fingerprint": "ba121a72c2e67953", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3932a787768536f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/time-awareness.js:98"}, "properties": {"repobilityId": "c10a7e801f15617c", "scanner": "scanner-primary", "fingerprint": "3932a787768536f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9047347b7aa24aea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/nervos-talks.js:256"}, "properties": {"repobilityId": "0358dc83f5243870", "scanner": "scanner-primary", "fingerprint": "9047347b7aa24aea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7fbd87a6a482fbd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/sticker.js:96"}, "properties": {"repobilityId": "11bf1bae41052aaf", "scanner": "scanner-primary", "fingerprint": "e7fbd87a6a482fbd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49b54d08dbb73325", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/user-memory.js:42"}, "properties": {"repobilityId": "feba32947c9da8b5", "scanner": "scanner-primary", "fingerprint": "49b54d08dbb73325", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-380e93ffb6c46d78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-xp.js:92"}, "properties": {"repobilityId": "5b3af6251b6c9ea8", "scanner": "scanner-primary", "fingerprint": "380e93ffb6c46d78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7df91b37deb2d1f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/hell.js:55"}, "properties": {"repobilityId": "a59f86a80457f61c", "scanner": "scanner-primary", "fingerprint": "7df91b37deb2d1f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79b15c4b55ace726", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/reward-batcher.js:70"}, "properties": {"repobilityId": "9f572f139e97ca6a", "scanner": "scanner-primary", "fingerprint": "79b15c4b55ace726", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02e822216265b45f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/state-store.js:254"}, "properties": {"repobilityId": "1a759f780b958c0b", "scanner": "scanner-primary", "fingerprint": "02e822216265b45f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d79837e435bf0ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tts.js:89"}, "properties": {"repobilityId": "385efecf14be2bc7", "scanner": "scanner-primary", "fingerprint": "4d79837e435bf0ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fd79182755fc9d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/agent-gateway.js:63"}, "properties": {"repobilityId": "44c0583b86ed17cb", "scanner": "scanner-primary", "fingerprint": "0fd79182755fc9d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d989e7fabf796b73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/tools-preferences.js:34"}, "properties": {"repobilityId": "76c95bd0707460cc", "scanner": "scanner-primary", "fingerprint": "d989e7fabf796b73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33372bc646a57635", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/mining.js:194"}, "properties": {"repobilityId": "577ab1671e611f3a", "scanner": "scanner-primary", "fingerprint": "33372bc646a57635", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d57184b97aed2b6f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/shards/trading-shard.js:122"}, "properties": {"repobilityId": "e6e125503cf38ee3", "scanner": "scanner-primary", "fingerprint": "d57184b97aed2b6f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b251be88a79aba08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 jarvis-bot/src/chatterbox/index.js:258"}, "properties": {"repobilityId": "b24d50c540b5adee", "scanner": "scanner-primary", "fingerprint": "b251be88a79aba08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2317aec7c473df9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mesh-test.js:16"}, "properties": {"repobilityId": "d5b0f4eadd1b9aa8", "scanner": "scanner-primary", "fingerprint": "2317aec7c473df9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-304918aac02e7e6c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/weekly-digest.js:202"}, "properties": {"repobilityId": "eb6d876f00043878", "scanner": "scanner-primary", "fingerprint": "304918aac02e7e6c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3b6b4576edf45fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bd-toolkit.js:143"}, "properties": {"repobilityId": "c16ee9f26a2d058f", "scanner": "scanner-primary", "fingerprint": "f3b6b4576edf45fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8f5e7811f47fdf1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-thesis-docx.js:409"}, "properties": {"repobilityId": "a165d33e8ea91ea8", "scanner": "scanner-primary", "fingerprint": "c8f5e7811f47fdf1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80cacdc48aa18a15", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tooling/docs/convert-whitepaper.js:194"}, "properties": {"repobilityId": "90d1bd101c77387c", "scanner": "scanner-primary", "fingerprint": "80cacdc48aa18a15", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd37ed174cb929d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/compression-mining/mine.js:163"}, "properties": {"repobilityId": "ea46d2620e566076", "scanner": "scanner-primary", "fingerprint": "bd37ed174cb929d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e33242f514b8407", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/api/server.js:89"}, "properties": {"repobilityId": "0a933950f935f86e", "scanner": "scanner-primary", "fingerprint": "1e33242f514b8407", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-456d641f4c2bdfe6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/commit-reveal/commit-reveal.js:191"}, "properties": {"repobilityId": "7f6dd795cc14cec1", "scanner": "scanner-primary", "fingerprint": "456d641f4c2bdfe6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26a6bf9ce4674bef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/bitcoin/op-return.js:417"}, "properties": {"repobilityId": "d1c34162b30cc7bd", "scanner": "scanner-primary", "fingerprint": "26a6bf9ce4674bef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-435151e0afbb9e87", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/shapley-dag/shapley.js:257"}, "properties": {"repobilityId": "e5ea66786fdffe54", "scanner": "scanner-primary", "fingerprint": "435151e0afbb9e87", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0edbe7c7dec76642", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/trust/behavior-analyzer.js:416"}, "properties": {"repobilityId": "861454e53da44e15", "scanner": "scanner-primary", "fingerprint": "0edbe7c7dec76642", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b4709910244d556", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cogproof/src/credentials/credential-registry.js:280"}, "properties": {"repobilityId": "4f3b86f003badb7a", "scanner": "scanner-primary", "fingerprint": "5b4709910244d556", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3ac84e5e376effa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 script/slippage-demo.js:31"}, "properties": {"repobilityId": "4640511e78a15fa0", "scanner": "scanner-primary", "fingerprint": "a3ac84e5e376effa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a37b598a3b821e7", "level": "warning", "message": {"text": "Dockerfile runs as root: polyglot/dockerfile/Dockerfile"}, "properties": {"repobilityId": "794a7302582d9c11", "scanner": "scanner-primary", "fingerprint": "2a37b598a3b821e7", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-1345030a07f4bdbf", "level": "warning", "message": {"text": "Dockerfile runs as root: jarvis-bot/Dockerfile"}, "properties": {"repobilityId": "d67e8a4f23800a85", "scanner": "scanner-primary", "fingerprint": "1345030a07f4bdbf", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-a642399a11719f83", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "65d59f91f819f051", "scanner": "scanner-primary", "fingerprint": "a642399a11719f83", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-a642399a11719f83", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "bc7b866120794564", "scanner": "scanner-primary", "fingerprint": "a642399a11719f83", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/Dockerfile"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-dca865e22154bfc3", "level": "warning", "message": {"text": "Dockerfile runs as root: jarvis-bot/scraper/Dockerfile"}, "properties": {"repobilityId": "2ff60c182e4ec057", "scanner": "scanner-primary", "fingerprint": "dca865e22154bfc3", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-3eadcc2d5ba24843", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "73f149a00fb05c14", "scanner": "scanner-primary", "fingerprint": "3eadcc2d5ba24843", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/scraper/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-333eeeb172e71265", "level": "warning", "message": {"text": "Dockerfile runs as root: jarvis-bot/src/chatterbox/Dockerfile"}, "properties": {"repobilityId": "4ae30aae4befddff", "scanner": "scanner-primary", "fingerprint": "333eeeb172e71265", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-4f445dde560da51f", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "5e92f3e2cb9436d4", "scanner": "scanner-primary", "fingerprint": "4f445dde560da51f", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/chatterbox/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41194acb18a7e41a", "level": "warning", "message": {"text": "Dockerfile runs as root: cogproof/Dockerfile"}, "properties": {"repobilityId": "5701f199b219158b", "scanner": "scanner-primary", "fingerprint": "41194acb18a7e41a", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-0992010a00f454bc", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "a4ebe1465e1103bc", "scanner": "scanner-primary", "fingerprint": "0992010a00f454bc", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cogproof/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0992010a00f454bc", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "04ab04a601f45ffd", "scanner": "scanner-primary", "fingerprint": "0992010a00f454bc", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cogproof/Dockerfile"}, "region": {"startLine": 8}}}]}, {"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-c01120dfd1383794", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/index.html:139"}, "properties": {"repobilityId": "e5e3013c3e1d93a5", "scanner": "scanner-primary", "fingerprint": "c01120dfd1383794", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/index.html"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-5e892c506df9f9bf", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in frontend/api/mind.js:38"}, "properties": {"repobilityId": "1553c633e508548e", "scanner": "scanner-primary", "fingerprint": "5e892c506df9f9bf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/api/mind.js"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-572393febe4d865d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in frontend/api/chat.js:51"}, "properties": {"repobilityId": "e0a11108953ef7d4", "scanner": "scanner-primary", "fingerprint": "572393febe4d865d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/api/chat.js"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-d83782e2988a3f54", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in frontend/api/prices.js:184"}, "properties": {"repobilityId": "2d57e08113703e8d", "scanner": "scanner-primary", "fingerprint": "d83782e2988a3f54", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/api/prices.js"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-c8e0c719c0f63b95", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/youtube-e01.html:665"}, "properties": {"repobilityId": "7d6cb13d8fdbd523", "scanner": "scanner-primary", "fingerprint": "c8e0c719c0f63b95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/public/youtube-e01.html"}, "region": {"startLine": 665}}}]}, {"ruleId": "scanner-63a666893b7b0a66", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/wardenclyffe.html:233"}, "properties": {"repobilityId": "e3ab7042e4b84c95", "scanner": "scanner-primary", "fingerprint": "63a666893b7b0a66", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/public/wardenclyffe.html"}, "region": {"startLine": 233}}}]}, {"ruleId": "scanner-034c2ada3e8dcd4f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/decks.html:442"}, "properties": {"repobilityId": "0744a4ec94b3be6a", "scanner": "scanner-primary", "fingerprint": "034c2ada3e8dcd4f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/public/decks.html"}, "region": {"startLine": 442}}}]}, {"ruleId": "scanner-661c9b9818ba3d80", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/papers/index.html:431"}, "properties": {"repobilityId": "8ea76a2c0696d23f", "scanner": "scanner-primary", "fingerprint": "661c9b9818ba3d80", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/public/papers/index.html"}, "region": {"startLine": 431}}}]}, {"ruleId": "scanner-2a1b036dd98a3f0b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/utils/entropyPassword.js:236"}, "properties": {"repobilityId": "b3f9104d71fc7a6d", "scanner": "scanner-primary", "fingerprint": "2a1b036dd98a3f0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/utils/entropyPassword.js"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-a918e0fe0d883875", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/JarvisPage.jsx:459"}, "properties": {"repobilityId": "fdc2b56839421577", "scanner": "scanner-primary", "fingerprint": "a918e0fe0d883875", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/JarvisPage.jsx"}, "region": {"startLine": 459}}}]}, {"ruleId": "scanner-bc211a0ebfc79b72", "level": "note", "message": {"text": "Insecure pattern 'document_write' in frontend/src/components/RosettaPage.jsx:1068"}, "properties": {"repobilityId": "a0f26b5febb742a3", "scanner": "scanner-primary", "fingerprint": "bc211a0ebfc79b72", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/RosettaPage.jsx"}, "region": {"startLine": 1068}}}]}, {"ruleId": "scanner-ef07690675e05d8e", "level": "note", "message": {"text": "Insecure pattern 'document_write' in frontend/src/components/PaperBackup.jsx:250"}, "properties": {"repobilityId": "90c86f29ad2488e5", "scanner": "scanner-primary", "fingerprint": "ef07690675e05d8e", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/PaperBackup.jsx"}, "region": {"startLine": 250}}}]}, {"ruleId": "scanner-f71d3819ef45fae8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/voice-bridge.html:136"}, "properties": {"repobilityId": "0090072b0730791a", "scanner": "scanner-primary", "fingerprint": "f71d3819ef45fae8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/voice-bridge.html"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-90462805c45932d4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in jarvis-bot/scripts/run-gate.js:14"}, "properties": {"repobilityId": "c7dcc0d3d12d664a", "scanner": "scanner-primary", "fingerprint": "90462805c45932d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/scripts/run-gate.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-06f7e1c411d89cdb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/constellation.js:322"}, "properties": {"repobilityId": "f0b43d269a27f2d1", "scanner": "scanner-primary", "fingerprint": "06f7e1c411d89cdb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/constellation.js"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-f552ca1c4ee9e192", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/voice.html:359"}, "properties": {"repobilityId": "08ba433060c76649", "scanner": "scanner-primary", "fingerprint": "f552ca1c4ee9e192", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/voice.html"}, "region": {"startLine": 359}}}]}, {"ruleId": "scanner-74c02369b584649f", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in jarvis-bot/src/tools-utility.js:229"}, "properties": {"repobilityId": "162dc55eafb6530c", "scanner": "scanner-primary", "fingerprint": "74c02369b584649f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/tools-utility.js"}, "region": {"startLine": 229}}}]}, {"ruleId": "scanner-8af669fd2c6e7442", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in jarvis-bot/src/index.js:398"}, "properties": {"repobilityId": "1039dcfbc1bd96d4", "scanner": "scanner-primary", "fingerprint": "8af669fd2c6e7442", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/index.js"}, "region": {"startLine": 398}}}]}, {"ruleId": "scanner-efb39d03cb24f708", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in jarvis-bot/src/index.js:8831"}, "properties": {"repobilityId": "0c7f3889e776b954", "scanner": "scanner-primary", "fingerprint": "efb39d03cb24f708", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/index.js"}, "region": {"startLine": 8831}}}]}, {"ruleId": "scanner-2bbe0076165f6b77", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in jarvis-bot/src/social.js:145"}, "properties": {"repobilityId": "1f81c9eae5b459d3", "scanner": "scanner-primary", "fingerprint": "2bbe0076165f6b77", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/social.js"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-7f04b3ca9b628998", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in jarvis-bot/src/nyx.js:113"}, "properties": {"repobilityId": "dc8f380ffa33964a", "scanner": "scanner-primary", "fingerprint": "7f04b3ca9b628998", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/nyx.js"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-6767cb22eb94785a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in jarvis-bot/src/nyx.js:21"}, "properties": {"repobilityId": "86e6adfb54b4102e", "scanner": "scanner-primary", "fingerprint": "6767cb22eb94785a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/nyx.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-2f213a336985d7ac", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/nyx.js:553"}, "properties": {"repobilityId": "f8233055f2fcae3f", "scanner": "scanner-primary", "fingerprint": "2f213a336985d7ac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/nyx.js"}, "region": {"startLine": 553}}}]}, {"ruleId": "scanner-fb0620395be57c28", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in jarvis-bot/src/theai-dashboard.js:309"}, "properties": {"repobilityId": "ea71e0867266d258", "scanner": "scanner-primary", "fingerprint": "fb0620395be57c28", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/theai-dashboard.js"}, "region": {"startLine": 309}}}]}, {"ruleId": "scanner-a28f315b83a5bff6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in docs/architecture/ipfs-contribution-graph-spec/ipfs-contribution-graph-spec.html:76"}, "properties": {"repobilityId": "a838f6b2a5391aaa", "scanner": "scanner-primary", "fingerprint": "a28f315b83a5bff6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/architecture/ipfs-contribution-graph-spec/ipfs-contribution-graph-spec.html"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-b17709b1a49eef2b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/weekly-digest.js:21"}, "properties": {"repobilityId": "1b5c4634b235ff07", "scanner": "scanner-primary", "fingerprint": "b17709b1a49eef2b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/weekly-digest.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-5f008974d95e38bb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/bd-toolkit.js:31"}, "properties": {"repobilityId": "8a05e666077feb01", "scanner": "scanner-primary", "fingerprint": "5f008974d95e38bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/bd-toolkit.js"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-814e115f84a09280", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in cogproof/src/api/server.js:50"}, "properties": {"repobilityId": "6f7e5cdca9c212fb", "scanner": "scanner-primary", "fingerprint": "814e115f84a09280", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cogproof/src/api/server.js"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-dcb659e0e29ced7d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5a7afcd93c3cd866", "scanner": "scanner-primary", "fingerprint": "dcb659e0e29ced7d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/jarvis-shard.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-dcb659e0e29ced7d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "15691bae866bb93c", "scanner": "scanner-primary", "fingerprint": "dcb659e0e29ced7d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/jarvis-shard.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-dcb659e0e29ced7d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dd88d4b16acdcf05", "scanner": "scanner-primary", "fingerprint": "dcb659e0e29ced7d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/jarvis-shard.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-dcb659e0e29ced7d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "13c4c298f1d8e8ac", "scanner": "scanner-primary", "fingerprint": "dcb659e0e29ced7d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/jarvis-shard.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-e958862cf5863f46", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "cdeec07f945e9d88", "scanner": "scanner-primary", "fingerprint": "e958862cf5863f46", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/jarvis-shard.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9108f200712682bb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ee3803cffe898e3e", "scanner": "scanner-primary", "fingerprint": "9108f200712682bb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/x-feed-daily.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-9108f200712682bb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "28e1351e2f14dfb4", "scanner": "scanner-primary", "fingerprint": "9108f200712682bb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/x-feed-daily.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-9e69da2705d7aba7", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "9690420b222dd977", "scanner": "scanner-primary", "fingerprint": "9e69da2705d7aba7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/x-feed-daily.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0d43da25bc1ff5ed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f4b1f7a8aef82033", "scanner": "scanner-primary", "fingerprint": "0d43da25bc1ff5ed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dag-attribution-sweep.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-0d43da25bc1ff5ed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "05c972b23772415a", "scanner": "scanner-primary", "fingerprint": "0d43da25bc1ff5ed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dag-attribution-sweep.yml"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-0d43da25bc1ff5ed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "39a8d615b960aa4f", "scanner": "scanner-primary", "fingerprint": "0d43da25bc1ff5ed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dag-attribution-sweep.yml"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "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": 44}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d25b8eb1275d8f5a", "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": 144}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d25b8eb1275d8f5a", "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": 174}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d25b8eb1275d8f5a", "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": 198}}}]}, {"ruleId": "scanner-7f1e4527e6fecffa", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "60c42cd7cfe89df7", "scanner": "scanner-primary", "fingerprint": "7f1e4527e6fecffa", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0dc55539758d3645", "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": 298}}}]}, {"ruleId": "scanner-21aa0c39a7c1ca23", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b44de8a1b4cdca90", "scanner": "scanner-primary", "fingerprint": "21aa0c39a7c1ca23", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-a7e7a76a566ddcc2", "level": "note", "message": {"text": "Very large file: frontend/src/utils/rosetta-engine.js (3299 lines)"}, "properties": {"repobilityId": "751d762903ac5665", "scanner": "scanner-primary", "fingerprint": "a7e7a76a566ddcc2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3526e1a6b0b47900", "level": "note", "message": {"text": "Very large file: frontend/src/components/JarvisPage.jsx (1313 lines)"}, "properties": {"repobilityId": "3637c90df614f9fd", "scanner": "scanner-primary", "fingerprint": "3526e1a6b0b47900", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ca51316a997005b", "level": "note", "message": {"text": "Very large file: frontend/src/components/SwapCore.jsx (1561 lines)"}, "properties": {"repobilityId": "cedeeb615db2b789", "scanner": "scanner-primary", "fingerprint": "8ca51316a997005b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-60f25632d41f9dca", "level": "note", "message": {"text": "Very large file: frontend/src/components/RosettaPage.jsx (6783 lines)"}, "properties": {"repobilityId": "2463662d5394e7cd", "scanner": "scanner-primary", "fingerprint": "60f25632d41f9dca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a785fb8f47edc48", "level": "note", "message": {"text": "Very large file: frontend/src/components/SmartContractPage.jsx (1102 lines)"}, "properties": {"repobilityId": "a3a8a4cde1e8526f", "scanner": "scanner-primary", "fingerprint": "7a785fb8f47edc48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-766a34eee1b6654a", "level": "note", "message": {"text": "Very large file: frontend/src/components/TokenUnlockPage.jsx (1085 lines)"}, "properties": {"repobilityId": "f98eb3e1333b50c5", "scanner": "scanner-primary", "fingerprint": "766a34eee1b6654a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0a8741ce7f7419e3", "level": "note", "message": {"text": "Very large file: frontend/src/components/PersonalityExplainer.jsx (1284 lines)"}, "properties": {"repobilityId": "6b1aee6e2bcd5c90", "scanner": "scanner-primary", "fingerprint": "0a8741ce7f7419e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-80340eaa286b9d52", "level": "note", "message": {"text": "Very large file: frontend/src/components/JarvisOSPage.jsx (1736 lines)"}, "properties": {"repobilityId": "032b2fbe8b78d30d", "scanner": "scanner-primary", "fingerprint": "80340eaa286b9d52", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1604c83a34773ca4", "level": "note", "message": {"text": "Very large file: frontend/src/components/VibeNamesPage.jsx (1109 lines)"}, "properties": {"repobilityId": "b8ad6fe65a11d83d", "scanner": "scanner-primary", "fingerprint": "1604c83a34773ca4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f8f53d1734d1e13", "level": "note", "message": {"text": "Very large file: frontend/src/components/JobMarket.jsx (1192 lines)"}, "properties": {"repobilityId": "c868c051b5a48705", "scanner": "scanner-primary", "fingerprint": "1f8f53d1734d1e13", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9e5cdcc062d706f2", "level": "note", "message": {"text": "Very large file: frontend/src/components/GameTheoryPage.jsx (1245 lines)"}, "properties": {"repobilityId": "d7b7ba56d223efa5", "scanner": "scanner-primary", "fingerprint": "9e5cdcc062d706f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3b2cab6e4096d142", "level": "note", "message": {"text": "Very large file: frontend/src/components/RecoverySetup.jsx (1348 lines)"}, "properties": {"repobilityId": "aae720a8849998ae", "scanner": "scanner-primary", "fingerprint": "3b2cab6e4096d142", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a02b1664200a47a0", "level": "note", "message": {"text": "Very large file: jarvis-bot/src/tools-education.js (941 lines)"}, "properties": {"repobilityId": "2569eeb317649a71", "scanner": "scanner-primary", "fingerprint": "a02b1664200a47a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e0b9ee48a61629f", "level": "note", "message": {"text": "Very large file: jarvis-bot/src/claude.js (2608 lines)"}, "properties": {"repobilityId": "3ffa5c5238a495a3", "scanner": "scanner-primary", "fingerprint": "5e0b9ee48a61629f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9d5d1f88b01a5deb", "level": "note", "message": {"text": "Very large file: jarvis-bot/src/memory.js (962 lines)"}, "properties": {"repobilityId": "4cb1501cf19860b8", "scanner": "scanner-primary", "fingerprint": "9d5d1f88b01a5deb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0bd4a4ed3d387d03", "level": "note", "message": {"text": "Very large file: jarvis-bot/src/web-api.js (1571 lines)"}, "properties": {"repobilityId": "1e7f0656bc08c6e3", "scanner": "scanner-primary", "fingerprint": "0bd4a4ed3d387d03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-74f5882e451820c1", "level": "note", "message": {"text": "Very large file: jarvis-bot/src/rosetta.js (1389 lines)"}, "properties": {"repobilityId": "8a92b8fa255137a8", "scanner": "scanner-primary", "fingerprint": "74f5882e451820c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa2d8ef8c1c24da9", "level": "note", "message": {"text": "Very large file: jarvis-bot/src/llm-provider.js (2271 lines)"}, "properties": {"repobilityId": "f52481582dcfafb5", "scanner": "scanner-primary", "fingerprint": "fa2d8ef8c1c24da9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cc39e5b9d92e2d33", "level": "note", "message": {"text": "Very large file: jarvis-bot/src/index.js (9640 lines)"}, "properties": {"repobilityId": "ce3cc06d349b42de", "scanner": "scanner-primary", "fingerprint": "cc39e5b9d92e2d33", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8845ba258ea59679", "level": "note", "message": {"text": "Very large file: ckb/tests/src/fuzz.rs (2353 lines)"}, "properties": {"repobilityId": "16f36ee244fd5a9a", "scanner": "scanner-primary", "fingerprint": "8845ba258ea59679", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e2e81bf13014924b", "level": "note", "message": {"text": "Very large file: ckb/tests/src/integration.rs (2148 lines)"}, "properties": {"repobilityId": "63ad705fcb4b404e", "scanner": "scanner-primary", "fingerprint": "e2e81bf13014924b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ee00abbaff3dc6f4", "level": "note", "message": {"text": "Very large file: ckb/tests/src/adversarial.rs (1480 lines)"}, "properties": {"repobilityId": "21e97954bcfcf9d5", "scanner": "scanner-primary", "fingerprint": "ee00abbaff3dc6f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-16acbe613f85375f", "level": "note", "message": {"text": "Very large file: ckb/lib/types/src/lib.rs (1706 lines)"}, "properties": {"repobilityId": "fb7b54f1514e271c", "scanner": "scanner-primary", "fingerprint": "16acbe613f85375f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7668c7456be7c2a8", "level": "note", "message": {"text": "Very large file: ckb/lib/lending-math/src/lib.rs (2127 lines)"}, "properties": {"repobilityId": "1b86ce19cdbfa427", "scanner": "scanner-primary", "fingerprint": "7668c7456be7c2a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-929e487b0a8ee2e9", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/flashloan.rs (2551 lines)"}, "properties": {"repobilityId": "2b867a383c8ae20b", "scanner": "scanner-primary", "fingerprint": "929e487b0a8ee2e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c04ec762599ecf3e", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/data_feed.rs (2938 lines)"}, "properties": {"repobilityId": "075df9b680e939a2", "scanner": "scanner-primary", "fingerprint": "c04ec762599ecf3e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5ee2df1633e5bdbe", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/monitoring.rs (2990 lines)"}, "properties": {"repobilityId": "855cee55b70e3f6e", "scanner": "scanner-primary", "fingerprint": "5ee2df1633e5bdbe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-06b2cd4afe115d46", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/orderbook.rs (2786 lines)"}, "properties": {"repobilityId": "735dfcabae827743", "scanner": "scanner-primary", "fingerprint": "06b2cd4afe115d46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-efe1cce1c527113b", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/validator.rs (2934 lines)"}, "properties": {"repobilityId": "6e1b4a444588d58c", "scanner": "scanner-primary", "fingerprint": "efe1cce1c527113b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1aa817ab47019332", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/auction_v2.rs (2742 lines)"}, "properties": {"repobilityId": "e020bd1cfd7865da", "scanner": "scanner-primary", "fingerprint": "1aa817ab47019332", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a691da9673f92d30", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/vesting.rs (2642 lines)"}, "properties": {"repobilityId": "c464699d5672c87f", "scanner": "scanner-primary", "fingerprint": "a691da9673f92d30", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a484283f82de51bd", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/scheduler.rs (3368 lines)"}, "properties": {"repobilityId": "77dbdd4a36f47b03", "scanner": "scanner-primary", "fingerprint": "a484283f82de51bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-758bf95903b197ee", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/identity.rs (2800 lines)"}, "properties": {"repobilityId": "82649dd3eb9e8212", "scanner": "scanner-primary", "fingerprint": "758bf95903b197ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9b55af2cc3f73811", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/token_economics.rs (2376 lines)"}, "properties": {"repobilityId": "18ffb5c47f5678df", "scanner": "scanner-primary", "fingerprint": "9b55af2cc3f73811", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e99399223e075a30", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/prediction.rs (3410 lines)"}, "properties": {"repobilityId": "a3c793cb1392299e", "scanner": "scanner-primary", "fingerprint": "e99399223e075a30", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f85e1796cf68537", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/lib.rs (3954 lines)"}, "properties": {"repobilityId": "6c1df82070c6aa36", "scanner": "scanner-primary", "fingerprint": "1f85e1796cf68537", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f8cd3532d5595f2f", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/staking.rs (2109 lines)"}, "properties": {"repobilityId": "f550a9eb46b73c0c", "scanner": "scanner-primary", "fingerprint": "f8cd3532d5595f2f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-251271a2050d85f6", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/notify.rs (2553 lines)"}, "properties": {"repobilityId": "b718535185b85411", "scanner": "scanner-primary", "fingerprint": "251271a2050d85f6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5d9b6bc82a0efb65", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/simulator.rs (3026 lines)"}, "properties": {"repobilityId": "45c54de96a8e50c0", "scanner": "scanner-primary", "fingerprint": "5d9b6bc82a0efb65", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-37176498d02a1b25", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/compliance.rs (2428 lines)"}, "properties": {"repobilityId": "ce7eb07f211f00f4", "scanner": "scanner-primary", "fingerprint": "37176498d02a1b25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-42f6903c69a0379d", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/accounting.rs (2948 lines)"}, "properties": {"repobilityId": "982bf9da835295a2", "scanner": "scanner-primary", "fingerprint": "42f6903c69a0379d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-64dfd50fa7028333", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/checkpoint.rs (3047 lines)"}, "properties": {"repobilityId": "fd746c9371d9772a", "scanner": "scanner-primary", "fingerprint": "64dfd50fa7028333", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e8eab3497be6706", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/testing.rs (2649 lines)"}, "properties": {"repobilityId": "eb2781c63b3807b1", "scanner": "scanner-primary", "fingerprint": "5e8eab3497be6706", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cc04650aa8f3b9ef", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/snapshot.rs (2926 lines)"}, "properties": {"repobilityId": "d4d65369da55ecfc", "scanner": "scanner-primary", "fingerprint": "cc04650aa8f3b9ef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a0775213966f8e4f", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/liquidity.rs (2701 lines)"}, "properties": {"repobilityId": "c63e49af82733c03", "scanner": "scanner-primary", "fingerprint": "a0775213966f8e4f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-46375df5299d94cc", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/math_ext.rs (1954 lines)"}, "properties": {"repobilityId": "76e443cea60bd9e0", "scanner": "scanner-primary", "fingerprint": "46375df5299d94cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f33e967ad4c3e96", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/circuit_breaker.rs (3330 lines)"}, "properties": {"repobilityId": "84b76c2e6009ba88", "scanner": "scanner-primary", "fingerprint": "9f33e967ad4c3e96", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ed606ccefbc9e1cc", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/metrics.rs (2869 lines)"}, "properties": {"repobilityId": "d193696bced12b55", "scanner": "scanner-primary", "fingerprint": "ed606ccefbc9e1cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d1603ae7bf4c6678", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/escrow.rs (2811 lines)"}, "properties": {"repobilityId": "a7e28531d871bf06", "scanner": "scanner-primary", "fingerprint": "d1603ae7bf4c6678", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4922cd28ade4bb6d", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/strategy.rs (3327 lines)"}, "properties": {"repobilityId": "d4ec7e449dad592c", "scanner": "scanner-primary", "fingerprint": "4922cd28ade4bb6d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2625f38da4fa33ad", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/antibot.rs (3159 lines)"}, "properties": {"repobilityId": "1f1adc817153ec0c", "scanner": "scanner-primary", "fingerprint": "2625f38da4fa33ad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f8029da6484e1c11", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/router.rs (3508 lines)"}, "properties": {"repobilityId": "5af5a2682a318097", "scanner": "scanner-primary", "fingerprint": "f8029da6484e1c11", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-80f1ac604e2e50b8", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/cache.rs (2762 lines)"}, "properties": {"repobilityId": "283ab01f97281d03", "scanner": "scanner-primary", "fingerprint": "80f1ac604e2e50b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d374afc3bb61bad4", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/serde_cell.rs (2837 lines)"}, "properties": {"repobilityId": "4ae9b284bd7b11f3", "scanner": "scanner-primary", "fingerprint": "d374afc3bb61bad4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a1821b3590cb7972", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/cross_chain.rs (2553 lines)"}, "properties": {"repobilityId": "402a4899248027df", "scanner": "scanner-primary", "fingerprint": "a1821b3590cb7972", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-65b69d956e909fd3", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/arbitrage.rs (2881 lines)"}, "properties": {"repobilityId": "7a83622bfe28c4e3", "scanner": "scanner-primary", "fingerprint": "65b69d956e909fd3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b4da3d77003f54df", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/dao_voting.rs (2637 lines)"}, "properties": {"repobilityId": "7e700adf47393caf", "scanner": "scanner-primary", "fingerprint": "b4da3d77003f54df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6e6439872076aef9", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/auction.rs (3191 lines)"}, "properties": {"repobilityId": "114f07e0990ee883", "scanner": "scanner-primary", "fingerprint": "6e6439872076aef9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6f192c11a298eb1b", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/governance.rs (3167 lines)"}, "properties": {"repobilityId": "8eb98680bd699459", "scanner": "scanner-primary", "fingerprint": "6f192c11a298eb1b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d48e873965d156da", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/bridge.rs (2676 lines)"}, "properties": {"repobilityId": "7f12d037a189f5aa", "scanner": "scanner-primary", "fingerprint": "d48e873965d156da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d30c9bef01e89d56", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/settlement.rs (3213 lines)"}, "properties": {"repobilityId": "78455a01f3ad5757", "scanner": "scanner-primary", "fingerprint": "d30c9bef01e89d56", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-43dcf5c810c85b40", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/incentive.rs (2548 lines)"}, "properties": {"repobilityId": "8e483d58b29d07df", "scanner": "scanner-primary", "fingerprint": "43dcf5c810c85b40", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-98194341b5309847", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/lending.rs (2662 lines)"}, "properties": {"repobilityId": "6d1d65798cd5e860", "scanner": "scanner-primary", "fingerprint": "98194341b5309847", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-45217c61c86a8cf4", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/emission.rs (2464 lines)"}, "properties": {"repobilityId": "bda2776383b97830", "scanner": "scanner-primary", "fingerprint": "45217c61c86a8cf4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-80552a23e9e04254", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/upgrade.rs (2686 lines)"}, "properties": {"repobilityId": "a144941e7c2efd45", "scanner": "scanner-primary", "fingerprint": "80552a23e9e04254", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d4d000f3c7fe7e6e", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/treasury.rs (3023 lines)"}, "properties": {"repobilityId": "8f52ccb9001b07a8", "scanner": "scanner-primary", "fingerprint": "d4d000f3c7fe7e6e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-23482f2d8556d129", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/migration.rs (2261 lines)"}, "properties": {"repobilityId": "f3a0f2d8e833ebd3", "scanner": "scanner-primary", "fingerprint": "23482f2d8556d129", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d5e803971602d05a", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/keeper.rs (3586 lines)"}, "properties": {"repobilityId": "f31ba3f58c93057e", "scanner": "scanner-primary", "fingerprint": "d5e803971602d05a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e54cdd070c08f79d", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/gauge.rs (2653 lines)"}, "properties": {"repobilityId": "5b338803ee24bc91", "scanner": "scanner-primary", "fingerprint": "e54cdd070c08f79d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-550077be0204207a", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/whitelist.rs (2755 lines)"}, "properties": {"repobilityId": "dc57549894b39aa3", "scanner": "scanner-primary", "fingerprint": "550077be0204207a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-436617b1b29d353a", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/pricing.rs (2882 lines)"}, "properties": {"repobilityId": "c9d06d5989ff66ce", "scanner": "scanner-primary", "fingerprint": "436617b1b29d353a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3a87de9a61e88539", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/pool.rs (2816 lines)"}, "properties": {"repobilityId": "5337146b38dd8a80", "scanner": "scanner-primary", "fingerprint": "3a87de9a61e88539", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c9ec8a746f564d88", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/batch.rs (2823 lines)"}, "properties": {"repobilityId": "8e54e623336a4e45", "scanner": "scanner-primary", "fingerprint": "c9ec8a746f564d88", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a91526422cb9f6ec", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/multisig.rs (2868 lines)"}, "properties": {"repobilityId": "04ab4a03a1ed05b3", "scanner": "scanner-primary", "fingerprint": "a91526422cb9f6ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b716330995a172c1", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/risk.rs (3741 lines)"}, "properties": {"repobilityId": "a538de9a62004a1d", "scanner": "scanner-primary", "fingerprint": "b716330995a172c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-392193ee29fb0a44", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/collector.rs (2540 lines)"}, "properties": {"repobilityId": "b7a7cf9a9c5011ee", "scanner": "scanner-primary", "fingerprint": "392193ee29fb0a44", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f893e1246a6e6a73", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/protocol_state.rs (2921 lines)"}, "properties": {"repobilityId": "aa3b561962cdd91a", "scanner": "scanner-primary", "fingerprint": "f893e1246a6e6a73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7f90e48084386285", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/config.rs (2619 lines)"}, "properties": {"repobilityId": "0cf54c330d26497c", "scanner": "scanner-primary", "fingerprint": "7f90e48084386285", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c0aaf5836d936eb7", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/insurance.rs (2934 lines)"}, "properties": {"repobilityId": "55ad7cce2a487efe", "scanner": "scanner-primary", "fingerprint": "c0aaf5836d936eb7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-368f2f0b69ddc87f", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/rate_limiter.rs (2611 lines)"}, "properties": {"repobilityId": "b9eeb60167d89473", "scanner": "scanner-primary", "fingerprint": "368f2f0b69ddc87f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-464a0b302281ea0f", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/fees.rs (3220 lines)"}, "properties": {"repobilityId": "15f4ddf1322d8db5", "scanner": "scanner-primary", "fingerprint": "464a0b302281ea0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c6c92fbd6a82ac43", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/indexer.rs (2580 lines)"}, "properties": {"repobilityId": "963cbad1ee7d090d", "scanner": "scanner-primary", "fingerprint": "c6c92fbd6a82ac43", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5d481b797cc3e5bf", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/knowledge.rs (3373 lines)"}, "properties": {"repobilityId": "c8dc6178dec6ed53", "scanner": "scanner-primary", "fingerprint": "5d481b797cc3e5bf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ff6897c7998c1f48", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/portfolio.rs (4402 lines)"}, "properties": {"repobilityId": "913eedff094d1dce", "scanner": "scanner-primary", "fingerprint": "ff6897c7998c1f48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-58cc98f353eb04ce", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/reputation.rs (2631 lines)"}, "properties": {"repobilityId": "97ca67b18fe583f7", "scanner": "scanner-primary", "fingerprint": "58cc98f353eb04ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3c7deca5350cae04", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/rollup.rs (2956 lines)"}, "properties": {"repobilityId": "2c07487a2fb810e2", "scanner": "scanner-primary", "fingerprint": "3c7deca5350cae04", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b7cef86f3d8745bd", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/order_router.rs (2933 lines)"}, "properties": {"repobilityId": "75c87cd6061cd86d", "scanner": "scanner-primary", "fingerprint": "b7cef86f3d8745bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d77cfa8e58f3df65", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/permission.rs (3020 lines)"}, "properties": {"repobilityId": "232778bf682ca7cb", "scanner": "scanner-primary", "fingerprint": "d77cfa8e58f3df65", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-207e2ac96e75659a", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/consensus.rs (2941 lines)"}, "properties": {"repobilityId": "b16cdfb7a141e6b8", "scanner": "scanner-primary", "fingerprint": "207e2ac96e75659a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3fc85106887df2f3", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/delegate.rs (2863 lines)"}, "properties": {"repobilityId": "2f8e464b1a54924f", "scanner": "scanner-primary", "fingerprint": "3fc85106887df2f3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6ae064cf9e0e400b", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/analytics.rs (2597 lines)"}, "properties": {"repobilityId": "c611c02acba3e679", "scanner": "scanner-primary", "fingerprint": "6ae064cf9e0e400b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7e56560bf34d1e3f", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/token.rs (3851 lines)"}, "properties": {"repobilityId": "d32b799b8b5c4d1d", "scanner": "scanner-primary", "fingerprint": "7e56560bf34d1e3f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7ca3117b5a666080", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/market_maker.rs (2906 lines)"}, "properties": {"repobilityId": "fe4b974a3b384d92", "scanner": "scanner-primary", "fingerprint": "7ca3117b5a666080", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b3d1df6c125ec520", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/assembler.rs (2989 lines)"}, "properties": {"repobilityId": "254277060939c74c", "scanner": "scanner-primary", "fingerprint": "b3d1df6c125ec520", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6730b302b6a7f5d0", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/rewards.rs (2564 lines)"}, "properties": {"repobilityId": "56fd837ead8cc00f", "scanner": "scanner-primary", "fingerprint": "6730b302b6a7f5d0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-018069967969d94b", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/miner.rs (2979 lines)"}, "properties": {"repobilityId": "107b165a3f36636c", "scanner": "scanner-primary", "fingerprint": "018069967969d94b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fc9eeb0da8a933b2", "level": "note", "message": {"text": "Very large file: ckb/sdk/src/oracle.rs (2134 lines)"}, "properties": {"repobilityId": "6dd5784f26caa2ee", "scanner": "scanner-primary", "fingerprint": "fc9eeb0da8a933b2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-9e94dee9f37e2093", "level": "note", "message": {"text": "169 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "9e94dee9f37e2093", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "61340a9a39ddfdeb", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-e0463a73bef1f651", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: jarvis-bot/src/chatterbox/package.json"}, "properties": {"repobilityId": "627603d0b191e24c", "scanner": "scanner-primary", "fingerprint": "e0463a73bef1f651", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/src/chatterbox/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "37daae5cfa87a38a", "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": "8519254a2d41561f", "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": "89de304a15f04ef4", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "2a1e8980990ac04c", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "0fa4e200b8a795c6", "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": "95cfba599ce86486", "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": "38858b95276ac455", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-c37b2ef6af1adb65", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/feedback_crash-resilient-memory.md"}, "properties": {"repobilityId": "e59e6b7c8aa0049d", "scanner": "scanner-primary", "fingerprint": "c37b2ef6af1adb65", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-template/.claude/memory/feedback_crash-resilient-memory.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6844298ebaf42191", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/feedback_50pct-context-reboot.md"}, "properties": {"repobilityId": "04501f4d872f557a", "scanner": "scanner-primary", "fingerprint": "6844298ebaf42191", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-template/.claude/memory/feedback_50pct-context-reboot.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-810d1b1a7a863eab", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/autopilot-loop.md"}, "properties": {"repobilityId": "a51e4f519a6f0a64", "scanner": "scanner-primary", "fingerprint": "810d1b1a7a863eab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-template/.claude/memory/autopilot-loop.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-411f7ddab6be5b1d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: jarvis-template/.claude/memory/primitive_verbal-to-gate.md"}, "properties": {"repobilityId": "be1de26dca5ca0ed", "scanner": "scanner-primary", "fingerprint": "411f7ddab6be5b1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-template/.claude/memory/primitive_verbal-to-gate.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-455847485a85530d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: jarvis-template/.claude/session-chain/README.md"}, "properties": {"repobilityId": "d593f7f390bd6a07", "scanner": "scanner-primary", "fingerprint": "455847485a85530d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-template/.claude/session-chain/README.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-71442e5a4ef940aa", "level": "none", "message": {"text": "Commented-code block (16 lines) in frontend/src/utils/trustChain.js:624"}, "properties": {"repobilityId": "b4c8c925126887c5", "scanner": "scanner-primary", "fingerprint": "71442e5a4ef940aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e77294995af0218", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/sybilDetection.js:48"}, "properties": {"repobilityId": "7d606630d9fda18f", "scanner": "scanner-primary", "fingerprint": "3e77294995af0218", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30b0e8fe8accb2b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/utils/sybilDetection.js:514"}, "properties": {"repobilityId": "ad418ac2da9d0d05", "scanner": "scanner-primary", "fingerprint": "30b0e8fe8accb2b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a3cf0bc99380b1fb", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/protocol-constants.js:8"}, "properties": {"repobilityId": "673c428fabc207f9", "scanner": "scanner-primary", "fingerprint": "a3cf0bc99380b1fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca4448d9d3b15cbd", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/soundboard-constants.js:1"}, "properties": {"repobilityId": "73044418f6db98d3", "scanner": "scanner-primary", "fingerprint": "ca4448d9d3b15cbd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09e3c0c0af618542", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/utils/vibe-tokenomics.js:11"}, "properties": {"repobilityId": "36eef422d323f83d", "scanner": "scanner-primary", "fingerprint": "09e3c0c0af618542", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5423044ab059aed8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/utils/proofs.js:322"}, "properties": {"repobilityId": "d3e8648177e4947d", "scanner": "scanner-primary", "fingerprint": "5423044ab059aed8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ff1fa21a7981d58c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/finality.js:42"}, "properties": {"repobilityId": "805c2017b18afad9", "scanner": "scanner-primary", "fingerprint": "ff1fa21a7981d58c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-864e9fef37f0ed7c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/rosetta-engine.js:649"}, "properties": {"repobilityId": "0efac3730fe33bd8", "scanner": "scanner-primary", "fingerprint": "864e9fef37f0ed7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa8298aaae4d6be1", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/ckb-constants.js:3"}, "properties": {"repobilityId": "b3e4d77a5f74b051", "scanner": "scanner-primary", "fingerprint": "aa8298aaae4d6be1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ffb8bc82e96b3c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/constants.js:12"}, "properties": {"repobilityId": "a01e711541bf1031", "scanner": "scanner-primary", "fingerprint": "5ffb8bc82e96b3c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab43e4047c64c908", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/TreasuryPage.jsx:8"}, "properties": {"repobilityId": "33c36dbee7bc8d83", "scanner": "scanner-primary", "fingerprint": "ab43e4047c64c908", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2e56962678e33a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/CRPCPage.jsx:356"}, "properties": {"repobilityId": "95da6bce6ac02188", "scanner": "scanner-primary", "fingerprint": "f2e56962678e33a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-659520da3ac82344", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/DAOToolsPage.jsx:9"}, "properties": {"repobilityId": "d562ee1b0e4ab3a5", "scanner": "scanner-primary", "fingerprint": "659520da3ac82344", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0615bc0104a3f25", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/RosettaPage.jsx:3101"}, "properties": {"repobilityId": "31e1a753c5d3e092", "scanner": "scanner-primary", "fingerprint": "f0615bc0104a3f25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce8ddb0a93a8fd49", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/IdeaPage.jsx:9"}, "properties": {"repobilityId": "cf8b037803014f96", "scanner": "scanner-primary", "fingerprint": "ce8ddb0a93a8fd49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1025a00b7c5f8080", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/OnboardingTour.jsx:4"}, "properties": {"repobilityId": "c94d089b98b490f4", "scanner": "scanner-primary", "fingerprint": "1025a00b7c5f8080", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7230722061698741", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/DePINHub.jsx:7"}, "properties": {"repobilityId": "94d804727f1d4334", "scanner": "scanner-primary", "fingerprint": "7230722061698741", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d19ce1f4847e965", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/FeeCalculatorPage.jsx:8"}, "properties": {"repobilityId": "32563bb00b40ec69", "scanner": "scanner-primary", "fingerprint": "3d19ce1f4847e965", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22d320975f8e8782", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/MessageBoard.jsx:8"}, "properties": {"repobilityId": "344433ff2f9e7f22", "scanner": "scanner-primary", "fingerprint": "22d320975f8e8782", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a830898ea4ffeea", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/PersonalityExplainer.jsx:151"}, "properties": {"repobilityId": "4ff9fea3ed37754c", "scanner": "scanner-primary", "fingerprint": "5a830898ea4ffeea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5bcd8171527f60b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/CommandPalette.jsx:5"}, "properties": {"repobilityId": "3ead3e249e6d9873", "scanner": "scanner-primary", "fingerprint": "e5bcd8171527f60b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fb45fca9d2abc9f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ProposalDetailPage.jsx:8"}, "properties": {"repobilityId": "a3343968d264ff00", "scanner": "scanner-primary", "fingerprint": "1fb45fca9d2abc9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06c3d6a7521a018b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/GovernancePage.jsx:7"}, "properties": {"repobilityId": "577eed1f186dadc0", "scanner": "scanner-primary", "fingerprint": "06c3d6a7521a018b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2aa856e1426d664", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/InfoFiPage.jsx:7"}, "properties": {"repobilityId": "0fa08abbc2638423", "scanner": "scanner-primary", "fingerprint": "f2aa856e1426d664", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cec7506b96e6d5c5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/InfoFiPage.jsx:57"}, "properties": {"repobilityId": "662171443c9a47bf", "scanner": "scanner-primary", "fingerprint": "cec7506b96e6d5c5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-40bd5cc9ecdca5b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/GovernanceDelegatePage.jsx:9"}, "properties": {"repobilityId": "67f442bca2dc0eb8", "scanner": "scanner-primary", "fingerprint": "40bd5cc9ecdca5b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85859ab3900806ec", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/Hero3DScene.jsx:7"}, "properties": {"repobilityId": "873fbb95105c0a1c", "scanner": "scanner-primary", "fingerprint": "85859ab3900806ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90da4b8d1ea6f43d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/SafariGuide.jsx:6"}, "properties": {"repobilityId": "1e226cf443092a3b", "scanner": "scanner-primary", "fingerprint": "90da4b8d1ea6f43d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c78ccc2d313bb67a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/MedicineWheel.jsx:12"}, "properties": {"repobilityId": "ff8872aae7538e2c", "scanner": "scanner-primary", "fingerprint": "c78ccc2d313bb67a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d0479c734bf0f6a", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/RewardsPage.jsx:31"}, "properties": {"repobilityId": "62030dc82b9ade08", "scanner": "scanner-primary", "fingerprint": "6d0479c734bf0f6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e8807376aa9a554", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/MindMesh.jsx:10"}, "properties": {"repobilityId": "bac01afb7d979694", "scanner": "scanner-primary", "fingerprint": "7e8807376aa9a554", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a98b7948157e02f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/TokenBadge.jsx:3"}, "properties": {"repobilityId": "70887a004b8d940e", "scanner": "scanner-primary", "fingerprint": "a98b7948157e02f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6dace573cb08b5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/Timeline.jsx:3"}, "properties": {"repobilityId": "dc145b4099f5d40e", "scanner": "scanner-primary", "fingerprint": "b6dace573cb08b5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10ee7ea2a04bfbf7", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/ui/PriceChart.jsx:8"}, "properties": {"repobilityId": "bfd5ab97dd093160", "scanner": "scanner-primary", "fingerprint": "10ee7ea2a04bfbf7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b3f59b15fc16238", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/BatchCountdown.jsx:5"}, "properties": {"repobilityId": "42be3cb35f7dacf6", "scanner": "scanner-primary", "fingerprint": "0b3f59b15fc16238", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7f92b79b994fa3c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/ChainBadge.jsx:1"}, "properties": {"repobilityId": "0fc2415274992cfb", "scanner": "scanner-primary", "fingerprint": "b7f92b79b994fa3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0c91b9f9f96391e", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/ui/Ouroboros.jsx:5"}, "properties": {"repobilityId": "b63e243fa060cb34", "scanner": "scanner-primary", "fingerprint": "c0c91b9f9f96391e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8222e2b81bd5d4b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ui/terminal/TerminalButton.jsx:1"}, "properties": {"repobilityId": "24c131141fd12c0e", "scanner": "scanner-primary", "fingerprint": "8222e2b81bd5d4b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c91f63a0407f5cb", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/ui/terminal/Accent3DScene.jsx:5"}, "properties": {"repobilityId": "c51ed00805d18378", "scanner": "scanner-primary", "fingerprint": "4c91f63a0407f5cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c554f241934e196", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/ui/terminal/TerminalPanel.jsx:6"}, "properties": {"repobilityId": "76dc6100266bdfb6", "scanner": "scanner-primary", "fingerprint": "1c554f241934e196", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1bc1704bd58b160", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/ui/terminal/Accent3D.jsx:4"}, "properties": {"repobilityId": "3ca11f51d182c64c", "scanner": "scanner-primary", "fingerprint": "e1bc1704bd58b160", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5680f146390ba8a8", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/ui/terminal/index.js:1"}, "properties": {"repobilityId": "a4e5ea6762c1b93c", "scanner": "scanner-primary", "fingerprint": "5680f146390ba8a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-047b2a78b168373e", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/ui/terminal/OpSig.jsx:9"}, "properties": {"repobilityId": "1af470fe6d51d56b", "scanner": "scanner-primary", "fingerprint": "047b2a78b168373e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58160733b5090e42", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/contexts/ContributionsContext.jsx:338"}, "properties": {"repobilityId": "13216a4965053a95", "scanner": "scanner-primary", "fingerprint": "58160733b5090e42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4739e71e46f4615", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/contexts/MessagingContext.jsx:10"}, "properties": {"repobilityId": "43db81f4c1b9ea3e", "scanner": "scanner-primary", "fingerprint": "e4739e71e46f4615", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-daecf553c7a0d237", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/hooks/useUserLevel.jsx:6"}, "properties": {"repobilityId": "585c609cf8dc8581", "scanner": "scanner-primary", "fingerprint": "daecf553c7a0d237", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b36a6a8c067d597", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/usePriceFeed.jsx:4"}, "properties": {"repobilityId": "8f58ffaada76f6f0", "scanner": "scanner-primary", "fingerprint": "6b36a6a8c067d597", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-248829df2b4eb3a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/usePriceFeed.jsx:68"}, "properties": {"repobilityId": "e47126aea5e0f6ce", "scanner": "scanner-primary", "fingerprint": "248829df2b4eb3a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c6239748b19bbcd", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/hooks/useCKBWallet.jsx:5"}, "properties": {"repobilityId": "d89c6418978bf552", "scanner": "scanner-primary", "fingerprint": "0c6239748b19bbcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1dda0eea40f73f8", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/hooks/useAnalytics.js:52"}, "properties": {"repobilityId": "48efddb7ef7f0fdb", "scanner": "scanner-primary", "fingerprint": "e1dda0eea40f73f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff4796e8511da5c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useSoundboard.jsx:8"}, "properties": {"repobilityId": "4f8d543b9f4f6ed8", "scanner": "scanner-primary", "fingerprint": "ff4796e8511da5c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-252168beede960ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useMessaging.js:13"}, "properties": {"repobilityId": "ca222777950ef4eb", "scanner": "scanner-primary", "fingerprint": "252168beede960ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30b27f33209350a2", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/hooks/useCKBContracts.jsx:12"}, "properties": {"repobilityId": "402f80ff7a24f4ac", "scanner": "scanner-primary", "fingerprint": "30b27f33209350a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c12c5362ec7a7fa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useCKBContracts.jsx:26"}, "properties": {"repobilityId": "fb5f012aea580b5d", "scanner": "scanner-primary", "fingerprint": "9c12c5362ec7a7fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4077dc00b6f794ab", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/hooks/useInfinityStones.jsx:9"}, "properties": {"repobilityId": "e6ae86860442e6f3", "scanner": "scanner-primary", "fingerprint": "4077dc00b6f794ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82fd36fb999432bb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useJarvis.jsx:204"}, "properties": {"repobilityId": "ddeedfc9a06ea8be", "scanner": "scanner-primary", "fingerprint": "82fd36fb999432bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aacc2cb1bac9865f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useSwap.jsx:85"}, "properties": {"repobilityId": "5a80d2a662c601e4", "scanner": "scanner-primary", "fingerprint": "aacc2cb1bac9865f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8d9469ebebe2ce3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useChains.jsx:5"}, "properties": {"repobilityId": "4a6055d1d44c0d54", "scanner": "scanner-primary", "fingerprint": "b8d9469ebebe2ce3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74266b7ae3b09194", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useContractRead.jsx:3"}, "properties": {"repobilityId": "8d0c50b1d3b337c4", "scanner": "scanner-primary", "fingerprint": "74266b7ae3b09194", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61fb25b45c4dbdf5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useMindMesh.jsx:25"}, "properties": {"repobilityId": "065150ab149243a9", "scanner": "scanner-primary", "fingerprint": "61fb25b45c4dbdf5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-83e528b8a5d216c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useTokenPrice.jsx:3"}, "properties": {"repobilityId": "bdefac5a9b768351", "scanner": "scanner-primary", "fingerprint": "83e528b8a5d216c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc0e14a07965d2c6", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 jarvis-bot/serve-bridge.py:17"}, "properties": {"repobilityId": "5457d975d696fd15", "scanner": "scanner-primary", "fingerprint": "fc0e14a07965d2c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6eca8bf71f413d6d", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/test/rosetta.test.js:1"}, "properties": {"repobilityId": "b2da2954b1234a36", "scanner": "scanner-primary", "fingerprint": "6eca8bf71f413d6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14cd831acda1c7cb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/webapp/src/lib/api.js:7"}, "properties": {"repobilityId": "91387fcc11355d08", "scanner": "scanner-primary", "fingerprint": "14cd831acda1c7cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d7f31d856f6995ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/tools-alpha.js:6"}, "properties": {"repobilityId": "62940736c05811d0", "scanner": "scanner-primary", "fingerprint": "d7f31d856f6995ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ded0520fdd7806f2", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/tools-derivatives.js:6"}, "properties": {"repobilityId": "72c5b8710f4472e6", "scanner": "scanner-primary", "fingerprint": "ded0520fdd7806f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98f43cfba474a0e0", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/constellation.js:6"}, "properties": {"repobilityId": "b4b47d630fc5eec0", "scanner": "scanner-primary", "fingerprint": "98f43cfba474a0e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2535065502ac5286", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/constellation.js:266"}, "properties": {"repobilityId": "1d657aedfd19d591", "scanner": "scanner-primary", "fingerprint": "2535065502ac5286", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8f4380bb67807b36", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/vibe-emissions.js:6"}, "properties": {"repobilityId": "a83b3b99442ddac7", "scanner": "scanner-primary", "fingerprint": "8f4380bb67807b36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbc617ad9eeab7f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/mi-host.js:12"}, "properties": {"repobilityId": "d8d43628c4d7969a", "scanner": "scanner-primary", "fingerprint": "fbc617ad9eeab7f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-566b8afe56a3854e", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/shard-dedup.js:7"}, "properties": {"repobilityId": "8190ca1a37f06adc", "scanner": "scanner-primary", "fingerprint": "566b8afe56a3854e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d421a50b0b5d8b9", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/tools-memehunter.js:3"}, "properties": {"repobilityId": "bc8231a8b0aa68f2", "scanner": "scanner-primary", "fingerprint": "8d421a50b0b5d8b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aab5659d758cc813", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/mi-bandit.js:6"}, "properties": {"repobilityId": "9796972a5107b7fe", "scanner": "scanner-primary", "fingerprint": "aab5659d758cc813", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85ba54e4c7f8b17e", "level": "note", "message": {"text": "Legacy-named symbol `rest_v1` in jarvis-bot/src/tools-education.js:48"}, "properties": {"repobilityId": "358a3e874c30c27b", "scanner": "scanner-primary", "fingerprint": "85ba54e4c7f8b17e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aea93f6e30934ac8", "level": "none", "message": {"text": "Commented-code block (12 lines) in jarvis-bot/src/tools-education.js:6"}, "properties": {"repobilityId": "346416937b0c63e8", "scanner": "scanner-primary", "fingerprint": "aea93f6e30934ac8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fde65e9ba7f2e323", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/x402.js:15"}, "properties": {"repobilityId": "8081991850cb87ae", "scanner": "scanner-primary", "fingerprint": "fde65e9ba7f2e323", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-488073dacf481d34", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/ckb-generator.js:7"}, "properties": {"repobilityId": "ce81f30ba3debfc3", "scanner": "scanner-primary", "fingerprint": "488073dacf481d34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5122fa42a8eef5a", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/attribution-bridge.js:9"}, "properties": {"repobilityId": "8e43434d49f43913", "scanner": "scanner-primary", "fingerprint": "a5122fa42a8eef5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27cd65ceb577b132", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/consensus.js:6"}, "properties": {"repobilityId": "04a84d987663e1d6", "scanner": "scanner-primary", "fingerprint": "27cd65ceb577b132", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9fc05650e6a65d67", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/data-economy.js:13"}, "properties": {"repobilityId": "149f4aa2473ff1bc", "scanner": "scanner-primary", "fingerprint": "9fc05650e6a65d67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef4b3eb012700c93", "level": "none", "message": {"text": "Commented-code block (15 lines) in jarvis-bot/src/tools.js:6"}, "properties": {"repobilityId": "acd9a409b574e775", "scanner": "scanner-primary", "fingerprint": "ef4b3eb012700c93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32518ff6ddab9643", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/claude.js:824"}, "properties": {"repobilityId": "b22aed4a6e3f9ac3", "scanner": "scanner-primary", "fingerprint": "32518ff6ddab9643", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8751e73887333fd0", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/tools-archive.js:3"}, "properties": {"repobilityId": "056bb3515ea678a9", "scanner": "scanner-primary", "fingerprint": "8751e73887333fd0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96bb3cb7aeb2bf3a", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/knowledge-chain.js:17"}, "properties": {"repobilityId": "9a7c6b7cbddb9d9c", "scanner": "scanner-primary", "fingerprint": "96bb3cb7aeb2bf3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76e9c5548a5c9459", "level": "none", "message": {"text": "Commented-code block (9 lines) in jarvis-bot/src/reputation-consensus.js:6"}, "properties": {"repobilityId": "6a19464a39ec5280", "scanner": "scanner-primary", "fingerprint": "76e9c5548a5c9459", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf53c40832c38c8b", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/compute-economics.js:44"}, "properties": {"repobilityId": "c38e2022b26284cc", "scanner": "scanner-primary", "fingerprint": "cf53c40832c38c8b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5901506d25fb5f5c", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/tools-scanner.js:6"}, "properties": {"repobilityId": "6879968d302334cf", "scanner": "scanner-primary", "fingerprint": "5901506d25fb5f5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-450531661127e9aa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/pantheon.js:150"}, "properties": {"repobilityId": "3f331f39b544afb4", "scanner": "scanner-primary", "fingerprint": "450531661127e9aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59adf071fd8164f8", "level": "none", "message": {"text": "Commented-code block (8 lines) in jarvis-bot/src/tools-predictions.js:7"}, "properties": {"repobilityId": "1a583f172ea1c18e", "scanner": "scanner-primary", "fingerprint": "59adf071fd8164f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e42642593154638", "level": "none", "message": {"text": "Commented-code block (12 lines) in jarvis-bot/src/tools-engagement.js:3"}, "properties": {"repobilityId": "bd5cef43b2c39f95", "scanner": "scanner-primary", "fingerprint": "4e42642593154638", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bce38296f42aba6", "level": "none", "message": {"text": "Commented-code block (10 lines) in jarvis-bot/src/tools-vibeswap.js:6"}, "properties": {"repobilityId": "719d0b830a0ca10e", "scanner": "scanner-primary", "fingerprint": "2bce38296f42aba6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b44cbc5926306422", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/knowledge-bridge.js:3"}, "properties": {"repobilityId": "8bada4d0a457f0a0", "scanner": "scanner-primary", "fingerprint": "b44cbc5926306422", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f5e7c5b6f2239c5", "level": "none", "message": {"text": "Commented-code block (9 lines) in jarvis-bot/src/verkle-context.js:9"}, "properties": {"repobilityId": "91a07545b60f5190", "scanner": "scanner-primary", "fingerprint": "2f5e7c5b6f2239c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b41f3ee9f64bb5eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/infofi.js:7"}, "properties": {"repobilityId": "63e014ec477aea3b", "scanner": "scanner-primary", "fingerprint": "b41f3ee9f64bb5eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-204ac7c83dc42ac2", "level": "none", "message": {"text": "Commented-code block (11 lines) in jarvis-bot/src/tools-alerts.js:3"}, "properties": {"repobilityId": "39e7e28d2d3c4fdb", "scanner": "scanner-primary", "fingerprint": "204ac7c83dc42ac2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72ddf61de607d638", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/learning.js:8"}, "properties": {"repobilityId": "d0418d32f8d254d9", "scanner": "scanner-primary", "fingerprint": "72ddf61de607d638", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-038123a9a0198ac6", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/trading.js:7"}, "properties": {"repobilityId": "6461e820dd2da383", "scanner": "scanner-primary", "fingerprint": "038123a9a0198ac6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dde6cefa60e008b", "level": "note", "message": {"text": "Legacy-named symbol `rest_v1` in jarvis-bot/src/tools-utility.js:87"}, "properties": {"repobilityId": "321185c9081f9d4d", "scanner": "scanner-primary", "fingerprint": "9dde6cefa60e008b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-47d706c980c176c8", "level": "none", "message": {"text": "Commented-code block (9 lines) in jarvis-bot/src/tools-utility.js:3"}, "properties": {"repobilityId": "1290571711faab2b", "scanner": "scanner-primary", "fingerprint": "47d706c980c176c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3dee20ea9d74bf18", "level": "none", "message": {"text": "Commented-code block (9 lines) in jarvis-bot/src/archive.js:18"}, "properties": {"repobilityId": "c931e66329a6ae39", "scanner": "scanner-primary", "fingerprint": "3dee20ea9d74bf18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05f3edc1582d555c", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/memory.js:237"}, "properties": {"repobilityId": "9a09d0c8e50bb322", "scanner": "scanner-primary", "fingerprint": "05f3edc1582d555c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eff2d1c19e9bb9a9", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/self-eval.js:9"}, "properties": {"repobilityId": "921ba9eb80e50a3d", "scanner": "scanner-primary", "fingerprint": "eff2d1c19e9bb9a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2148347ca163a29", "level": "none", "message": {"text": "Commented-code block (13 lines) in jarvis-bot/src/web-api.js:7"}, "properties": {"repobilityId": "ea744b1ba507bcf3", "scanner": "scanner-primary", "fingerprint": "e2148347ca163a29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13cdaf20da08b04e", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/primitive-gate.js:10"}, "properties": {"repobilityId": "b2a5eb61d02dac49", "scanner": "scanner-primary", "fingerprint": "13cdaf20da08b04e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11c075e32cdc74cf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/primitive-gate.js:251"}, "properties": {"repobilityId": "42c264c6b1762d43", "scanner": "scanner-primary", "fingerprint": "11c075e32cdc74cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77307dfdd5cbf0cf", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/voice-gate.js:3"}, "properties": {"repobilityId": "faf61fe7277de796", "scanner": "scanner-primary", "fingerprint": "77307dfdd5cbf0cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04c0b688c7661481", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/passive-attribution.js:10"}, "properties": {"repobilityId": "e979db9cf0ab4a9d", "scanner": "scanner-primary", "fingerprint": "04c0b688c7661481", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e4687b91c5aa442", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/self-improve.js:7"}, "properties": {"repobilityId": "316b5182a2f1a30d", "scanner": "scanner-primary", "fingerprint": "5e4687b91c5aa442", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e2788319fa46221", "level": "none", "message": {"text": "Commented-code block (9 lines) in jarvis-bot/src/tools-fun.js:3"}, "properties": {"repobilityId": "4d6a8e5e3af57377", "scanner": "scanner-primary", "fingerprint": "8e2788319fa46221", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-853f280a8a328cf1", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/tools-scheduler.js:6"}, "properties": {"repobilityId": "f506b0bd88bf6e63", "scanner": "scanner-primary", "fingerprint": "853f280a8a328cf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec14f4c3c232b167", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/tools-catchup.js:6"}, "properties": {"repobilityId": "4a999efa110feac0", "scanner": "scanner-primary", "fingerprint": "ec14f4c3c232b167", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-242f62a7998c5b03", "level": "none", "message": {"text": "Commented-code block (12 lines) in jarvis-bot/src/tools-social.js:3"}, "properties": {"repobilityId": "e122d2f26e2344c3", "scanner": "scanner-primary", "fingerprint": "242f62a7998c5b03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9ab0976ef7bcc70", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/crpc.js:6"}, "properties": {"repobilityId": "7b2c11b34b767b0e", "scanner": "scanner-primary", "fingerprint": "e9ab0976ef7bcc70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d8d1c2201171315", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/crpc.js:769"}, "properties": {"repobilityId": "b4e6220b0118c528", "scanner": "scanner-primary", "fingerprint": "8d8d1c2201171315", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-beedb43994b4d3db", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/intelligence.js:14"}, "properties": {"repobilityId": "260c8018a557cb62", "scanner": "scanner-primary", "fingerprint": "beedb43994b4d3db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c062c4f297004a1", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/workflow-router.js:7"}, "properties": {"repobilityId": "5415a15914583129", "scanner": "scanner-primary", "fingerprint": "6c062c4f297004a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1c55e1d233f2687", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/rosetta.js:12"}, "properties": {"repobilityId": "ab185ae02c5ae231", "scanner": "scanner-primary", "fingerprint": "e1c55e1d233f2687", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62227fca9e2fc449", "level": "note", "message": {"text": "Legacy-named symbol `hadLegacy` in jarvis-bot/src/context-memory.js:353"}, "properties": {"repobilityId": "3980847d44ab3906", "scanner": "scanner-primary", "fingerprint": "62227fca9e2fc449", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5cc148af0e6dc0aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/context-memory.js:14"}, "properties": {"repobilityId": "a94ddc7dfd3499a8", "scanner": "scanner-primary", "fingerprint": "5cc148af0e6dc0aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb05ed81775fab31", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/archive-mirror.js:117"}, "properties": {"repobilityId": "c4ff13dd60000277", "scanner": "scanner-primary", "fingerprint": "bb05ed81775fab31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49f27080c9b14502", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/idea-pipeline.js:6"}, "properties": {"repobilityId": "b5331338f20e9871", "scanner": "scanner-primary", "fingerprint": "49f27080c9b14502", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec5e65c98ec0e1fc", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/tools-security.js:6"}, "properties": {"repobilityId": "b0b3920d8e85238a", "scanner": "scanner-primary", "fingerprint": "ec5e65c98ec0e1fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56dff39bb7ae7eb9", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/shapley-compute.js:12"}, "properties": {"repobilityId": "c6a0368687bcea06", "scanner": "scanner-primary", "fingerprint": "56dff39bb7ae7eb9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55e6ba9fa0982275", "level": "none", "message": {"text": "Commented-code block (10 lines) in jarvis-bot/src/tools-portfolio.js:6"}, "properties": {"repobilityId": "4bb5da339ed0c703", "scanner": "scanner-primary", "fingerprint": "55e6ba9fa0982275", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79fffab472abb5dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/directives.js:17"}, "properties": {"repobilityId": "4943350cb2f3d8b4", "scanner": "scanner-primary", "fingerprint": "79fffab472abb5dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddf51fadfb823a2e", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in jarvis-bot/src/config.js:128"}, "properties": {"repobilityId": "71fc9def315f6588", "scanner": "scanner-primary", "fingerprint": "ddf51fadfb823a2e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-05114d13a16ba3de", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/dialogue-to-code.js:11"}, "properties": {"repobilityId": "321b91b0c6814ef4", "scanner": "scanner-primary", "fingerprint": "05114d13a16ba3de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4bbdc1bf1f9a70c", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/shadow.js:7"}, "properties": {"repobilityId": "0d6c6cdc7f17f437", "scanner": "scanner-primary", "fingerprint": "a4bbdc1bf1f9a70c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18dea9b1ff549102", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/cross-context.js:39"}, "properties": {"repobilityId": "b08fdc29314ca32a", "scanner": "scanner-primary", "fingerprint": "18dea9b1ff549102", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67d9b3d4ef29712c", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/llm-provider.js:67"}, "properties": {"repobilityId": "6d414afa4ecc0465", "scanner": "scanner-primary", "fingerprint": "67d9b3d4ef29712c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97afa66c75eb57eb", "level": "none", "message": {"text": "Commented-code block (10 lines) in jarvis-bot/src/anchor.js:120"}, "properties": {"repobilityId": "ed51420a9b6bda4b", "scanner": "scanner-primary", "fingerprint": "97afa66c75eb57eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69592ba42192e0dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/broadcast.js:6"}, "properties": {"repobilityId": "b6865a15c1dbc2fc", "scanner": "scanner-primary", "fingerprint": "69592ba42192e0dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-037088415c4afd35", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/magnum-opus.js:8"}, "properties": {"repobilityId": "e0c4cd58248dd0e6", "scanner": "scanner-primary", "fingerprint": "037088415c4afd35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19887ed4d0450429", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/web-reader.js:187"}, "properties": {"repobilityId": "62c12cab841b876b", "scanner": "scanner-primary", "fingerprint": "19887ed4d0450429", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6082adbcdc4e0c19", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/privacy.js:5"}, "properties": {"repobilityId": "47d5eae08f4f1baf", "scanner": "scanner-primary", "fingerprint": "6082adbcdc4e0c19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac4e26a031592449", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/shard.js:3"}, "properties": {"repobilityId": "2d8ae78b84db44cd", "scanner": "scanner-primary", "fingerprint": "ac4e26a031592449", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4e760c998ca3229", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/persona.js:10"}, "properties": {"repobilityId": "958a9329a74dffb8", "scanner": "scanner-primary", "fingerprint": "f4e760c998ca3229", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57035058f7aaa3d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/knowledge-constitution.js:8"}, "properties": {"repobilityId": "3023c5af9dcd8d0c", "scanner": "scanner-primary", "fingerprint": "57035058f7aaa3d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82712eb35c8de187", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/reply-pacer.js:3"}, "properties": {"repobilityId": "158bd661176bd63c", "scanner": "scanner-primary", "fingerprint": "82712eb35c8de187", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d5d66afe85dc35d", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/index.js:920"}, "properties": {"repobilityId": "f6e47eb6c79df658", "scanner": "scanner-primary", "fingerprint": "2d5d66afe85dc35d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2f548dc9e17f670", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/index.js:6050"}, "properties": {"repobilityId": "0b7a180b9c37faa4", "scanner": "scanner-primary", "fingerprint": "e2f548dc9e17f670", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee36300155f7525c", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/katarakti.js:3"}, "properties": {"repobilityId": "aa0a7e36ebfbba7d", "scanner": "scanner-primary", "fingerprint": "ee36300155f7525c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-576e21baee40b34c", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/router.js:6"}, "properties": {"repobilityId": "8293aa75148cc1d6", "scanner": "scanner-primary", "fingerprint": "576e21baee40b34c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4efe194caebc084c", "level": "none", "message": {"text": "Commented-code block (9 lines) in jarvis-bot/src/tools-onchain.js:3"}, "properties": {"repobilityId": "1c523c3143a09315", "scanner": "scanner-primary", "fingerprint": "4efe194caebc084c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-365cb9193d843570", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/task-queue.js:8"}, "properties": {"repobilityId": "c32bea2e71c5993f", "scanner": "scanner-primary", "fingerprint": "365cb9193d843570", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-941f29efdc3d1810", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/operator.js:6"}, "properties": {"repobilityId": "68bbd44880af955c", "scanner": "scanner-primary", "fingerprint": "941f29efdc3d1810", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-480f736e0881ecc8", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/mi-manifest.js:5"}, "properties": {"repobilityId": "8893be77d3e71ee5", "scanner": "scanner-primary", "fingerprint": "480f736e0881ecc8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35f6592be94bc29f", "level": "none", "message": {"text": "Commented-code block (10 lines) in jarvis-bot/src/tools-research.js:6"}, "properties": {"repobilityId": "3e10252044c9e558", "scanner": "scanner-primary", "fingerprint": "35f6592be94bc29f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ad71c95ba2087bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/shard-shapley.js:11"}, "properties": {"repobilityId": "efe44a60024cb281", "scanner": "scanner-primary", "fingerprint": "4ad71c95ba2087bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bcbcd7b8a754466", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/autonomous.js:293"}, "properties": {"repobilityId": "f85afd8368e2b761", "scanner": "scanner-primary", "fingerprint": "4bcbcd7b8a754466", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3fb4f8d1f4b2a159", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/limni.js:14"}, "properties": {"repobilityId": "75e9500c260bdcc5", "scanner": "scanner-primary", "fingerprint": "3fb4f8d1f4b2a159", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53a93567c28dcd8c", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/nervos-talks.js:6"}, "properties": {"repobilityId": "8a78e11243267b4b", "scanner": "scanner-primary", "fingerprint": "53a93567c28dcd8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-647389d519c4772a", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/tools-xp.js:6"}, "properties": {"repobilityId": "a88f25d18bdff305", "scanner": "scanner-primary", "fingerprint": "647389d519c4772a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa1d174670f0cbf4", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/hell.js:12"}, "properties": {"repobilityId": "ba09a8f607c63ea5", "scanner": "scanner-primary", "fingerprint": "aa1d174670f0cbf4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18083548c6c895ac", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/tools-news.js:3"}, "properties": {"repobilityId": "03d52fa459da31e4", "scanner": "scanner-primary", "fingerprint": "18083548c6c895ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-877006026eecf9ad", "level": "none", "message": {"text": "Commented-code block (7 lines) in jarvis-bot/src/reward-batcher.js:5"}, "properties": {"repobilityId": "3afe81eda7a68526", "scanner": "scanner-primary", "fingerprint": "877006026eecf9ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5541a16534ba44f", "level": "none", "message": {"text": "Commented-code block (9 lines) in jarvis-bot/src/nyx.js:6"}, "properties": {"repobilityId": "38cf61b16ac56683", "scanner": "scanner-primary", "fingerprint": "f5541a16534ba44f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7d8171930656d12", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/nyx.js:291"}, "properties": {"repobilityId": "37a9cf8ca2370738", "scanner": "scanner-primary", "fingerprint": "f7d8171930656d12", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b0308a71a6feb5ef", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/state-store.js:7"}, "properties": {"repobilityId": "76f2d032f90252da", "scanner": "scanner-primary", "fingerprint": "b0308a71a6feb5ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-599011cf66c47882", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/tts.js:5"}, "properties": {"repobilityId": "b2d383600ca535cb", "scanner": "scanner-primary", "fingerprint": "599011cf66c47882", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5bfa54a0da69b11", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/tts.js:24"}, "properties": {"repobilityId": "218d0a7aac8ccb26", "scanner": "scanner-primary", "fingerprint": "f5bfa54a0da69b11", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b7cb3985b818bba8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/theai-dashboard.js:296"}, "properties": {"repobilityId": "38c844c11bba3a04", "scanner": "scanner-primary", "fingerprint": "b7cb3985b818bba8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7eb740dee1315d23", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/tools-preferences.js:6"}, "properties": {"repobilityId": "7964a153cc9f8a3c", "scanner": "scanner-primary", "fingerprint": "7eb740dee1315d23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-549571048b1e1677", "level": "none", "message": {"text": "Commented-code block (5 lines) in jarvis-bot/src/mining.js:10"}, "properties": {"repobilityId": "f219d9b6054e4efc", "scanner": "scanner-primary", "fingerprint": "549571048b1e1677", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23b87ac4014e85bb", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/shards/trading-shard.js:8"}, "properties": {"repobilityId": "d8165faac0012255", "scanner": "scanner-primary", "fingerprint": "23b87ac4014e85bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15705dd277845b92", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 jarvis-bot/src/shards/trading-shard.js:223"}, "properties": {"repobilityId": "0ce013e594b23e8c", "scanner": "scanner-primary", "fingerprint": "15705dd277845b92", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-afe84ab21f11d7e1", "level": "none", "message": {"text": "Commented-code block (6 lines) in jarvis-bot/src/chatterbox/index.js:14"}, "properties": {"repobilityId": "657ba262d9fb1f60", "scanner": "scanner-primary", "fingerprint": "afe84ab21f11d7e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc9f9c2b038f6640", "level": "none", "message": {"text": "Commented-code block (5 lines) in oracle/backtest/shapley_reference.py:488"}, "properties": {"repobilityId": "3d7ddaebc6603f7e", "scanner": "scanner-primary", "fingerprint": "bc9f9c2b038f6640", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c175810ed05e8ae2", "level": "none", "message": {"text": "Commented-code block (5 lines) in oracle/backtest/guardian_collusion.py:78"}, "properties": {"repobilityId": "72de8ec3f4330b87", "scanner": "scanner-primary", "fingerprint": "c175810ed05e8ae2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22f7c9ecd4348a67", "level": "none", "message": {"text": "Commented-code block (6 lines) in oracle/feeds/prices/kraken.py:94"}, "properties": {"repobilityId": "ad2b570dfa28c1e5", "scanner": "scanner-primary", "fingerprint": "22f7c9ecd4348a67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be3aa2152e359de9", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 jarvis-template/jarvis-cli.py:403"}, "properties": {"repobilityId": "1213db9b87ef563c", "scanner": "scanner-primary", "fingerprint": "be3aa2152e359de9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c79138f50bfb70ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/services/priceFeed.js:42"}, "properties": {"repobilityId": "e939a7920df67bbf", "scanner": "scanner-primary", "fingerprint": "c79138f50bfb70ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0becfe9f30bb8c45", "level": "note", "message": {"text": "132 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "7bac2b04133ddcd5", "scanner": "scanner-primary", "fingerprint": "0becfe9f30bb8c45", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "c031614b0eaddf72", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "87cdf2f5deb01259", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "f0f32f8cc91f3933", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "f3cd76df24355d3e", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "f7f0dc8f2a12ab44", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "6c14ba9d98273d67", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "06b6c1fdc0f572a1", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "a00e7c4a96a3859e", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "dcad61f9270b965f", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "89d6989fd721a203", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "5cced964f09673b3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-3f3fc780a18b797a", "level": "warning", "message": {"text": "Frontend route `/jarvis-os` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "8fb0b72f2bde1aeb", "scanner": "scanner-primary", "fingerprint": "3f3fc780a18b797a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2e07ffae47f05990", "level": "warning", "message": {"text": "Frontend route `/papers/story/nci` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "37cf264d844c1935", "scanner": "scanner-primary", "fingerprint": "2e07ffae47f05990", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-80a4855265e978ef", "level": "warning", "message": {"text": "Frontend route `/crpc` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "f200aff1f493de37", "scanner": "scanner-primary", "fingerprint": "80a4855265e978ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7685537701ed0c38", "level": "warning", "message": {"text": "Frontend route `/emissions` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "214f0bbf79c4642b", "scanner": "scanner-primary", "fingerprint": "7685537701ed0c38", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2357b4fa09b838ce", "level": "warning", "message": {"text": "Frontend route `/token/:symbol` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "68163645db952e8c", "scanner": "scanner-primary", "fingerprint": "2357b4fa09b838ce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-40bd21cdf1296432", "level": "warning", "message": {"text": "Frontend route `/pool/:id` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "321fab0dc424848f", "scanner": "scanner-primary", "fingerprint": "40bd21cdf1296432", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-da463d78f0f1e72b", "level": "warning", "message": {"text": "Frontend route `/user/:address` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "7f91fe3de37b3cf1", "scanner": "scanner-primary", "fingerprint": "da463d78f0f1e72b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-509b4ff55f97c83f", "level": "warning", "message": {"text": "Frontend route `/psinet` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "caf3d486d22c8bfe", "scanner": "scanner-primary", "fingerprint": "509b4ff55f97c83f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7405071412a9fd87", "level": "warning", "message": {"text": "Frontend route `/gauntlet` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "d2e5d8976059d8fb", "scanner": "scanner-primary", "fingerprint": "7405071412a9fd87", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-666bedfea5546257", "level": "error", "message": {"text": "FastAPI POST `scrape_page` without auth dependency \u2014 jarvis-bot/scraper/server.py:65"}, "properties": {"repobilityId": "63d477a1849ddc7a", "scanner": "scanner-primary", "fingerprint": "666bedfea5546257", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/scraper/server.py"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-4deba07c63d66403", "level": "error", "message": {"text": "FastAPI POST `scrape_multiple` without auth dependency \u2014 jarvis-bot/scraper/server.py:152"}, "properties": {"repobilityId": "56a7ff8a2bf51056", "scanner": "scanner-primary", "fingerprint": "4deba07c63d66403", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jarvis-bot/scraper/server.py"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-fc3a9f2ee7ca6d12", "level": "error", "message": {"text": "Dangling fetch: POST https://jarvis-vibeswap.fly.dev/transcript (frontend/api/transcript.js:11)"}, "properties": {"repobilityId": "fe88573d60cf32a9", "scanner": "scanner-primary", "fingerprint": "fc3a9f2ee7ca6d12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-993c7b75ed8daf1d", "level": "error", "message": {"text": "Dangling fetch: GET /jarvis-api/x402/stats (frontend/src/components/X402Page.jsx:89)"}, "properties": {"repobilityId": "acb42b9788b38124", "scanner": "scanner-primary", "fingerprint": "993c7b75ed8daf1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a8c1ebaa9c6296b8", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat (frontend/src/components/JarvisIntro.jsx:65)"}, "properties": {"repobilityId": "2ea5070db33183c5", "scanner": "scanner-primary", "fingerprint": "a8c1ebaa9c6296b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-68c2a4fd18c05373", "level": "error", "message": {"text": "Dangling fetch: POST https://mainnet.base.org (frontend/src/components/HeaderMinimal.jsx:40)"}, "properties": {"repobilityId": "b4c9c7dfe8db6f16", "scanner": "scanner-primary", "fingerprint": "68c2a4fd18c05373", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e2a3bcd6c357738e", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat (frontend/src/hooks/useJarvis.jsx:204)"}, "properties": {"repobilityId": "1da1b894c44f09af", "scanner": "scanner-primary", "fingerprint": "e2a3bcd6c357738e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c48a27f9a349efaf", "level": "error", "message": {"text": "Dangling fetch: GET /prices (frontend/src/services/api.js:33)"}, "properties": {"repobilityId": "906278c2b594923f", "scanner": "scanner-primary", "fingerprint": "c48a27f9a349efaf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0946e3fa20cfb517", "level": "error", "message": {"text": "Dangling fetch: GET /prices/pairs/${base}/${quote} (frontend/src/services/api.js:41)"}, "properties": {"repobilityId": "a113343f6867f976", "scanner": "scanner-primary", "fingerprint": "0946e3fa20cfb517", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-199c209774bf0f87", "level": "error", "message": {"text": "Dangling fetch: GET /tokens/${chainId} (frontend/src/services/api.js:47)"}, "properties": {"repobilityId": "5ef0d78c57b3af6d", "scanner": "scanner-primary", "fingerprint": "199c209774bf0f87", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-811fd0de19a14847", "level": "error", "message": {"text": "Dangling fetch: GET /tokens (frontend/src/services/api.js:49)"}, "properties": {"repobilityId": "bc5cdac002a2453c", "scanner": "scanner-primary", "fingerprint": "811fd0de19a14847", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4e875e1e49768160", "level": "error", "message": {"text": "Dangling fetch: GET /chains (frontend/src/services/api.js:54)"}, "properties": {"repobilityId": "af16e81ed1bcde9c", "scanner": "scanner-primary", "fingerprint": "4e875e1e49768160", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3fd376be9d22813e", "level": "error", "message": {"text": "Dangling fetch: GET /web/mining/target (jarvis-bot/webapp/src/lib/api.js:17)"}, "properties": {"repobilityId": "d41975d4b16fe793", "scanner": "scanner-primary", "fingerprint": "3fd376be9d22813e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cc1b37b8a703852f", "level": "error", "message": {"text": "Dangling fetch: POST /web/mining/submit (jarvis-bot/webapp/src/lib/api.js:21)"}, "properties": {"repobilityId": "3d97a7d91dbec8dd", "scanner": "scanner-primary", "fingerprint": "cc1b37b8a703852f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ef101bacb1adb6f7", "level": "error", "message": {"text": "Dangling fetch: GET /web/mining/stats/${encodeURIComponent(userId)} (jarvis-bot/webapp/src/lib/api.js:28)"}, "properties": {"repobilityId": "2f7dc6e83a84c21f", "scanner": "scanner-primary", "fingerprint": "ef101bacb1adb6f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c096a2def0177351", "level": "error", "message": {"text": "Dangling fetch: GET /router/topology (jarvis-bot/webapp/src/lib/api.js:53)"}, "properties": {"repobilityId": "5d7d2893b59ca54b", "scanner": "scanner-primary", "fingerprint": "c096a2def0177351", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b72b574d8db837db", "level": "error", "message": {"text": "Dangling fetch: GET /web/health (jarvis-bot/webapp/src/lib/api.js:59)"}, "properties": {"repobilityId": "9e03402fecc73d9c", "scanner": "scanner-primary", "fingerprint": "b72b574d8db837db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e32269b2e70cce1a", "level": "error", "message": {"text": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/liquidation_history?symbol=${symbol}&time_type=all (jarvis-bot/src/tools-derivatives.js:23)"}, "properties": {"repobilityId": "abe3bf3a97313fa3", "scanner": "scanner-primary", "fingerprint": "e32269b2e70cce1a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7d819f777ea787dd", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${symbolToId(symbol)}&vs_currencies=usd&include_24hr_change=true&include_24hr_vol=true (jarvis-bot/src/tools-derivatives.js:56)"}, "properties": {"repobilityId": "6c620faf3be89179", "scanner": "scanner-primary", "fingerprint": "7d819f777ea787dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e895acd89c4820c7", "level": "error", "message": {"text": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/funding?symbol=${symbol} (jarvis-bot/src/tools-derivatives.js:95)"}, "properties": {"repobilityId": "d0551f7c825d7c0a", "scanner": "scanner-primary", "fingerprint": "e895acd89c4820c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9027b8cefe164c8c", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${symbolToId(symbol)}&vs_currencies=usd&include_24hr_change=true (jarvis-bot/src/tools-derivatives.js:129)"}, "properties": {"repobilityId": "d1703bfdb99e9919", "scanner": "scanner-primary", "fingerprint": "9027b8cefe164c8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-29904b96b14a40f9", "level": "error", "message": {"text": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/open_interest?symbol=${symbol} (jarvis-bot/src/tools-derivatives.js:161)"}, "properties": {"repobilityId": "30bd7bc0ac4c915d", "scanner": "scanner-primary", "fingerprint": "29904b96b14a40f9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0489afad39d21ba5", "level": "error", "message": {"text": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/long_short?symbol=${symbol}&time_type=4 (jarvis-bot/src/tools-derivatives.js:201)"}, "properties": {"repobilityId": "4a271f7b839f22c5", "scanner": "scanner-primary", "fingerprint": "0489afad39d21ba5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e2a1de75a9c4791", "level": "error", "message": {"text": "Dangling fetch: GET https://open-api.coinglass.com/public/v2/etf/bitcoin_flow_total (jarvis-bot/src/tools-derivatives.js:239)"}, "properties": {"repobilityId": "8db1ba234ab1946a", "scanner": "scanner-primary", "fingerprint": "9e2a1de75a9c4791", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b50e85856e38f6e8", "level": "error", "message": {"text": "Dangling fetch: GET /theai/constellation/api/state (jarvis-bot/src/constellation.js:266)"}, "properties": {"repobilityId": "412f7eaddded5e3f", "scanner": "scanner-primary", "fingerprint": "b50e85856e38f6e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8f811266b177938a", "level": "error", "message": {"text": "Dangling fetch: POST /theai/constellation/api/consult (jarvis-bot/src/constellation.js:504)"}, "properties": {"repobilityId": "17667341b1b13c4f", "scanner": "scanner-primary", "fingerprint": "8f811266b177938a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3d88d552a6c5bd46", "level": "error", "message": {"text": "Dangling fetch: POST /theai/constellation/api/proof (jarvis-bot/src/constellation.js:518)"}, "properties": {"repobilityId": "31cad750471ccfc9", "scanner": "scanner-primary", "fingerprint": "3d88d552a6c5bd46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-48e94f8fc80613a1", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dexscreener.com/token-profiles/latest/v1 (jarvis-bot/src/tools-memehunter.js:610)"}, "properties": {"repobilityId": "88c8623ea4177919", "scanner": "scanner-primary", "fingerprint": "48e94f8fc80613a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7853e6db8b5beb76", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dexscreener.com/token-boosts/latest/v1 (jarvis-bot/src/tools-memehunter.js:611)"}, "properties": {"repobilityId": "df13b5e6899b80b1", "scanner": "scanner-primary", "fingerprint": "7853e6db8b5beb76", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aa8350e14c55cf71", "level": "error", "message": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot/src/tools-memehunter.js:654)"}, "properties": {"repobilityId": "b34836af65b2a0eb", "scanner": "scanner-primary", "fingerprint": "aa8350e14c55cf71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bfdd55a97396e6da", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/tokens/${address} (jarvis-bot/src/tools-memehunter.js:665)"}, "properties": {"repobilityId": "27aa6ff263a11a6c", "scanner": "scanner-primary", "fingerprint": "bfdd55a97396e6da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4ebc7a1f2169713f", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/events (jarvis-bot/src/tools-education.js:825)"}, "properties": {"repobilityId": "3f7860f13b6d2d4a", "scanner": "scanner-primary", "fingerprint": "4ebc7a1f2169713f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9c4f5dd89cebc7df", "level": "error", "message": {"text": "Dangling fetch: GET https://api.alternative.me/fng/?limit=1 (jarvis-bot/src/tools-education.js:922)"}, "properties": {"repobilityId": "8fd53d5df02b4068", "scanner": "scanner-primary", "fingerprint": "9c4f5dd89cebc7df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d2c41b7f51a55546", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3${path} (jarvis-bot/src/tools.js:33)"}, "properties": {"repobilityId": "a3425681aaa5c134", "scanner": "scanner-primary", "fingerprint": "d2c41b7f51a55546", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7aeae1cecf687185", "level": "error", "message": {"text": "Dangling fetch: GET https://api.alternative.me/fng/?limit=1 (jarvis-bot/src/tools.js:193)"}, "properties": {"repobilityId": "59c71eba6761c147", "scanner": "scanner-primary", "fingerprint": "7aeae1cecf687185", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4834fd6096aa6af6", "level": "error", "message": {"text": "Dangling fetch: GET https://api.etherscan.io/api?module=gastracker&action=gasoracle (jarvis-bot/src/tools.js:220)"}, "properties": {"repobilityId": "891c1a63834543cf", "scanner": "scanner-primary", "fingerprint": "4834fd6096aa6af6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3349d79029272de", "level": "error", "message": {"text": "Dangling fetch: GET https://yields.llama.fi/pools (jarvis-bot/src/tools.js:409)"}, "properties": {"repobilityId": "242e9fb7339e80f3", "scanner": "scanner-primary", "fingerprint": "b3349d79029272de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c14db8b2dc7a54d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.llama.fi/v2/chains (jarvis-bot/src/tools.js:447)"}, "properties": {"repobilityId": "2b0033627a741dc5", "scanner": "scanner-primary", "fingerprint": "4c14db8b2dc7a54d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-beb88cf2c313776f", "level": "error", "message": {"text": "Dangling fetch: GET https://stablecoins.llama.fi/stablecoins?includePrices=true (jarvis-bot/src/tools.js:473)"}, "properties": {"repobilityId": "abe450d0db957294", "scanner": "scanner-primary", "fingerprint": "beb88cf2c313776f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f63bca2bd5d167a8", "level": "error", "message": {"text": "Dangling fetch: GET https://api.llama.fi/overview/dexs?excludeTotalDataChart=true&excludeTotalDataChartBreakdown=true (jarvis-bot/src/tools.js:504)"}, "properties": {"repobilityId": "7672ca697b9681d9", "scanner": "scanner-primary", "fingerprint": "f63bca2bd5d167a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ac5860f234dad239", "level": "error", "message": {"text": "Dangling fetch: GET https://api.etherscan.io/api?module=account&action=balance&address=${address}&tag=latest (jarvis-bot/src/tools.js:537)"}, "properties": {"repobilityId": "e56e0b31a6330f44", "scanner": "scanner-primary", "fingerprint": "ac5860f234dad239", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-69f29e34c2baed8c", "level": "error", "message": {"text": "Dangling fetch: GET https://api.llama.fi/protocol/${encodeURIComponent(protocol)} (jarvis-bot/src/tools.js:563)"}, "properties": {"repobilityId": "8a9d97464c995530", "scanner": "scanner-primary", "fingerprint": "69f29e34c2baed8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-03ad0e95708e3b35", "level": "error", "message": {"text": "Dangling fetch: GET https://api.llama.fi/v2/historicalChainTvl (jarvis-bot/src/tools.js:572)"}, "properties": {"repobilityId": "255ea90372b004a1", "scanner": "scanner-primary", "fingerprint": "03ad0e95708e3b35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d9058ca3cdeaa12", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/pairs/${chainId} (jarvis-bot/src/tools-scanner.js:93)"}, "properties": {"repobilityId": "dd1019d1169a8fd5", "scanner": "scanner-primary", "fingerprint": "1d9058ca3cdeaa12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-20096f447c26706f", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dexscreener.com/token-boosts/top/v1 (jarvis-bot/src/tools-scanner.js:134)"}, "properties": {"repobilityId": "37326a0869f0dcd7", "scanner": "scanner-primary", "fingerprint": "20096f447c26706f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2271f9c4cf94b00e", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/search?q=${encodeURIComponent(query)} (jarvis-bot/src/tools-scanner.js:172)"}, "properties": {"repobilityId": "941b23711b54f28d", "scanner": "scanner-primary", "fingerprint": "2271f9c4cf94b00e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e75c5d084b6af069", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dexscreener.com/latest/dex/tokens/${address} (jarvis-bot/src/tools-scanner.js:215)"}, "properties": {"repobilityId": "e8c33bd0c85e6f3f", "scanner": "scanner-primary", "fingerprint": "e75c5d084b6af069", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95f97202e36109ec", "level": "error", "message": {"text": "Dangling fetch: GET https://uselessfacts.jsph.pl/api/v2/facts/random?language=en (jarvis-bot/src/tools-engagement.js:143)"}, "properties": {"repobilityId": "d185e04c0325e7fa", "scanner": "scanner-primary", "fingerprint": "95f97202e36109ec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-996f90143cc44bcf", "level": "error", "message": {"text": "Dangling fetch: GET http://numbersapi.com/random/trivia (jarvis-bot/src/tools-engagement.js:152)"}, "properties": {"repobilityId": "cdc06c273b75c8e8", "scanner": "scanner-primary", "fingerprint": "996f90143cc44bcf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e55f7cf179ea8e4a", "level": "error", "message": {"text": "Dangling fetch: GET https://api.wikimedia.org/feed/v1/wikipedia/en/onthisday/events/${month}/${day} (jarvis-bot/src/tools-engagement.js:170)"}, "properties": {"repobilityId": "e36313e4f5a5b913", "scanner": "scanner-primary", "fingerprint": "e55f7cf179ea8e4a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3be3431e475397a1", "level": "error", "message": {"text": "Dangling fetch: GET https://dog.ceo/api/breeds/image/random (jarvis-bot/src/tools-engagement.js:200)"}, "properties": {"repobilityId": "7fab535fb7490d57", "scanner": "scanner-primary", "fingerprint": "3be3431e475397a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8fd391d61d68d58d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.thecatapi.com/v1/images/search (jarvis-bot/src/tools-engagement.js:213)"}, "properties": {"repobilityId": "df140daeefa50db7", "scanner": "scanner-primary", "fingerprint": "8fd391d61d68d58d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c6dae4c409639e76", "level": "error", "message": {"text": "Dangling fetch: POST https://carbonara.solopov.dev/api/cook (jarvis-bot/src/tools-engagement.js:229)"}, "properties": {"repobilityId": "0a1e94b76ceaba9e", "scanner": "scanner-primary", "fingerprint": "c6dae4c409639e76", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-952927c7482aa380", "level": "error", "message": {"text": "Dangling fetch: POST https://dpaste.org/api/ (jarvis-bot/src/tools-engagement.js:262)"}, "properties": {"repobilityId": "526d18668ec518d6", "scanner": "scanner-primary", "fingerprint": "952927c7482aa380", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dca058da024e7c44", "level": "error", "message": {"text": "Dangling fetch: GET https://api.adviceslip.com/advice (jarvis-bot/src/tools-engagement.js:279)"}, "properties": {"repobilityId": "bd9b2d83a46a85e4", "scanner": "scanner-primary", "fingerprint": "dca058da024e7c44", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0dfbdec60a556a32", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3${path} (jarvis-bot/src/tools-alerts.js:18)"}, "properties": {"repobilityId": "fb8422c3e4662c08", "scanner": "scanner-primary", "fingerprint": "0dfbdec60a556a32", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b2a311bbc405f54", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/nfts/${encodeURIComponent(collection.toLowerCase())} (jarvis-bot/src/tools-alerts.js:212)"}, "properties": {"repobilityId": "de4da7a57a24bbb6", "scanner": "scanner-primary", "fingerprint": "6b2a311bbc405f54", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5b70627d35156118", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/nfts/list?per_page=250 (jarvis-bot/src/tools-alerts.js:219)"}, "properties": {"repobilityId": "3b5cffe707551b8c", "scanner": "scanner-primary", "fingerprint": "5b70627d35156118", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-59c1c64194d73c8d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/nfts/${match.id} (jarvis-bot/src/tools-alerts.js:229)"}, "properties": {"repobilityId": "8e4c2ae470932393", "scanner": "scanner-primary", "fingerprint": "59c1c64194d73c8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-502e784d88a31454", "level": "error", "message": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot/src/tools-alerts.js:266)"}, "properties": {"repobilityId": "cfcea7b00b875e77", "scanner": "scanner-primary", "fingerprint": "502e784d88a31454", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-47096f687816467c", "level": "error", "message": {"text": "Dangling fetch: GET https://geocoding-api.open-meteo.com/v1/search?name=${encodeURIComponent(city)}&count=1&language=en (jarvis-bot/src/tools-utility.js:20)"}, "properties": {"repobilityId": "38e54de4ed87bb35", "scanner": "scanner-primary", "fingerprint": "47096f687816467c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a9314eebddb940b9", "level": "error", "message": {"text": "Dangling fetch: GET https://api.open-meteo.com/v1/forecast?latitude=${loc.latitude}&longitude=${loc.longitude}&current=temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m&daily=temperature_2m_max,temperature_2m_min,precipitation_probability_max&timezone=auto&forecast"}, "properties": {"repobilityId": "106ff8a2fbca5cd3", "scanner": "scanner-primary", "fingerprint": "a9314eebddb940b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d1d3d4b0cab5406", "level": "error", "message": {"text": "Dangling fetch: GET https://en.wikipedia.org/api/rest_v1/page/summary/${encodeURIComponent(topic)} (jarvis-bot/src/tools-utility.js:86)"}, "properties": {"repobilityId": "131798f93a04004c", "scanner": "scanner-primary", "fingerprint": "2d1d3d4b0cab5406", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-491dddf9f0b31885", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dictionaryapi.dev/api/v2/entries/en/${encodeURIComponent(word)} (jarvis-bot/src/tools-utility.js:113)"}, "properties": {"repobilityId": "4c4322b7f4757f0e", "scanner": "scanner-primary", "fingerprint": "491dddf9f0b31885", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ea90a9ac8fb9210a", "level": "error", "message": {"text": "Dangling fetch: GET https://api.mymemory.translated.net/get?q=${encodeURIComponent(text.slice(0, 500))}&langpair=autodetect|${to} (jarvis-bot/src/tools-utility.js:180)"}, "properties": {"repobilityId": "6b470135cc37e3f1", "scanner": "scanner-primary", "fingerprint": "ea90a9ac8fb9210a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf53517745b558ca", "level": "error", "message": {"text": "Dangling fetch: GET https://tinyurl.com/api-create.php?url=${encodeURIComponent(url)} (jarvis-bot/src/tools-utility.js:306)"}, "properties": {"repobilityId": "574895db500b21e7", "scanner": "scanner-primary", "fingerprint": "cf53517745b558ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c694098f0462a32a", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/repos/wglynn/vibeswap/commits?per_page=1 (jarvis-bot/src/web-api.js:1166)"}, "properties": {"repobilityId": "659b3c9b14581fe9", "scanner": "scanner-primary", "fingerprint": "c694098f0462a32a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a4921014ed47742b", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${token}&vs_currencies=usd&include_1hr_change=true (jarvis-bot/src/tools-scheduler.js:181)"}, "properties": {"repobilityId": "080fa3ac8225b009", "scanner": "scanner-primary", "fingerprint": "a4921014ed47742b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6be3c84e7d404ea3", "level": "error", "message": {"text": "Dangling fetch: GET https://api.etherscan.io/api?module=gastracker&action=gasoracle (jarvis-bot/src/tools-scheduler.js:210)"}, "properties": {"repobilityId": "e01736d7a40c7ccf", "scanner": "scanner-primary", "fingerprint": "6be3c84e7d404ea3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a937e4afad42639d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/status_updates?per_page=10 (jarvis-bot/src/tools-catchup.js:113)"}, "properties": {"repobilityId": "b98a22c16c54bc07", "scanner": "scanner-primary", "fingerprint": "a937e4afad42639d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3d1801dd37cf618b", "level": "error", "message": {"text": "Dangling fetch: GET https://api.llama.fi/protocols (jarvis-bot/src/tools-catchup.js:176)"}, "properties": {"repobilityId": "515531dd87e8d9fe", "scanner": "scanner-primary", "fingerprint": "3d1801dd37cf618b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bf9b546682f47a44", "level": "error", "message": {"text": "Dangling fetch: GET /crpc/demo (jarvis-bot/src/crpc.js:769)"}, "properties": {"repobilityId": "c353af3f927deaba", "scanner": "scanner-primary", "fingerprint": "bf9b546682f47a44", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5eb9a756b0537d24", "level": "error", "message": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot/src/tools-security.js:43)"}, "properties": {"repobilityId": "8ee6a0a415dde493", "scanner": "scanner-primary", "fingerprint": "5eb9a756b0537d24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-47757c88a8f3713f", "level": "error", "message": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address} (jarvis-bot/src/tools-security.js:138)"}, "properties": {"repobilityId": "a80f97bc84b755cf", "scanner": "scanner-primary", "fingerprint": "47757c88a8f3713f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e10061bafc1af934", "level": "error", "message": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v1/contract_security/${chainId}?contract_addresses=${address} (jarvis-bot/src/tools-security.js:169)"}, "properties": {"repobilityId": "0314dccb9c163051", "scanner": "scanner-primary", "fingerprint": "e10061bafc1af934", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-61d33dc8221f4fd7", "level": "error", "message": {"text": "Dangling fetch: GET https://api.etherscan.io/api?module=contract&action=getsourcecode&address=${address} (jarvis-bot/src/tools-security.js:180)"}, "properties": {"repobilityId": "81008c1ca15649f1", "scanner": "scanner-primary", "fingerprint": "61d33dc8221f4fd7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e7a780414f08153", "level": "error", "message": {"text": "Dangling fetch: GET https://api.etherscan.io/api?module=token&action=tokenholderlist&contractaddress=${address}&page=1&offset=10 (jarvis-bot/src/tools-security.js:222)"}, "properties": {"repobilityId": "e1c162dc35d4f7f9", "scanner": "scanner-primary", "fingerprint": "9e7a780414f08153", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d0391d3c7700f2f5", "level": "error", "message": {"text": "Dangling fetch: GET https://api.gopluslabs.io/api/v2/token_approval_security/${chainId}?addresses=${address} (jarvis-bot/src/tools-security.js:254)"}, "properties": {"repobilityId": "835ee1d7aeb26b6a", "scanner": "scanner-primary", "fingerprint": "d0391d3c7700f2f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-70b3bcebed8264ee", "level": "error", "message": {"text": "Dangling fetch: GET https://api.machines.dev/v1/apps/${node.app}/machines (jarvis-bot/src/mesh-monitor.js:155)"}, "properties": {"repobilityId": "a83b260141530cc5", "scanner": "scanner-primary", "fingerprint": "70b3bcebed8264ee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f71ebb9a5ee653e1", "level": "error", "message": {"text": "Dangling fetch: POST https://api.machines.dev/v1/apps/${node.app}/machines/${machine.id}/${action} (jarvis-bot/src/mesh-monitor.js:170)"}, "properties": {"repobilityId": "fe5c47fd5493f502", "scanner": "scanner-primary", "fingerprint": "f71ebb9a5ee653e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35de6cd564f81bcd", "level": "error", "message": {"text": "Dangling fetch: GET https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json (jarvis-bot/src/youtube.js:46)"}, "properties": {"repobilityId": "bc9490e523ef0c8a", "scanner": "scanner-primary", "fingerprint": "35de6cd564f81bcd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db8c9fbcf8eacf39", "level": "error", "message": {"text": "Dangling fetch: GET https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=${videoId}&format=json (jarvis-bot/src/youtube.js:66)"}, "properties": {"repobilityId": "80b5c0ad2dfca33f", "scanner": "scanner-primary", "fingerprint": "db8c9fbcf8eacf39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e12c83b326c0e72", "level": "error", "message": {"text": "Dangling fetch: POST https://api.github.com/repos/WGlynn/VibeSwap/actions/workflows/deploy-jarvis.yml/dispatches (jarvis-bot/src/index.js:1074)"}, "properties": {"repobilityId": "37ef56f9d4d5af53", "scanner": "scanner-primary", "fingerprint": "2e12c83b326c0e72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3431b74f4f0626bc", "level": "error", "message": {"text": "Dangling fetch: GET https://${appName}.fly.dev/health (jarvis-bot/src/index.js:4988)"}, "properties": {"repobilityId": "f845a03b27dc4261", "scanner": "scanner-primary", "fingerprint": "3431b74f4f0626bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3f9b17e28d431692", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/repos/wglynn/vibeswap/commits?per_page=1 (jarvis-bot/src/index.js:5029)"}, "properties": {"repobilityId": "52887d37ee8979f1", "scanner": "scanner-primary", "fingerprint": "3f9b17e28d431692", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-308fff24c93f57b6", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (jarvis-bot/src/index.js:6207)"}, "properties": {"repobilityId": "db82190c1389cf42", "scanner": "scanner-primary", "fingerprint": "308fff24c93f57b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d17216a50844f337", "level": "error", "message": {"text": "Dangling fetch: GET https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines (jarvis-bot/src/index.js:7838)"}, "properties": {"repobilityId": "87c5da57a4e63d7e", "scanner": "scanner-primary", "fingerprint": "d17216a50844f337", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7ae20b71eb300fdb", "level": "error", "message": {"text": "Dangling fetch: POST https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines/${machine.id}/start (jarvis-bot/src/index.js:7847)"}, "properties": {"repobilityId": "ca5e35721d30896f", "scanner": "scanner-primary", "fingerprint": "7ae20b71eb300fdb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b27e3d972df24dbe", "level": "error", "message": {"text": "Dangling fetch: POST https://api.machines.dev/v1/apps/${PRIMARY_APP}/machines/${machine.id}/restart (jarvis-bot/src/index.js:7855)"}, "properties": {"repobilityId": "9c391b37097b0612", "scanner": "scanner-primary", "fingerprint": "b27e3d972df24dbe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d0d07733d7cbc6c5", "level": "error", "message": {"text": "Dangling fetch: POST https://api.fireflies.ai/graphql (jarvis-bot/src/index.js:8519)"}, "properties": {"repobilityId": "8ceb037521da6f6c", "scanner": "scanner-primary", "fingerprint": "d0d07733d7cbc6c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f2ecb42bd6234af8", "level": "error", "message": {"text": "Dangling fetch: GET https://blockchain.info/q/getblockcount (jarvis-bot/src/tools-onchain.js:71)"}, "properties": {"repobilityId": "f6c049a62c4c0214", "scanner": "scanner-primary", "fingerprint": "f2ecb42bd6234af8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bdb44a79219ed4c4", "level": "error", "message": {"text": "Dangling fetch: POST https://api.thegraph.com/subgraphs/name/ensdomains/ens (jarvis-bot/src/tools-onchain.js:116)"}, "properties": {"repobilityId": "bda5547bab7d2dbd", "scanner": "scanner-primary", "fingerprint": "bdb44a79219ed4c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5abb75842bf2c9b4", "level": "error", "message": {"text": "Dangling fetch: POST https://eth.llamarpc.com (jarvis-bot/src/tools-onchain.js:154)"}, "properties": {"repobilityId": "1b7afd475e24b7a9", "scanner": "scanner-primary", "fingerprint": "5abb75842bf2c9b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-888871e6df091564", "level": "error", "message": {"text": "Dangling fetch: POST https://eth.llamarpc.com (jarvis-bot/src/tools-onchain.js:169)"}, "properties": {"repobilityId": "1a2e4ab14b84a5c8", "scanner": "scanner-primary", "fingerprint": "888871e6df091564", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1dd91d1385fee93a", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=tether,usd-coin,dai,first-digital-usd,true-usd,frax,paypal-usd,ethena-usde&vs_currencies=usd&include_24hr_change=true (jarvis-bot/src/tools-onchain.js:214)"}, "properties": {"repobilityId": "27fee3703f5d21a8", "scanner": "scanner-primary", "fingerprint": "1dd91d1385fee93a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb856d1c2a72964a", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=${token}&vs_currencies=usd&include_24hr_change=true (jarvis-bot/src/task-queue.js:94)"}, "properties": {"repobilityId": "e82ad2f10e4a666a", "scanner": "scanner-primary", "fingerprint": "cb856d1c2a72964a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9c9b5ce6607ca084", "level": "error", "message": {"text": "Dangling fetch: GET https://${record.flyAppName}.fly.dev/health (jarvis-bot/src/operator.js:303)"}, "properties": {"repobilityId": "a3e4373f5bcfa69e", "scanner": "scanner-primary", "fingerprint": "9c9b5ce6607ca084", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9252275276a99bc5", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (jarvis-bot/src/operator.js:368)"}, "properties": {"repobilityId": "c3a122448d9de38a", "scanner": "scanner-primary", "fingerprint": "9252275276a99bc5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-727167af19a7437f", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (jarvis-bot/src/operator.js:385)"}, "properties": {"repobilityId": "c57867b8de0b0ba8", "scanner": "scanner-primary", "fingerprint": "727167af19a7437f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-276533df196113f3", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${apiKey} (jarvis-bot/src/operator.js:401)"}, "properties": {"repobilityId": "0f2285db501b98e9", "scanner": "scanner-primary", "fingerprint": "276533df196113f3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8d62f84bc7827aea", "level": "error", "message": {"text": "Dangling fetch: POST https://api.deepseek.com/chat/completions (jarvis-bot/src/operator.js:412)"}, "properties": {"repobilityId": "f6b1c88c4ddcaecf", "scanner": "scanner-primary", "fingerprint": "8d62f84bc7827aea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-657dd2b982ae6a6e", "level": "error", "message": {"text": "Dangling fetch: POST https://hub.snapshot.org/graphql (jarvis-bot/src/tools-research.js:341)"}, "properties": {"repobilityId": "384e297694ef8999", "scanner": "scanner-primary", "fingerprint": "657dd2b982ae6a6e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-557e661f6357481e", "level": "error", "message": {"text": "Dangling fetch: GET https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd&include_24hr_change=true (jarvis-bot/src/autonomous.js:220)"}, "properties": {"repobilityId": "7c2bbf50dc9bcca6", "scanner": "scanner-primary", "fingerprint": "557e661f6357481e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26e6d1103b276bbc", "level": "error", "message": {"text": "Dangling fetch: GET https://www.reddit.com/r/${encodeURIComponent(sub)}/${sort}.json?limit=8 (jarvis-bot/src/tools-news.js:20)"}, "properties": {"repobilityId": "84cd8afc72578854", "scanner": "scanner-primary", "fingerprint": "26e6d1103b276bbc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f7a1f0343f93832b", "level": "error", "message": {"text": "Dangling fetch: GET https://hacker-news.firebaseio.com/v0/topstories.json (jarvis-bot/src/tools-news.js:58)"}, "properties": {"repobilityId": "52f9e753d58566f9", "scanner": "scanner-primary", "fingerprint": "f7a1f0343f93832b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-097c920073ba198e", "level": "error", "message": {"text": "Dangling fetch: GET https://hacker-news.firebaseio.com/v0/item/${id}.json (jarvis-bot/src/tools-news.js:66)"}, "properties": {"repobilityId": "caf963b8d15a975c", "scanner": "scanner-primary", "fingerprint": "097c920073ba198e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8c1d2913ee21553c", "level": "error", "message": {"text": "Dangling fetch: GET https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(url)} (jarvis-bot/src/tools-news.js:120)"}, "properties": {"repobilityId": "e576c26af1ea55d0", "scanner": "scanner-primary", "fingerprint": "8c1d2913ee21553c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-394a712d9ae91eb0", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/repos/${repoPath}/commits?per_page=5 (jarvis-bot/src/tools-news.js:206)"}, "properties": {"repobilityId": "ba1be7a4b3932e3f", "scanner": "scanner-primary", "fingerprint": "394a712d9ae91eb0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d3f7e16b9787c7f0", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/repos/${repoPath} (jarvis-bot/src/tools-news.js:210)"}, "properties": {"repobilityId": "442bcea05701066e", "scanner": "scanner-primary", "fingerprint": "d3f7e16b9787c7f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-55b601d71ab4cde6", "level": "error", "message": {"text": "Dangling fetch: GET /nyx/api/files (jarvis-bot/src/nyx.js:291)"}, "properties": {"repobilityId": "e274329c0498237d", "scanner": "scanner-primary", "fingerprint": "55b601d71ab4cde6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-593c4612d877f8a3", "level": "error", "message": {"text": "Dangling fetch: GET /nyx/api/files (jarvis-bot/src/nyx.js:296)"}, "properties": {"repobilityId": "61ecfd34ce8bfbd7", "scanner": "scanner-primary", "fingerprint": "593c4612d877f8a3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84600ad0539485c9", "level": "error", "message": {"text": "Dangling fetch: POST /nyx/api/chat (jarvis-bot/src/nyx.js:579)"}, "properties": {"repobilityId": "e9800f7147b4d2b2", "scanner": "scanner-primary", "fingerprint": "84600ad0539485c9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-20ac585d31bc92ca", "level": "error", "message": {"text": "Dangling fetch: GET /nyx/api/pantheon (jarvis-bot/src/nyx.js:608)"}, "properties": {"repobilityId": "ea66f7229b3fe401", "scanner": "scanner-primary", "fingerprint": "20ac585d31bc92ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad3d0d2633841e00", "level": "error", "message": {"text": "Dangling fetch: GET /nyx/api/activity?limit=100 (jarvis-bot/src/nyx.js:655)"}, "properties": {"repobilityId": "2dfd26583ce750a5", "scanner": "scanner-primary", "fingerprint": "ad3d0d2633841e00", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-77cf2d0f4eb4f7b1", "level": "error", "message": {"text": "Dangling fetch: POST /nyx/api/file (jarvis-bot/src/nyx.js:756)"}, "properties": {"repobilityId": "a6ce5a22b96c93fc", "scanner": "scanner-primary", "fingerprint": "77cf2d0f4eb4f7b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a5595c7e48cf7610", "level": "error", "message": {"text": "Dangling fetch: POST /nyx/api/exec (jarvis-bot/src/nyx.js:775)"}, "properties": {"repobilityId": "2610033a6b1b3c00", "scanner": "scanner-primary", "fingerprint": "a5595c7e48cf7610", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eaa0e00feece45a5", "level": "error", "message": {"text": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId} (jarvis-bot/src/tts.js:24)"}, "properties": {"repobilityId": "7b8a9d3a4107a316", "scanner": "scanner-primary", "fingerprint": "eaa0e00feece45a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4b369d87703adb7c", "level": "error", "message": {"text": "Dangling fetch: GET /theai/api/status (jarvis-bot/src/theai-dashboard.js:296)"}, "properties": {"repobilityId": "b37e7a8ac2dbd135", "scanner": "scanner-primary", "fingerprint": "4b369d87703adb7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4038572bf1c7a3b4", "level": "error", "message": {"text": "Dangling fetch: GET /theai/api/health (jarvis-bot/src/theai-dashboard.js:297)"}, "properties": {"repobilityId": "e06088d744a5fe8e", "scanner": "scanner-primary", "fingerprint": "4038572bf1c7a3b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ed90749cbad3a17a", "level": "error", "message": {"text": "Dangling fetch: GET /theai/api/primitives (jarvis-bot/src/theai-dashboard.js:298)"}, "properties": {"repobilityId": "b205cfa527dfe422", "scanner": "scanner-primary", "fingerprint": "ed90749cbad3a17a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1b4f3d64f5119aea", "level": "error", "message": {"text": "Dangling fetch: POST /theai/api/chat (jarvis-bot/src/theai-dashboard.js:385)"}, "properties": {"repobilityId": "f0df0254e0345f6b", "scanner": "scanner-primary", "fingerprint": "1b4f3d64f5119aea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f36b4e7ac7db6b4e", "level": "error", "message": {"text": "Dangling fetch: POST /theai/api/fork (jarvis-bot/src/theai-dashboard.js:395)"}, "properties": {"repobilityId": "98332a3e822671c4", "scanner": "scanner-primary", "fingerprint": "f36b4e7ac7db6b4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ca2fefbc9b66c05e", "level": "error", "message": {"text": "Dangling fetch: POST /theai/api/prune (jarvis-bot/src/theai-dashboard.js:411)"}, "properties": {"repobilityId": "fc5952f073bd8c08", "scanner": "scanner-primary", "fingerprint": "ca2fefbc9b66c05e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-56e3766b1da8daa9", "level": "error", "message": {"text": "Dangling fetch: POST /theai/api/route (jarvis-bot/src/theai-dashboard.js:428)"}, "properties": {"repobilityId": "f13d2481f8c5017a", "scanner": "scanner-primary", "fingerprint": "56e3766b1da8daa9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4557095e40494be0", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/repos/${GITHUB_REPO}/commits?per_page=1 (scripts/mesh-test.js:57)"}, "properties": {"repobilityId": "d292ad9ba7aff5dd", "scanner": "scanner-primary", "fingerprint": "4557095e40494be0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab8b3c68308c92da", "level": "note", "message": {"text": "Unused endpoint: POST /scrape"}, "properties": {"repobilityId": "95f12ef555cf2db8", "scanner": "scanner-primary", "fingerprint": "ab8b3c68308c92da", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-81397bfffcf09ea3", "level": "note", "message": {"text": "Unused endpoint: POST /scrape/multi"}, "properties": {"repobilityId": "46c1370f16ad1be1", "scanner": "scanner-primary", "fingerprint": "81397bfffcf09ea3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-59355af6b2719d84", "level": "note", "message": {"text": "Unused endpoint: GET /sentiment/{query}"}, "properties": {"repobilityId": "3fe3f14a22cddfad", "scanner": "scanner-primary", "fingerprint": "59355af6b2719d84", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e97f9b8a9b221225", "level": "note", "message": {"text": "Unused endpoint: GET /router/status"}, "properties": {"repobilityId": "e0936e0d71956421", "scanner": "scanner-primary", "fingerprint": "e97f9b8a9b221225", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-56934ce42cb28717", "level": "note", "message": {"text": "Unused endpoint: POST /router/assign"}, "properties": {"repobilityId": "e1b9bf861cf2d5bf", "scanner": "scanner-primary", "fingerprint": "56934ce42cb28717", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a20628f5a31cd1ba", "level": "note", "message": {"text": "Unused endpoint: POST /router/broadcast"}, "properties": {"repobilityId": "33e0a5505f276da9", "scanner": "scanner-primary", "fingerprint": "a20628f5a31cd1ba", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "c6500fc5f5847555", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0c4f0a74c897a39f", "level": "note", "message": {"text": "Unused endpoint: POST /api/batch/:id/commit"}, "properties": {"repobilityId": "207cbbd65ef404e9", "scanner": "scanner-primary", "fingerprint": "0c4f0a74c897a39f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6ede9cbf539fd866", "level": "note", "message": {"text": "Unused endpoint: POST /api/batch/:id/close-commit"}, "properties": {"repobilityId": "a0147f8369280d20", "scanner": "scanner-primary", "fingerprint": "6ede9cbf539fd866", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-328f3695a6778f6e", "level": "note", "message": {"text": "Unused endpoint: POST /api/batch/:id/reveal"}, "properties": {"repobilityId": "583cf6229128434d", "scanner": "scanner-primary", "fingerprint": "328f3695a6778f6e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-241555b3077dcde6", "level": "note", "message": {"text": "Unused endpoint: POST /api/batch/:id/settle"}, "properties": {"repobilityId": "79169dfac246ebea", "scanner": "scanner-primary", "fingerprint": "241555b3077dcde6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-131c9474edbdf2a1", "level": "note", "message": {"text": "Unused endpoint: POST /api/event"}, "properties": {"repobilityId": "a103f5a0cd951f8a", "scanner": "scanner-primary", "fingerprint": "131c9474edbdf2a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1e12d90997e7fe1a", "level": "note", "message": {"text": "Unused endpoint: POST /api/credential"}, "properties": {"repobilityId": "28d4f69276f80d2f", "scanner": "scanner-primary", "fingerprint": "1e12d90997e7fe1a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b05df932d3f950bd", "level": "note", "message": {"text": "Unused endpoint: POST /api/mine"}, "properties": {"repobilityId": "59070cd53704afc9", "scanner": "scanner-primary", "fingerprint": "b05df932d3f950bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e3d39bc86c96a243", "level": "note", "message": {"text": "Unused endpoint: POST /api/mine/verify"}, "properties": {"repobilityId": "a08a180eadc32890", "scanner": "scanner-primary", "fingerprint": "e3d39bc86c96a243", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dd94bd22005ec8c8", "level": "note", "message": {"text": "Unused endpoint: POST /api/trust/batch"}, "properties": {"repobilityId": "122fd5df2ac200d7", "scanner": "scanner-primary", "fingerprint": "dd94bd22005ec8c8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee79344b2e6f45d1", "level": "note", "message": {"text": "Unused endpoint: POST /api/bitcoin/commit"}, "properties": {"repobilityId": "8e56e399e1b400d7", "scanner": "scanner-primary", "fingerprint": "ee79344b2e6f45d1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-459134038822d941", "level": "note", "message": {"text": "Unused endpoint: POST /api/bitcoin/reveal"}, "properties": {"repobilityId": "b95a2452a8100848", "scanner": "scanner-primary", "fingerprint": "459134038822d941", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eb3d6426a498134e", "level": "note", "message": {"text": "Unused endpoint: POST /api/bitcoin/mine"}, "properties": {"repobilityId": "a10372d77dccecf4", "scanner": "scanner-primary", "fingerprint": "eb3d6426a498134e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b5d43036282dbecf", "level": "note", "message": {"text": "Unused endpoint: POST /api/bitcoin/credential"}, "properties": {"repobilityId": "934885c7046c4e2a", "scanner": "scanner-primary", "fingerprint": "b5d43036282dbecf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-26cbbaf04761d713", "level": "note", "message": {"text": "Unused endpoint: POST /api/bitcoin/reputation/burn"}, "properties": {"repobilityId": "eede1253b31f789f", "scanner": "scanner-primary", "fingerprint": "26cbbaf04761d713", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ad9d23aa9606099e", "level": "note", "message": {"text": "Unused endpoint: POST /api/bitcoin/shapley-anchor"}, "properties": {"repobilityId": "ee5f7380ee65316b", "scanner": "scanner-primary", "fingerprint": "ad9d23aa9606099e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-76889df7c8e240c5", "level": "note", "message": {"text": "Unused endpoint: USE /api/"}, "properties": {"repobilityId": "eb3a735224f3d334", "scanner": "scanner-primary", "fingerprint": "76889df7c8e240c5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-972b54078ec2581f", "level": "note", "message": {"text": "Unused endpoint: USE /api/health"}, "properties": {"repobilityId": "e4c6aea03cb9770a", "scanner": "scanner-primary", "fingerprint": "972b54078ec2581f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d6235a39b2c4c57e", "level": "note", "message": {"text": "Unused endpoint: USE /api/prices"}, "properties": {"repobilityId": "ed742e66131aab17", "scanner": "scanner-primary", "fingerprint": "d6235a39b2c4c57e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a73f63e9eeeae241", "level": "note", "message": {"text": "Unused endpoint: USE /api/tokens"}, "properties": {"repobilityId": "3b011b087866b508", "scanner": "scanner-primary", "fingerprint": "a73f63e9eeeae241", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-621bf8c7b692cbb6", "level": "note", "message": {"text": "Unused endpoint: USE /api/chains"}, "properties": {"repobilityId": "1302596ddc1433c8", "scanner": "scanner-primary", "fingerprint": "621bf8c7b692cbb6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9cd7e2cd7bbdef7d", "level": "note", "message": {"text": "Unused endpoint: USE /api/github"}, "properties": {"repobilityId": "d8c9f57c90319f7f", "scanner": "scanner-primary", "fingerprint": "9cd7e2cd7bbdef7d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "e7d57bb2e449a002", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0ae38010c60493f1", "level": "note", "message": {"text": "Unused endpoint: POST /webhook"}, "properties": {"repobilityId": "9a2be6a07a4dfd98", "scanner": "scanner-primary", "fingerprint": "0ae38010c60493f1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-304b6f2b403d93f7", "level": "note", "message": {"text": "Unused endpoint: POST /register"}, "properties": {"repobilityId": "db5600acf24e56ac", "scanner": "scanner-primary", "fingerprint": "304b6f2b403d93f7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-431835284e2fe701", "level": "note", "message": {"text": "Unused endpoint: POST /flush"}, "properties": {"repobilityId": "a77d5e4091684ba9", "scanner": "scanner-primary", "fingerprint": "431835284e2fe701", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-86c4d1171e733bb8", "level": "note", "message": {"text": "Unused endpoint: GET /:chainId"}, "properties": {"repobilityId": "b75df4acf784ae43", "scanner": "scanner-primary", "fingerprint": "86c4d1171e733bb8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1a38ab4a7eae7f88", "level": "note", "message": {"text": "Unused endpoint: GET /:symbol"}, "properties": {"repobilityId": "002c3532d1c38778", "scanner": "scanner-primary", "fingerprint": "1a38ab4a7eae7f88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e98ac95647d495c9", "level": "note", "message": {"text": "Unused endpoint: GET /pairs/:base/:quote"}, "properties": {"repobilityId": "62cb8992197baccf", "scanner": "scanner-primary", "fingerprint": "e98ac95647d495c9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8c236625afb6a8cb", "level": "note", "message": {"text": "Unused endpoint: GET /ready"}, "properties": {"repobilityId": "87c3c50d7c0bd92d", "scanner": "scanner-primary", "fingerprint": "8c236625afb6a8cb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d6d412ba6647f6cc", "level": "note", "message": {"text": "Unused endpoint: GET /live"}, "properties": {"repobilityId": "9071e35a6da25e54", "scanner": "scanner-primary", "fingerprint": "d6d412ba6647f6cc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}