{"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-98f08beac10938ad", "name": "Possibly dead Python function: list_real_parquet", "shortDescription": {"text": "Possibly dead Python function: list_real_parquet"}, "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-c867690a818d045e", "name": "Possibly dead Python function: work", "shortDescription": {"text": "Possibly dead Python function: work"}, "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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-089d55b9d19a5404", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo-user.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo-user.ts:38"}, "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-18996422fb4928d1", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-platform.ts:364", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-platform.ts:364"}, "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-0af6a2206d056848", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/sidebar.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/sidebar.tsx:103"}, "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-1f1ce3bd68d6dd90", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/backtesting/results/verdict-stat-strip.tsx:105", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/backtesting/results/verdict-stat-strip.tsx:105"}, "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-7099b2d0247f3a18", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/backtesting/persist/save-share-bar.tsx:192", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/backtesting/persist/save-share-bar.tsx:192"}, "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-bfeebd9afde7c8bf", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/backtesting/builder/mobile-payoff.tsx:40", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/backtesting/builder/mobile-payoff.tsx:40"}, "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-3c7815dfa13a1251", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/shared/stat-card.tsx:78", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/shared/stat-card.tsx:78"}, "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-8576eb4793322f1e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/shared/feedback-dialog.tsx:132", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/shared/feedback-dialog.tsx:132"}, "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-0cac937833a123fa", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/rich-content.test.ts:21", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/rich-content.test.ts:21"}, "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-20148a7454360102", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/rich-content.tsx:18", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/rich-content.tsx:18"}, "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-195c996dc185ff98", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:85", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:85"}, "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-c27666450e90c490", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/app/layout.tsx:21", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/app/layout.tsx:21"}, "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-063a3a5decda31f2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/app/calendar/page.tsx:178", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/app/calendar/page.tsx:178"}, "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-b81cdf7299fd2e83", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/community/s/[symbol]/symbol-stream.tsx:68", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/community/s/[symbol]/symbol-stream.tsx:68"}, "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-3c1bf1fb479fed86", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/community/leaderboard/leaderboard-view.tsx:135", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/community/leaderboard/leaderboard-view.tsx:135"}, "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-2a2a3304a293066c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/overview-section.tsx:96", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/overview-section.tsx:96"}, "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-04049137dc789354", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/page.tsx:94", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/page.tsx:94"}, "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-fdcd70f82ccc8468", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/blog/[slug]/page.tsx:73", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/blog/[slug]/page.tsx:73"}, "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-b7f4c49ef929b7ea", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/pulse/_components/pulse-sections.tsx:76", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/pulse/_components/pulse-sections.tsx:76"}, "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-4b8a1dce68d9cdfc", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/faq/page.tsx:60", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/faq/page.tsx:60"}, "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-e31cc2362ec8a611", "name": "Stray `console.log` in TS/JS \u2014 src/server/email.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/server/email.ts: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-73378f57d59e9fa7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/server/blog.ts:19", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/server/blog.ts:19"}, "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-c63c5ef65f99359b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/analytics/components/more-stats.tsx:64", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/analytics/components/more-stats.tsx:64"}, "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-ffde2e84fe9988a1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/analytics/components/group-bar.tsx:31", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/analytics/components/group-bar.tsx:31"}, "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-af443d658f3974c4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/analytics/components/horizon-stats.tsx:130", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/analytics/components/horizon-stats.tsx:130"}, "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-fba6b792f0c6928b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/rules/components/adherence-ring-card.tsx:75", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/rules/components/adherence-ring-card.tsx:75"}, "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-6c5e5b6d6166f673", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/rules/components/adherence-panel.tsx:35", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/rules/components/adherence-panel.tsx:35"}, "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-49a696100a9954c4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/insights/components/insight-card.tsx:61", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/insights/components/insight-card.tsx:61"}, "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-db71fd120b414646", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/composer-textarea.tsx:233", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/composer-textarea.tsx:233"}, "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-71a8daac7f88b804", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/unfurl-card.tsx:53", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/unfurl-card.tsx:53"}, "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-3fb4345c62219957", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/inline-composer.tsx:53", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/inline-composer.tsx:53"}, "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-efdf9a8ed4131407", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/trending-board.tsx:48", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/trending-board.tsx:48"}, "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-f85cf82d96b03d3d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/muted-words.tsx:178", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/muted-words.tsx:178"}, "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-c7a87229ab4c42ee", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/message-thread.tsx:158", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/message-thread.tsx:158"}, "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-739016ea6042faa0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/comment-section.tsx:64", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/comment-section.tsx:64"}, "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-a6fb8fdf3cc544ea", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/starter-suggestions.tsx:142", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/starter-suggestions.tsx:142"}, "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-bc250ccc6f32133b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/community-search.tsx:242", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/community-search.tsx: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-ac4b306e8e1e6aa6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/related-posts.tsx:35", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/related-posts.tsx:35"}, "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-249101183c9e7030", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/who-to-follow.tsx:97", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/who-to-follow.tsx:97"}, "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-a08810fbea6fafdb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/dm-attachment.tsx:65", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/dm-attachment.tsx:65"}, "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-298e577e1721b483", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/post-card.tsx:224", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/post-card.tsx:224"}, "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-32c80001eeec1f71", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/plan-trade-dialog.tsx:286", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/plan-trade-dialog.tsx:286"}, "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-f856619b932eaaf8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/template-manager-dialog.tsx:91", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/template-manager-dialog.tsx:91"}, "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-6febf8d8f0475422", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/bulk-action-bar.tsx:144", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/bulk-action-bar.tsx:144"}, "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-180eca999c2ff276", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/template-menu.tsx:92", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/template-menu.tsx:92"}, "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-ce75e40dcedc0fe9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trade-filters.tsx:226", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trade-filters.tsx:226"}, "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-631ff39be2a0f4e7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trade-quick-view.tsx:111", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trade-quick-view.tsx:111"}, "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-67da3e45bd511fd1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trade-cards.tsx:38", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trade-cards.tsx:38"}, "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-95015302c86ffc74", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/csv-import.tsx:197", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/csv-import.tsx:197"}, "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-005ace1fdee9d116", "name": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trades-table.tsx:107", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trades-table.tsx:107"}, "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-7c82d4697a154530", "name": "Possible secret in scripts/e2e-notif-prefs.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-notif-prefs.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-405c2213e88c1645", "name": "Possible secret in scripts/e2e-community-a11y.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-community-a11y.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6f207c0fc7b16982", "name": "Possible secret in scripts/e2e-security.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-security.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-2a5392f0226b5b2a", "name": "Possible secret in scripts/e2e-foryou.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-foryou.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-0cf50effe3c20b7b", "name": "Possible secret in scripts/e2e-community.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-community.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-5fef509aa7bb5397", "name": "Possible secret in scripts/e2e-edit.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-edit.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-704264bc2d3296d1", "name": "Insecure pattern 'node_child_process' in scripts/deploy-vercel.mjs:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/deploy-vercel.mjs:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d545432fe3747d9", "name": "Possible secret in scripts/e2e-watchlist.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-watchlist.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-478d8dd3d8238d97", "name": "Possible secret in scripts/e2e-tag-pages.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-tag-pages.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-78dd156e734d31eb", "name": "Possible secret in scripts/e2e-hosted.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-hosted.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-219c253cfbf9c305", "name": "Possible secret in scripts/e2e-auth.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-auth.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7ad9ee69c0c8beae", "name": "Insecure pattern 'node_child_process' in scripts/demo-video.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/demo-video.mjs:7"}, "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-3458a81fff56c8e2", "name": "Possible secret in scripts/e2e-sentiment.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-sentiment.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-22a8ac26493eae31", "name": "Insecure pattern 'node_child_process' in scripts/ext-package.mjs:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ext-package.mjs: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-ca7791a29e1e670b", "name": "Possible secret in scripts/e2e-autocomplete.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-autocomplete.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-08ca6140c9d28944", "name": "Possible secret in scripts/e2e-dm-v2.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-dm-v2.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-32a93619b42a5089", "name": "Possible secret in scripts/e2e-awards.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-awards.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-fead21f8cdac8075", "name": "Possible secret in scripts/e2e-event-threads.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-event-threads.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-664cd8c658ca2fe0", "name": "Possible secret in scripts/e2e-mod-queue.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-mod-queue.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-822bb74ebaf04528", "name": "Possible secret in scripts/e2e-reputation.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-reputation.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6dca7aaf62393efd", "name": "Insecure pattern 'node_child_process' in scripts/gen-sw.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/gen-sw.mjs:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4853904d1e82ac32", "name": "Possible secret in scripts/e2e-bt-persistence.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-bt-persistence.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-df3affaff5451e14", "name": "Possible secret in scripts/e2e-muted-words.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-muted-words.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b6407185076a8c2c", "name": "Possible secret in scripts/e2e-unfurl.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-unfurl.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-764ed78b198f2b19", "name": "Possible secret in scripts/e2e-reactions.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-reactions.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-629693f5a65f1a58", "name": "Possible secret in scripts/e2e-byod-switch.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-byod-switch.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e3bbcc347facf666", "name": "Possible secret in scripts/e2e-cashtag-streams.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-cashtag-streams.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4bcfa2c8d07ac279", "name": "Possible secret in scripts/e2e-follow-suggestions.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-follow-suggestions.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-1d8f998f6ec36bb8", "name": "Possible secret in scripts/e2e-newposts-pill.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-newposts-pill.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e7a87cca8ebee52a", "name": "Possible secret in scripts/e2e-reshare.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-reshare.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4f163a1e7c300c89", "name": "Possible secret in scripts/e2e-glogin-onboarding.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-glogin-onboarding.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-1f0c35d9aecaede9", "name": "Possible secret in scripts/e2e-extension.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-extension.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7f4ec44ba51ccb09", "name": "Possible secret in scripts/e2e-trending.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-trending.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3151b321fdb1d01c", "name": "Possible secret in scripts/e2e-account-settings.mjs", "shortDescription": {"text": "Possible secret in scripts/e2e-account-settings.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-8ef77be6af0785e1", "name": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/upstox-order-window.html:237", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/upstox-order-window.html:237"}, "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-f4e22946f19a6ce1", "name": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/kite-order-window.html:229", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/kite-order-window.html:229"}, "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-9789540d9b41039d", "name": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/fyers-order-window-changed.html:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/fyers-order-window-changed.html:57"}, "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-bf031634ff48dadd", "name": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/groww-order-window.html:237", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/groww-order-window.html:237"}, "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-a27fc32a2b5030bc", "name": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/kite-order-window-changed.html:47", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/kite-order-window-changed.html:47"}, "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-61b08f7765fa5433", "name": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/upstox-order-window-changed.html:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/upstox-order-window-changed.html:57"}, "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-74a978d9278391da", "name": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/dhan-order-window.html:238", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/dhan-order-window.html:238"}, "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-5f6a38b7a06a51f6", "name": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/groww-order-window-changed.html:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/groww-order-window-changed.html:57"}, "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-31a8e33bde0cd3a3", "name": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/fyers-order-window.html:233", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/fyers-order-window.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-2c2edbe20705c32f", "name": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/dhan-order-window-changed.html:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/dhan-order-window-changed.html:57"}, "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-78756e04655a6fc0", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/rich-content.test.ts:21", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/rich-content.test.ts:21"}, "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-e5e6b0229a53dbbd", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/rich-content.tsx:18", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/rich-content.tsx:18"}, "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-72c8d2b3126b8d90", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:85", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:85"}, "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-5686f9881cb767bb", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/app/layout.tsx:21", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/app/layout.tsx:21"}, "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-671f93dc7d5c5793", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/page.tsx:94", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/page.tsx:94"}, "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-1073eb687ee9273d", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/blog/[slug]/page.tsx:73", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/blog/[slug]/page.tsx:73"}, "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-95f3f1e2692ed883", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/faq/page.tsx:60", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/faq/page.tsx:60"}, "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-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-638b60b90c0ff43b", "name": "Very large file: scripts/e2e-extension.mjs (1229 lines)", "shortDescription": {"text": "Very large file: scripts/e2e-extension.mjs (1229 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-525c68d7ed6d3aff", "name": "Very large file: src/server/community.ts (2197 lines)", "shortDescription": {"text": "Very large file: src/server/community.ts (2197 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-e2811385893d778f", "name": "Very large file: src/features/community/api.ts (1477 lines)", "shortDescription": {"text": "Very large file: src/features/community/api.ts (1477 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 506 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 180 placeholder/mock markers across 75 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-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-6d81d67972a253d4", "name": "Commented-code block (5 lines) in next.config.ts:38", "shortDescription": {"text": "Commented-code block (5 lines) in next.config.ts:38"}, "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-c7387cdacffb1a2b", "name": "Commented-code block (5 lines) in scripts/e2e-community-a11y.mjs:282", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/e2e-community-a11y.mjs:282"}, "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-7ae9b62428a81180", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/e2e-security.mjs:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/e2e-security.mjs:41"}, "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-a18c90f3756017e8", "name": "Commented-code block (6 lines) in scripts/e2e-reputation.mjs:165", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/e2e-reputation.mjs:165"}, "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-a0157ed355802f4d", "name": "Commented-code block (5 lines) in scripts/ext-store-screenshots.mjs:213", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ext-store-screenshots.mjs:213"}, "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-98b6521c8a758b38", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-demo-user.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-demo-user.ts:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3abb5790eefbed32", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/e2e-landing.mjs:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/e2e-landing.mjs:73"}, "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-6c483e8d97c03a7e", "name": "Commented-code block (6 lines) in scripts/e2e-extension.mjs:50", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/e2e-extension.mjs:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5738dea048d4bbbc", "name": "Commented-code block (6 lines) in scripts/migrate-platform.ts:280", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/migrate-platform.ts:280"}, "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-c6ea1a0d20292916", "name": "Commented-code block (7 lines) in scripts/e2e-seg-tax-v2.mjs:69", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/e2e-seg-tax-v2.mjs:69"}, "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-ca934b563eefbdde", "name": "Commented-code block (5 lines) in scripts/e2e-trending.mjs:168", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/e2e-trending.mjs:168"}, "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-8fe8b022297fae78", "name": "Commented-code block (5 lines) in extension/src/lib/pre-trade-plan.ts:75", "shortDescription": {"text": "Commented-code block (5 lines) in extension/src/lib/pre-trade-plan.ts:75"}, "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-1c9ddb718a26ee05", "name": "Commented-code block (5 lines) in extension/src/brokers/upstox.ts:52", "shortDescription": {"text": "Commented-code block (5 lines) in extension/src/brokers/upstox.ts: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-8709d4ee455d5833", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/layout/topbar.tsx:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/layout/topbar.tsx:92"}, "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-4a33cf85e02899a8", "name": "Commented-code block (5 lines) in src/components/shared/stat-card.tsx:40", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/shared/stat-card.tsx:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-112f4305977f23f2", "name": "Commented-code block (5 lines) in src/components/ui/rich-content.test.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/rich-content.test.ts: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-eb6392e50fca63bd", "name": "Commented-code block (5 lines) in src/providers/db-session-provider.tsx:84", "shortDescription": {"text": "Commented-code block (5 lines) in src/providers/db-session-provider.tsx:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1278e08f7a96b26b", "name": "Commented-code block (5 lines) in src/app/api/admin/reports/route.ts:40", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/reports/route.ts:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aeeb0138e0cc386c", "name": "Commented-code block (6 lines) in src/app/community/post/[id]/page.tsx:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/community/post/[id]/page.tsx: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-349ee1032e64383f", "name": "Commented-code block (5 lines) in src/app/community/s/[symbol]/page.tsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/community/s/[symbol]/page.tsx: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-619e0f03b030b6de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/use-admin-overview.ts:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/use-admin-overview.ts:37"}, "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-c8c08db67730b44c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/submissions-section.tsx:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/submissions-section.tsx:34"}, "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-22770dd47cf8b766", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/reports-section.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/reports-section.tsx:66"}, "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-1579e779f48797bb", "name": "Commented-code block (8 lines) in src/lib/options/payoff.ts:188", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/options/payoff.ts:188"}, "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-39b8ae03c6db4770", "name": "Commented-code block (5 lines) in src/lib/backtest/engine/resolve-strike.ts:178", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/backtest/engine/resolve-strike.ts:178"}, "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-d20e2a245012a15e", "name": "Commented-code block (6 lines) in src/lib/montecarlo/simulate.ts:143", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/montecarlo/simulate.ts:143"}, "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-27ee6e367eeff135", "name": "Commented-code block (9 lines) in src/lib/db/migrations.ts:175", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/db/migrations.ts:175"}, "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-135dc96b92babb7f", "name": "Commented-code block (5 lines) in src/lib/db/seed.ts:138", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/db/seed.ts:138"}, "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-8a80a0c05dbd290e", "name": "Commented-code block (9 lines) in src/lib/charges/charges.golden.test.ts:103", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/charges/charges.golden.test.ts:103"}, "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-c706b83a33520afa", "name": "Commented-code block (10 lines) in src/lib/charges/charges.ts:136", "shortDescription": {"text": "Commented-code block (10 lines) in src/lib/charges/charges.ts:136"}, "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-6b0d188c3e7262ad", "name": "Commented-code block (11 lines) in src/server/auth.ts:67", "shortDescription": {"text": "Commented-code block (11 lines) in src/server/auth.ts: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-b8d62f6cb32e68b9", "name": "Commented-code block (5 lines) in src/server/unfurl.test.ts:134", "shortDescription": {"text": "Commented-code block (5 lines) in src/server/unfurl.test.ts:134"}, "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-2050fbd785b7c62d", "name": "Commented-code block (9 lines) in src/server/origin-check.ts:18", "shortDescription": {"text": "Commented-code block (9 lines) in src/server/origin-check.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a3533eb486c66f45", "name": "Commented-code block (5 lines) in src/server/community.ts:778", "shortDescription": {"text": "Commented-code block (5 lines) in src/server/community.ts:778"}, "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-e0837f999c774884", "name": "Legacy-named symbol `p_old` in src/server/new-posts-count.test.ts:29", "shortDescription": {"text": "Legacy-named symbol `p_old` in src/server/new-posts-count.test.ts:29"}, "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-9fbc156abd7e8e33", "name": "Commented-code block (5 lines) in src/features/backtest/presets/run-decision.ts:97", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/backtest/presets/run-decision.ts:97"}, "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-4f38d5d37425bd62", "name": "Commented-code block (5 lines) in src/features/backtest/results/charges-derive.ts:76", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/backtest/results/charges-derive.ts:76"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-450ab1397c188e62", "name": "Commented-code block (9 lines) in src/features/journal/queries.ts:119", "shortDescription": {"text": "Commented-code block (9 lines) in src/features/journal/queries.ts:119"}, "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-a836bea962059c66", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/migration/components/mode-switch-wizard.tsx:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/migration/components/mode-switch-wizard.tsx:30"}, "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-5a39d8a6a2e2084b", "name": "Commented-code block (5 lines) in src/features/community/api.ts:1408", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/community/api.ts:1408"}, "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-d50f8d67eab237eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/community/unfurl.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/community/unfurl.ts:29"}, "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-d108b0020ea76016", "name": "Commented-code block (5 lines) in src/features/community/awards.test.ts:204", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/community/awards.test.ts:204"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ae990fcd4b99313", "name": "Commented-code block (5 lines) in src/features/community/components/composer.tsx:86", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/community/components/composer.tsx:86"}, "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-e5a4678d821e517d", "name": "Commented-code block (5 lines) in src/features/workflow/queries.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/workflow/queries.ts:24"}, "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-0701ebc914479643", "name": "Commented-code block (6 lines) in src/features/onboarding/components/onboarding-flow.tsx:57", "shortDescription": {"text": "Commented-code block (6 lines) in src/features/onboarding/components/onboarding-flow.tsx:57"}, "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-ec96f6cea0d0551a", "name": "Commented-code block (5 lines) in src/features/onboarding/components/setup-form.tsx:109", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/onboarding/components/setup-form.tsx:109"}, "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-0b37dbb7100724a6", "name": "Commented-code block (5 lines) in src/features/account/qr.ts:245", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/account/qr.ts:245"}, "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-fef5682d51d942f4", "name": "Commented-code block (5 lines) in src/features/trades/save-statements.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/trades/save-statements.ts:33"}, "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-cb6f9b95b38a29ed", "name": "Commented-code block (6 lines) in src/features/trades/grouping.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/features/trades/grouping.ts: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-f6fd34a5b949b7a3", "name": "Commented-code block (6 lines) in src/features/trades/csv.ts:220", "shortDescription": {"text": "Commented-code block (6 lines) in src/features/trades/csv.ts:220"}, "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-61d6336e5e8574d1", "name": "Commented-code block (5 lines) in src/features/trades/utils.ts:42", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/trades/utils.ts: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-ec2a0134c05b936a", "name": "Commented-code block (5 lines) in src/features/trades/instrument-parse.ts:204", "shortDescription": {"text": "Commented-code block (5 lines) in src/features/trades/instrument-parse.ts:204"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b184d7e20c855e3b", "name": "Commented-code block (6 lines) in src/features/trades/recompute.ts:88", "shortDescription": {"text": "Commented-code block (6 lines) in src/features/trades/recompute.ts:88"}, "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-f626b57b4230ac74", "name": "Commented-code block (6 lines) in src/features/trades/components/quick-add.tsx:29", "shortDescription": {"text": "Commented-code block (6 lines) in src/features/trades/components/quick-add.tsx:29"}, "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-70fcae2d13c708b6", "name": "17 env vars used in code but missing from .env.example", "shortDescription": {"text": "17 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_EMAIL`, `ADMIN_PASSWORD`, `AUTH_TEST_HOOK`, `BASE_URL`, `BYOD_TOKEN`, `BYOD_URL`, `DEMO_CLICK_AUDIO_PATH`, `E2E_PASSWORD` + 9 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}}]}}, "automationDetails": {"id": "repobility/17693"}, "properties": {"repository": "raashish1601/trademark", "repoUrl": "https://github.com/raashish1601/trademark", "branch": "main"}, "results": [{"ruleId": "scanner-98f08beac10938ad", "level": "note", "message": {"text": "Possibly dead Python function: list_real_parquet"}, "properties": {"repobilityId": "add0573ac8dd7180", "scanner": "scanner-primary", "fingerprint": "98f08beac10938ad", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/etl/inspect_archive.py:74"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c867690a818d045e", "level": "note", "message": {"text": "Possibly dead Python function: work"}, "properties": {"repobilityId": "c5b0e9acf413d08f", "scanner": "scanner-primary", "fingerprint": "c867690a818d045e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/etl/resort_normalize.py:294"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-089d55b9d19a5404", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo-user.ts:38"}, "properties": {"repobilityId": "727e62364b6f6e63", "scanner": "scanner-primary", "fingerprint": "089d55b9d19a5404", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18996422fb4928d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-platform.ts:364"}, "properties": {"repobilityId": "3c34a280286dab8b", "scanner": "scanner-primary", "fingerprint": "18996422fb4928d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0af6a2206d056848", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/sidebar.tsx:103"}, "properties": {"repobilityId": "71d53859fbb6eed7", "scanner": "scanner-primary", "fingerprint": "0af6a2206d056848", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1f1ce3bd68d6dd90", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/backtesting/results/verdict-stat-strip.tsx:105"}, "properties": {"repobilityId": "f58d3625359f9b9b", "scanner": "scanner-primary", "fingerprint": "1f1ce3bd68d6dd90", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7099b2d0247f3a18", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/backtesting/persist/save-share-bar.tsx:192"}, "properties": {"repobilityId": "1ccb555b653d8d10", "scanner": "scanner-primary", "fingerprint": "7099b2d0247f3a18", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bfeebd9afde7c8bf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/backtesting/builder/mobile-payoff.tsx:40"}, "properties": {"repobilityId": "23d4148763f67eb9", "scanner": "scanner-primary", "fingerprint": "bfeebd9afde7c8bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3c7815dfa13a1251", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/shared/stat-card.tsx:78"}, "properties": {"repobilityId": "60f897111ba1fa7a", "scanner": "scanner-primary", "fingerprint": "3c7815dfa13a1251", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8576eb4793322f1e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/shared/feedback-dialog.tsx:132"}, "properties": {"repobilityId": "a77bc32093082850", "scanner": "scanner-primary", "fingerprint": "8576eb4793322f1e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0cac937833a123fa", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/rich-content.test.ts:21"}, "properties": {"repobilityId": "ca5cbe5521c2e09b", "scanner": "scanner-primary", "fingerprint": "0cac937833a123fa", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-20148a7454360102", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/rich-content.tsx:18"}, "properties": {"repobilityId": "7c02db3b6a1cb0ee", "scanner": "scanner-primary", "fingerprint": "20148a7454360102", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-195c996dc185ff98", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:85"}, "properties": {"repobilityId": "0d72350965068f5b", "scanner": "scanner-primary", "fingerprint": "195c996dc185ff98", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c27666450e90c490", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/app/layout.tsx:21"}, "properties": {"repobilityId": "16a79e80001b4947", "scanner": "scanner-primary", "fingerprint": "c27666450e90c490", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-063a3a5decda31f2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/app/calendar/page.tsx:178"}, "properties": {"repobilityId": "aa31920adfa9bc00", "scanner": "scanner-primary", "fingerprint": "063a3a5decda31f2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b81cdf7299fd2e83", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/community/s/[symbol]/symbol-stream.tsx:68"}, "properties": {"repobilityId": "e66954abcc227932", "scanner": "scanner-primary", "fingerprint": "b81cdf7299fd2e83", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3c1bf1fb479fed86", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/community/leaderboard/leaderboard-view.tsx:135"}, "properties": {"repobilityId": "7a11a9ee7d1bb2d4", "scanner": "scanner-primary", "fingerprint": "3c1bf1fb479fed86", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2a2a3304a293066c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/overview-section.tsx:96"}, "properties": {"repobilityId": "7dabbb97e2159abb", "scanner": "scanner-primary", "fingerprint": "2a2a3304a293066c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-04049137dc789354", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/page.tsx:94"}, "properties": {"repobilityId": "3b9b79c882298b6e", "scanner": "scanner-primary", "fingerprint": "04049137dc789354", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-fdcd70f82ccc8468", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/blog/[slug]/page.tsx:73"}, "properties": {"repobilityId": "722281a87c7c81c5", "scanner": "scanner-primary", "fingerprint": "fdcd70f82ccc8468", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b7f4c49ef929b7ea", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/pulse/_components/pulse-sections.tsx:76"}, "properties": {"repobilityId": "6a3487d49b5f2ed7", "scanner": "scanner-primary", "fingerprint": "b7f4c49ef929b7ea", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4b8a1dce68d9cdfc", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/faq/page.tsx:60"}, "properties": {"repobilityId": "20bda40047d6302b", "scanner": "scanner-primary", "fingerprint": "4b8a1dce68d9cdfc", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e31cc2362ec8a611", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/server/email.ts:10"}, "properties": {"repobilityId": "6cef022f775d5271", "scanner": "scanner-primary", "fingerprint": "e31cc2362ec8a611", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73378f57d59e9fa7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/server/blog.ts:19"}, "properties": {"repobilityId": "474973e36465f613", "scanner": "scanner-primary", "fingerprint": "73378f57d59e9fa7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c63c5ef65f99359b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/analytics/components/more-stats.tsx:64"}, "properties": {"repobilityId": "7cfe6c5ec984cee9", "scanner": "scanner-primary", "fingerprint": "c63c5ef65f99359b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ffde2e84fe9988a1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/analytics/components/group-bar.tsx:31"}, "properties": {"repobilityId": "b536d87d089afff3", "scanner": "scanner-primary", "fingerprint": "ffde2e84fe9988a1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-af443d658f3974c4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/analytics/components/horizon-stats.tsx:130"}, "properties": {"repobilityId": "a6d97b5741e0aa5a", "scanner": "scanner-primary", "fingerprint": "af443d658f3974c4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fba6b792f0c6928b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/rules/components/adherence-ring-card.tsx:75"}, "properties": {"repobilityId": "5a171618617a5887", "scanner": "scanner-primary", "fingerprint": "fba6b792f0c6928b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6c5e5b6d6166f673", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/rules/components/adherence-panel.tsx:35"}, "properties": {"repobilityId": "2ea95fbbf0693bc7", "scanner": "scanner-primary", "fingerprint": "6c5e5b6d6166f673", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-49a696100a9954c4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/insights/components/insight-card.tsx:61"}, "properties": {"repobilityId": "decfdde2e9253a3f", "scanner": "scanner-primary", "fingerprint": "49a696100a9954c4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-db71fd120b414646", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/composer-textarea.tsx:233"}, "properties": {"repobilityId": "957322148567361f", "scanner": "scanner-primary", "fingerprint": "db71fd120b414646", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-71a8daac7f88b804", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/unfurl-card.tsx:53"}, "properties": {"repobilityId": "651e9e1eca8fe534", "scanner": "scanner-primary", "fingerprint": "71a8daac7f88b804", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3fb4345c62219957", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/inline-composer.tsx:53"}, "properties": {"repobilityId": "9e338eb2f57dd241", "scanner": "scanner-primary", "fingerprint": "3fb4345c62219957", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-efdf9a8ed4131407", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/trending-board.tsx:48"}, "properties": {"repobilityId": "3b0e92b136e1cea6", "scanner": "scanner-primary", "fingerprint": "efdf9a8ed4131407", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f85cf82d96b03d3d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/muted-words.tsx:178"}, "properties": {"repobilityId": "cddae5737fdad7c2", "scanner": "scanner-primary", "fingerprint": "f85cf82d96b03d3d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c7a87229ab4c42ee", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/message-thread.tsx:158"}, "properties": {"repobilityId": "9b5a1e77e1c719f4", "scanner": "scanner-primary", "fingerprint": "c7a87229ab4c42ee", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-739016ea6042faa0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/comment-section.tsx:64"}, "properties": {"repobilityId": "3e9fcfbc0aafb5e7", "scanner": "scanner-primary", "fingerprint": "739016ea6042faa0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a6fb8fdf3cc544ea", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/starter-suggestions.tsx:142"}, "properties": {"repobilityId": "ad9a4cf76fd8d5ce", "scanner": "scanner-primary", "fingerprint": "a6fb8fdf3cc544ea", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bc250ccc6f32133b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/community-search.tsx:242"}, "properties": {"repobilityId": "a0c9c48059cbcac1", "scanner": "scanner-primary", "fingerprint": "bc250ccc6f32133b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ac4b306e8e1e6aa6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/related-posts.tsx:35"}, "properties": {"repobilityId": "1e6a53a87af427fa", "scanner": "scanner-primary", "fingerprint": "ac4b306e8e1e6aa6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-249101183c9e7030", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/who-to-follow.tsx:97"}, "properties": {"repobilityId": "026687ef429c1d7d", "scanner": "scanner-primary", "fingerprint": "249101183c9e7030", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a08810fbea6fafdb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/dm-attachment.tsx:65"}, "properties": {"repobilityId": "de125f65204e5f88", "scanner": "scanner-primary", "fingerprint": "a08810fbea6fafdb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-298e577e1721b483", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/community/components/post-card.tsx:224"}, "properties": {"repobilityId": "27196a2c37264da3", "scanner": "scanner-primary", "fingerprint": "298e577e1721b483", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-32c80001eeec1f71", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/plan-trade-dialog.tsx:286"}, "properties": {"repobilityId": "9a847694f4759d4a", "scanner": "scanner-primary", "fingerprint": "32c80001eeec1f71", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f856619b932eaaf8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/template-manager-dialog.tsx:91"}, "properties": {"repobilityId": "71d4dd7de0c406cb", "scanner": "scanner-primary", "fingerprint": "f856619b932eaaf8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6febf8d8f0475422", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/bulk-action-bar.tsx:144"}, "properties": {"repobilityId": "304c9af2fa47620f", "scanner": "scanner-primary", "fingerprint": "6febf8d8f0475422", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-180eca999c2ff276", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/workflow/components/template-menu.tsx:92"}, "properties": {"repobilityId": "845d2f5fcb561a70", "scanner": "scanner-primary", "fingerprint": "180eca999c2ff276", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ce75e40dcedc0fe9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trade-filters.tsx:226"}, "properties": {"repobilityId": "3b13647f14e909f7", "scanner": "scanner-primary", "fingerprint": "ce75e40dcedc0fe9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-631ff39be2a0f4e7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trade-quick-view.tsx:111"}, "properties": {"repobilityId": "1317ee70ff9cabf3", "scanner": "scanner-primary", "fingerprint": "631ff39be2a0f4e7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-67da3e45bd511fd1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trade-cards.tsx:38"}, "properties": {"repobilityId": "491808032e94d69a", "scanner": "scanner-primary", "fingerprint": "67da3e45bd511fd1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-95015302c86ffc74", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/csv-import.tsx:197"}, "properties": {"repobilityId": "3444140657c2ec52", "scanner": "scanner-primary", "fingerprint": "95015302c86ffc74", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-005ace1fdee9d116", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/features/trades/components/trades-table.tsx:107"}, "properties": {"repobilityId": "861b4dbf6fb2d4ad", "scanner": "scanner-primary", "fingerprint": "005ace1fdee9d116", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7c82d4697a154530", "level": "error", "message": {"text": "Possible secret in scripts/e2e-notif-prefs.mjs"}, "properties": {"repobilityId": "96bc8ccf0d542e99", "scanner": "scanner-primary", "fingerprint": "7c82d4697a154530", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-notif-prefs.mjs"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-405c2213e88c1645", "level": "error", "message": {"text": "Possible secret in scripts/e2e-community-a11y.mjs"}, "properties": {"repobilityId": "0c68b4077df4ceaa", "scanner": "scanner-primary", "fingerprint": "405c2213e88c1645", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-community-a11y.mjs"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-6f207c0fc7b16982", "level": "error", "message": {"text": "Possible secret in scripts/e2e-security.mjs"}, "properties": {"repobilityId": "0d2bbe3a84daca3e", "scanner": "scanner-primary", "fingerprint": "6f207c0fc7b16982", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-security.mjs"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-2a5392f0226b5b2a", "level": "error", "message": {"text": "Possible secret in scripts/e2e-foryou.mjs"}, "properties": {"repobilityId": "29451c2adcdc241b", "scanner": "scanner-primary", "fingerprint": "2a5392f0226b5b2a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-foryou.mjs"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-0cf50effe3c20b7b", "level": "error", "message": {"text": "Possible secret in scripts/e2e-community.mjs"}, "properties": {"repobilityId": "9688d427f8d35ff9", "scanner": "scanner-primary", "fingerprint": "0cf50effe3c20b7b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-community.mjs"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-5fef509aa7bb5397", "level": "error", "message": {"text": "Possible secret in scripts/e2e-edit.mjs"}, "properties": {"repobilityId": "2d83bcc4577b800a", "scanner": "scanner-primary", "fingerprint": "5fef509aa7bb5397", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-edit.mjs"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-704264bc2d3296d1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/deploy-vercel.mjs:9"}, "properties": {"repobilityId": "de3b4233b87911d0", "scanner": "scanner-primary", "fingerprint": "704264bc2d3296d1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/deploy-vercel.mjs"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-9d545432fe3747d9", "level": "error", "message": {"text": "Possible secret in scripts/e2e-watchlist.mjs"}, "properties": {"repobilityId": "fc7a82484a8045b4", "scanner": "scanner-primary", "fingerprint": "9d545432fe3747d9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-watchlist.mjs"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-478d8dd3d8238d97", "level": "error", "message": {"text": "Possible secret in scripts/e2e-tag-pages.mjs"}, "properties": {"repobilityId": "7443b500698473b3", "scanner": "scanner-primary", "fingerprint": "478d8dd3d8238d97", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-tag-pages.mjs"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-78dd156e734d31eb", "level": "error", "message": {"text": "Possible secret in scripts/e2e-hosted.mjs"}, "properties": {"repobilityId": "b65329c669af1363", "scanner": "scanner-primary", "fingerprint": "78dd156e734d31eb", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-hosted.mjs"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-219c253cfbf9c305", "level": "error", "message": {"text": "Possible secret in scripts/e2e-auth.mjs"}, "properties": {"repobilityId": "b229c339457e76d4", "scanner": "scanner-primary", "fingerprint": "219c253cfbf9c305", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-auth.mjs"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-219c253cfbf9c305", "level": "error", "message": {"text": "Possible secret in scripts/e2e-auth.mjs"}, "properties": {"repobilityId": "b229c339457e76d4", "scanner": "scanner-primary", "fingerprint": "219c253cfbf9c305", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-auth.mjs"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-7ad9ee69c0c8beae", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/demo-video.mjs:7"}, "properties": {"repobilityId": "ab3baf20853dc8df", "scanner": "scanner-primary", "fingerprint": "7ad9ee69c0c8beae", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/demo-video.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-3458a81fff56c8e2", "level": "error", "message": {"text": "Possible secret in scripts/e2e-sentiment.mjs"}, "properties": {"repobilityId": "958e14154842eb3e", "scanner": "scanner-primary", "fingerprint": "3458a81fff56c8e2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-sentiment.mjs"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-22a8ac26493eae31", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ext-package.mjs:21"}, "properties": {"repobilityId": "b47e6b2d249536cd", "scanner": "scanner-primary", "fingerprint": "22a8ac26493eae31", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ext-package.mjs"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-ca7791a29e1e670b", "level": "error", "message": {"text": "Possible secret in scripts/e2e-autocomplete.mjs"}, "properties": {"repobilityId": "d4e8950553258554", "scanner": "scanner-primary", "fingerprint": "ca7791a29e1e670b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-autocomplete.mjs"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-08ca6140c9d28944", "level": "error", "message": {"text": "Possible secret in scripts/e2e-dm-v2.mjs"}, "properties": {"repobilityId": "ba90a824d39ddeab", "scanner": "scanner-primary", "fingerprint": "08ca6140c9d28944", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-dm-v2.mjs"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-32a93619b42a5089", "level": "error", "message": {"text": "Possible secret in scripts/e2e-awards.mjs"}, "properties": {"repobilityId": "ea05cbfce8d11986", "scanner": "scanner-primary", "fingerprint": "32a93619b42a5089", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-awards.mjs"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-fead21f8cdac8075", "level": "error", "message": {"text": "Possible secret in scripts/e2e-event-threads.mjs"}, "properties": {"repobilityId": "c68630ed97bd6651", "scanner": "scanner-primary", "fingerprint": "fead21f8cdac8075", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-event-threads.mjs"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-664cd8c658ca2fe0", "level": "error", "message": {"text": "Possible secret in scripts/e2e-mod-queue.mjs"}, "properties": {"repobilityId": "bafead77e8e4771a", "scanner": "scanner-primary", "fingerprint": "664cd8c658ca2fe0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-mod-queue.mjs"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-822bb74ebaf04528", "level": "error", "message": {"text": "Possible secret in scripts/e2e-reputation.mjs"}, "properties": {"repobilityId": "acdd183a63736803", "scanner": "scanner-primary", "fingerprint": "822bb74ebaf04528", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-reputation.mjs"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-6dca7aaf62393efd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/gen-sw.mjs:6"}, "properties": {"repobilityId": "86e4e97aa7be08f1", "scanner": "scanner-primary", "fingerprint": "6dca7aaf62393efd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/gen-sw.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-4853904d1e82ac32", "level": "error", "message": {"text": "Possible secret in scripts/e2e-bt-persistence.mjs"}, "properties": {"repobilityId": "8a76121fba2d9ba0", "scanner": "scanner-primary", "fingerprint": "4853904d1e82ac32", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-bt-persistence.mjs"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-df3affaff5451e14", "level": "error", "message": {"text": "Possible secret in scripts/e2e-muted-words.mjs"}, "properties": {"repobilityId": "02c45fccdaa0a10b", "scanner": "scanner-primary", "fingerprint": "df3affaff5451e14", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-muted-words.mjs"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-b6407185076a8c2c", "level": "error", "message": {"text": "Possible secret in scripts/e2e-unfurl.mjs"}, "properties": {"repobilityId": "072aae0239b7b891", "scanner": "scanner-primary", "fingerprint": "b6407185076a8c2c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-unfurl.mjs"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-764ed78b198f2b19", "level": "error", "message": {"text": "Possible secret in scripts/e2e-reactions.mjs"}, "properties": {"repobilityId": "fec794fcabf2084a", "scanner": "scanner-primary", "fingerprint": "764ed78b198f2b19", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-reactions.mjs"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-629693f5a65f1a58", "level": "error", "message": {"text": "Possible secret in scripts/e2e-byod-switch.mjs"}, "properties": {"repobilityId": "84529fbbba27aaf8", "scanner": "scanner-primary", "fingerprint": "629693f5a65f1a58", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-byod-switch.mjs"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-e3bbcc347facf666", "level": "error", "message": {"text": "Possible secret in scripts/e2e-cashtag-streams.mjs"}, "properties": {"repobilityId": "e1aa2b4a5794ca31", "scanner": "scanner-primary", "fingerprint": "e3bbcc347facf666", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-cashtag-streams.mjs"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-4bcfa2c8d07ac279", "level": "error", "message": {"text": "Possible secret in scripts/e2e-follow-suggestions.mjs"}, "properties": {"repobilityId": "cfdb0898e8d77f80", "scanner": "scanner-primary", "fingerprint": "4bcfa2c8d07ac279", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-follow-suggestions.mjs"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-1d8f998f6ec36bb8", "level": "error", "message": {"text": "Possible secret in scripts/e2e-newposts-pill.mjs"}, "properties": {"repobilityId": "932d322ed885eec6", "scanner": "scanner-primary", "fingerprint": "1d8f998f6ec36bb8", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-newposts-pill.mjs"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-e7a87cca8ebee52a", "level": "error", "message": {"text": "Possible secret in scripts/e2e-reshare.mjs"}, "properties": {"repobilityId": "43e22237d749f8f3", "scanner": "scanner-primary", "fingerprint": "e7a87cca8ebee52a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-reshare.mjs"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-4f163a1e7c300c89", "level": "error", "message": {"text": "Possible secret in scripts/e2e-glogin-onboarding.mjs"}, "properties": {"repobilityId": "9f394ef524f4f2e0", "scanner": "scanner-primary", "fingerprint": "4f163a1e7c300c89", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-glogin-onboarding.mjs"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-1f0c35d9aecaede9", "level": "error", "message": {"text": "Possible secret in scripts/e2e-extension.mjs"}, "properties": {"repobilityId": "e0a1ed410f515160", "scanner": "scanner-primary", "fingerprint": "1f0c35d9aecaede9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-extension.mjs"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-7f4ec44ba51ccb09", "level": "error", "message": {"text": "Possible secret in scripts/e2e-trending.mjs"}, "properties": {"repobilityId": "9fa3cd06fb0f1282", "scanner": "scanner-primary", "fingerprint": "7f4ec44ba51ccb09", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-trending.mjs"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-3151b321fdb1d01c", "level": "error", "message": {"text": "Possible secret in scripts/e2e-account-settings.mjs"}, "properties": {"repobilityId": "2cc387fc524d8413", "scanner": "scanner-primary", "fingerprint": "3151b321fdb1d01c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-account-settings.mjs"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-3151b321fdb1d01c", "level": "error", "message": {"text": "Possible secret in scripts/e2e-account-settings.mjs"}, "properties": {"repobilityId": "2cc387fc524d8413", "scanner": "scanner-primary", "fingerprint": "3151b321fdb1d01c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-account-settings.mjs"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-8ef77be6af0785e1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/upstox-order-window.html:237"}, "properties": {"repobilityId": "e43a4f5441189cf2", "scanner": "scanner-primary", "fingerprint": "8ef77be6af0785e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extension/test-fixtures/upstox-order-window.html"}, "region": {"startLine": 237}}}]}, {"ruleId": "scanner-f4e22946f19a6ce1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/kite-order-window.html:229"}, "properties": {"repobilityId": "4cc5c655f0fadbd6", "scanner": "scanner-primary", "fingerprint": "f4e22946f19a6ce1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extension/test-fixtures/kite-order-window.html"}, "region": {"startLine": 229}}}]}, {"ruleId": "scanner-9789540d9b41039d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/fyers-order-window-changed.html:57"}, "properties": {"repobilityId": "6c84cc912bfaaf2b", "scanner": "scanner-primary", "fingerprint": "9789540d9b41039d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extension/test-fixtures/fyers-order-window-changed.html"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-bf031634ff48dadd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/groww-order-window.html:237"}, "properties": {"repobilityId": "97d1d2467c0f0124", "scanner": "scanner-primary", "fingerprint": "bf031634ff48dadd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extension/test-fixtures/groww-order-window.html"}, "region": {"startLine": 237}}}]}, {"ruleId": "scanner-a27fc32a2b5030bc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/kite-order-window-changed.html:47"}, "properties": {"repobilityId": "402fd7fffd045f91", "scanner": "scanner-primary", "fingerprint": "a27fc32a2b5030bc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extension/test-fixtures/kite-order-window-changed.html"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-61b08f7765fa5433", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/upstox-order-window-changed.html:57"}, "properties": {"repobilityId": "4babd587f3bc425a", "scanner": "scanner-primary", "fingerprint": "61b08f7765fa5433", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extension/test-fixtures/upstox-order-window-changed.html"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-74a978d9278391da", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/dhan-order-window.html:238"}, "properties": {"repobilityId": "91812726208dc468", "scanner": "scanner-primary", "fingerprint": "74a978d9278391da", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extension/test-fixtures/dhan-order-window.html"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-5f6a38b7a06a51f6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/groww-order-window-changed.html:57"}, "properties": {"repobilityId": "15552b9f9c99f521", "scanner": "scanner-primary", "fingerprint": "5f6a38b7a06a51f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extension/test-fixtures/groww-order-window-changed.html"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-31a8e33bde0cd3a3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/fyers-order-window.html:233"}, "properties": {"repobilityId": "43caace0fb5bd845", "scanner": "scanner-primary", "fingerprint": "31a8e33bde0cd3a3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extension/test-fixtures/fyers-order-window.html"}, "region": {"startLine": 233}}}]}, {"ruleId": "scanner-2c2edbe20705c32f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in extension/test-fixtures/dhan-order-window-changed.html:57"}, "properties": {"repobilityId": "c6880721ff1b2a78", "scanner": "scanner-primary", "fingerprint": "2c2edbe20705c32f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extension/test-fixtures/dhan-order-window-changed.html"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-78756e04655a6fc0", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/rich-content.test.ts:21"}, "properties": {"repobilityId": "bbf786227429a4e0", "scanner": "scanner-primary", "fingerprint": "78756e04655a6fc0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ui/rich-content.test.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-e5e6b0229a53dbbd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/rich-content.tsx:18"}, "properties": {"repobilityId": "b6c5025a410a8ee8", "scanner": "scanner-primary", "fingerprint": "e5e6b0229a53dbbd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ui/rich-content.tsx"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-72c8d2b3126b8d90", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:85"}, "properties": {"repobilityId": "0bca654fa2052eb0", "scanner": "scanner-primary", "fingerprint": "72c8d2b3126b8d90", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-5686f9881cb767bb", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/app/layout.tsx:21"}, "properties": {"repobilityId": "5c987d9fecd56274", "scanner": "scanner-primary", "fingerprint": "5686f9881cb767bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/app/layout.tsx"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-671f93dc7d5c5793", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/page.tsx:94"}, "properties": {"repobilityId": "02614b81e7b9928d", "scanner": "scanner-primary", "fingerprint": "671f93dc7d5c5793", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/page.tsx"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-1073eb687ee9273d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/blog/[slug]/page.tsx:73"}, "properties": {"repobilityId": "dbe165bf10374c5b", "scanner": "scanner-primary", "fingerprint": "1073eb687ee9273d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/blog/[slug]/page.tsx"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-95f3f1e2692ed883", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/faq/page.tsx:60"}, "properties": {"repobilityId": "0a2bfa39be795c06", "scanner": "scanner-primary", "fingerprint": "95f3f1e2692ed883", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/faq/page.tsx"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "714673743ff59cef", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-638b60b90c0ff43b", "level": "note", "message": {"text": "Very large file: scripts/e2e-extension.mjs (1229 lines)"}, "properties": {"repobilityId": "0ef4db8dbe0fd742", "scanner": "scanner-primary", "fingerprint": "638b60b90c0ff43b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-525c68d7ed6d3aff", "level": "note", "message": {"text": "Very large file: src/server/community.ts (2197 lines)"}, "properties": {"repobilityId": "a1018f697ec1e980", "scanner": "scanner-primary", "fingerprint": "525c68d7ed6d3aff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e2811385893d778f", "level": "note", "message": {"text": "Very large file: src/features/community/api.ts (1477 lines)"}, "properties": {"repobilityId": "b4f14fa76802d44e", "scanner": "scanner-primary", "fingerprint": "e2811385893d778f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "5efc78cae4005912", "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": "bc8e0c2b4f5c64a8", "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": "5095be810c7150ba", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "cd53d8714fb7e5b1", "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": "ba985dc0dc1fe096", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-6d81d67972a253d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in next.config.ts:38"}, "properties": {"repobilityId": "5798677de19f0577", "scanner": "scanner-primary", "fingerprint": "6d81d67972a253d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7387cdacffb1a2b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/e2e-community-a11y.mjs:282"}, "properties": {"repobilityId": "7281132cddb2008a", "scanner": "scanner-primary", "fingerprint": "c7387cdacffb1a2b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ae9b62428a81180", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/e2e-security.mjs:41"}, "properties": {"repobilityId": "97fb567927849dcd", "scanner": "scanner-primary", "fingerprint": "7ae9b62428a81180", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a18c90f3756017e8", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/e2e-reputation.mjs:165"}, "properties": {"repobilityId": "5b56dac2dda1575c", "scanner": "scanner-primary", "fingerprint": "a18c90f3756017e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0157ed355802f4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ext-store-screenshots.mjs:213"}, "properties": {"repobilityId": "db6fc8abb05c6cbf", "scanner": "scanner-primary", "fingerprint": "a0157ed355802f4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98b6521c8a758b38", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed-demo-user.ts:31"}, "properties": {"repobilityId": "f1750f8b77b890c9", "scanner": "scanner-primary", "fingerprint": "98b6521c8a758b38", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3abb5790eefbed32", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/e2e-landing.mjs:73"}, "properties": {"repobilityId": "481519726cf8e494", "scanner": "scanner-primary", "fingerprint": "3abb5790eefbed32", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c483e8d97c03a7e", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/e2e-extension.mjs:50"}, "properties": {"repobilityId": "57830f5067241924", "scanner": "scanner-primary", "fingerprint": "6c483e8d97c03a7e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5738dea048d4bbbc", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/migrate-platform.ts:280"}, "properties": {"repobilityId": "a7e1ebb6d56b8abb", "scanner": "scanner-primary", "fingerprint": "5738dea048d4bbbc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6ea1a0d20292916", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/e2e-seg-tax-v2.mjs:69"}, "properties": {"repobilityId": "a136eb876d916eb6", "scanner": "scanner-primary", "fingerprint": "c6ea1a0d20292916", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca934b563eefbdde", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/e2e-trending.mjs:168"}, "properties": {"repobilityId": "d7a4993b84cd7f24", "scanner": "scanner-primary", "fingerprint": "ca934b563eefbdde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8fe8b022297fae78", "level": "none", "message": {"text": "Commented-code block (5 lines) in extension/src/lib/pre-trade-plan.ts:75"}, "properties": {"repobilityId": "3cc0ddc85d0400b8", "scanner": "scanner-primary", "fingerprint": "8fe8b022297fae78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c9ddb718a26ee05", "level": "none", "message": {"text": "Commented-code block (5 lines) in extension/src/brokers/upstox.ts:52"}, "properties": {"repobilityId": "bd8f60f1a15e69e2", "scanner": "scanner-primary", "fingerprint": "1c9ddb718a26ee05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8709d4ee455d5833", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/layout/topbar.tsx:92"}, "properties": {"repobilityId": "2ecb41f8df2f7f89", "scanner": "scanner-primary", "fingerprint": "8709d4ee455d5833", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4a33cf85e02899a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/shared/stat-card.tsx:40"}, "properties": {"repobilityId": "7eaf611718153774", "scanner": "scanner-primary", "fingerprint": "4a33cf85e02899a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-112f4305977f23f2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/rich-content.test.ts:6"}, "properties": {"repobilityId": "aa58039ff2f9eacd", "scanner": "scanner-primary", "fingerprint": "112f4305977f23f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb6392e50fca63bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/providers/db-session-provider.tsx:84"}, "properties": {"repobilityId": "460fb5de931457ec", "scanner": "scanner-primary", "fingerprint": "eb6392e50fca63bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1278e08f7a96b26b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/reports/route.ts:40"}, "properties": {"repobilityId": "13403d5adc119e4d", "scanner": "scanner-primary", "fingerprint": "1278e08f7a96b26b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aeeb0138e0cc386c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/community/post/[id]/page.tsx:7"}, "properties": {"repobilityId": "b12990e9a94e2f2c", "scanner": "scanner-primary", "fingerprint": "aeeb0138e0cc386c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-349ee1032e64383f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/community/s/[symbol]/page.tsx:6"}, "properties": {"repobilityId": "c2497f3af6f7896c", "scanner": "scanner-primary", "fingerprint": "349ee1032e64383f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-619e0f03b030b6de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/use-admin-overview.ts:37"}, "properties": {"repobilityId": "b05c4a30db09de7d", "scanner": "scanner-primary", "fingerprint": "619e0f03b030b6de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c8c08db67730b44c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/submissions-section.tsx:34"}, "properties": {"repobilityId": "dbe75ded1cb287ab", "scanner": "scanner-primary", "fingerprint": "c8c08db67730b44c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22770dd47cf8b766", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/reports-section.tsx:66"}, "properties": {"repobilityId": "259a27eeabb0bebb", "scanner": "scanner-primary", "fingerprint": "22770dd47cf8b766", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1579e779f48797bb", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/options/payoff.ts:188"}, "properties": {"repobilityId": "ddb454ee6c477361", "scanner": "scanner-primary", "fingerprint": "1579e779f48797bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39b8ae03c6db4770", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/backtest/engine/resolve-strike.ts:178"}, "properties": {"repobilityId": "0f88ac96822ea9bd", "scanner": "scanner-primary", "fingerprint": "39b8ae03c6db4770", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d20e2a245012a15e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/montecarlo/simulate.ts:143"}, "properties": {"repobilityId": "79517d51f921dcd3", "scanner": "scanner-primary", "fingerprint": "d20e2a245012a15e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27ee6e367eeff135", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/db/migrations.ts:175"}, "properties": {"repobilityId": "bed5b623de0737ee", "scanner": "scanner-primary", "fingerprint": "27ee6e367eeff135", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-135dc96b92babb7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/db/seed.ts:138"}, "properties": {"repobilityId": "30f9abba39fed724", "scanner": "scanner-primary", "fingerprint": "135dc96b92babb7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a80a0c05dbd290e", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/charges/charges.golden.test.ts:103"}, "properties": {"repobilityId": "c212170fc3eba36e", "scanner": "scanner-primary", "fingerprint": "8a80a0c05dbd290e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c706b83a33520afa", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/lib/charges/charges.ts:136"}, "properties": {"repobilityId": "dc2d7229d40fe528", "scanner": "scanner-primary", "fingerprint": "c706b83a33520afa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b0d188c3e7262ad", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/server/auth.ts:67"}, "properties": {"repobilityId": "ed4b44119592be6d", "scanner": "scanner-primary", "fingerprint": "6b0d188c3e7262ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8d62f6cb32e68b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/server/unfurl.test.ts:134"}, "properties": {"repobilityId": "3ee146c7c0f7c3d8", "scanner": "scanner-primary", "fingerprint": "b8d62f6cb32e68b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2050fbd785b7c62d", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/server/origin-check.ts:18"}, "properties": {"repobilityId": "151c141e4dabbea4", "scanner": "scanner-primary", "fingerprint": "2050fbd785b7c62d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a3533eb486c66f45", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/server/community.ts:778"}, "properties": {"repobilityId": "c49ce4e8b992238b", "scanner": "scanner-primary", "fingerprint": "a3533eb486c66f45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0837f999c774884", "level": "note", "message": {"text": "Legacy-named symbol `p_old` in src/server/new-posts-count.test.ts:29"}, "properties": {"repobilityId": "04ce3774a22dd19d", "scanner": "scanner-primary", "fingerprint": "e0837f999c774884", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9fbc156abd7e8e33", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/backtest/presets/run-decision.ts:97"}, "properties": {"repobilityId": "d2185d5acfa33b01", "scanner": "scanner-primary", "fingerprint": "9fbc156abd7e8e33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f38d5d37425bd62", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/backtest/results/charges-derive.ts:76"}, "properties": {"repobilityId": "c1b79d95afb57fb6", "scanner": "scanner-primary", "fingerprint": "4f38d5d37425bd62", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-450ab1397c188e62", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/features/journal/queries.ts:119"}, "properties": {"repobilityId": "2e633e53c4adf466", "scanner": "scanner-primary", "fingerprint": "450ab1397c188e62", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a836bea962059c66", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/migration/components/mode-switch-wizard.tsx:30"}, "properties": {"repobilityId": "15963eb2a01b5571", "scanner": "scanner-primary", "fingerprint": "a836bea962059c66", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5a39d8a6a2e2084b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/community/api.ts:1408"}, "properties": {"repobilityId": "f5dfb0cd18657402", "scanner": "scanner-primary", "fingerprint": "5a39d8a6a2e2084b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d50f8d67eab237eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/community/unfurl.ts:29"}, "properties": {"repobilityId": "b2e9529b9e45cf7f", "scanner": "scanner-primary", "fingerprint": "d50f8d67eab237eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d108b0020ea76016", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/community/awards.test.ts:204"}, "properties": {"repobilityId": "879758ef89f4c179", "scanner": "scanner-primary", "fingerprint": "d108b0020ea76016", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ae990fcd4b99313", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/community/components/composer.tsx:86"}, "properties": {"repobilityId": "75baa3eb46c9a3ae", "scanner": "scanner-primary", "fingerprint": "3ae990fcd4b99313", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5a4678d821e517d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/workflow/queries.ts:24"}, "properties": {"repobilityId": "4164f20906776187", "scanner": "scanner-primary", "fingerprint": "e5a4678d821e517d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0701ebc914479643", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/features/onboarding/components/onboarding-flow.tsx:57"}, "properties": {"repobilityId": "b228780ca5c33cb4", "scanner": "scanner-primary", "fingerprint": "0701ebc914479643", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec96f6cea0d0551a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/onboarding/components/setup-form.tsx:109"}, "properties": {"repobilityId": "cf0f3b424b2d778c", "scanner": "scanner-primary", "fingerprint": "ec96f6cea0d0551a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b37dbb7100724a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/account/qr.ts:245"}, "properties": {"repobilityId": "e3caae263d43a9aa", "scanner": "scanner-primary", "fingerprint": "0b37dbb7100724a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fef5682d51d942f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/trades/save-statements.ts:33"}, "properties": {"repobilityId": "5aaddccde35ae570", "scanner": "scanner-primary", "fingerprint": "fef5682d51d942f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb6f9b95b38a29ed", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/features/trades/grouping.ts:1"}, "properties": {"repobilityId": "f45ae941765296f3", "scanner": "scanner-primary", "fingerprint": "cb6f9b95b38a29ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6fd34a5b949b7a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/features/trades/csv.ts:220"}, "properties": {"repobilityId": "3e04bb7f11fcbde9", "scanner": "scanner-primary", "fingerprint": "f6fd34a5b949b7a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61d6336e5e8574d1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/trades/utils.ts:42"}, "properties": {"repobilityId": "8eaaabec62e93042", "scanner": "scanner-primary", "fingerprint": "61d6336e5e8574d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec2a0134c05b936a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/features/trades/instrument-parse.ts:204"}, "properties": {"repobilityId": "bb14a710a7866a2e", "scanner": "scanner-primary", "fingerprint": "ec2a0134c05b936a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b184d7e20c855e3b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/features/trades/recompute.ts:88"}, "properties": {"repobilityId": "de556bc0a9a80304", "scanner": "scanner-primary", "fingerprint": "b184d7e20c855e3b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f626b57b4230ac74", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/features/trades/components/quick-add.tsx:29"}, "properties": {"repobilityId": "5c5c5cdbb83238f5", "scanner": "scanner-primary", "fingerprint": "f626b57b4230ac74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70fcae2d13c708b6", "level": "note", "message": {"text": "17 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "f21675bed249619c", "scanner": "scanner-primary", "fingerprint": "70fcae2d13c708b6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}