{"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-9eff0ca45ca9e3d4", "name": "Possibly dead Python function: add_header_footer", "shortDescription": {"text": "Possibly dead Python function: add_header_footer"}, "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-9ebf8441c311bedb", "name": "Possibly dead Python function: severity_badge", "shortDescription": {"text": "Possibly dead Python function: severity_badge"}, "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-b2fd8512ea3b7870", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-5a76835d8804dd0e", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-1ba5845cf567f166", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/page.tsx:19", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/page.tsx: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-2a023cd2effff637", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/twitter-oauth/page.tsx:55", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/twitter-oauth/page.tsx:55"}, "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-f041ee2f73ea86f6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/reddit-agent/page.tsx:58", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/reddit-agent/page.tsx:58"}, "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-faf090623cab9bed", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/wp-mcp/page.tsx:53", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/wp-mcp/page.tsx:53"}, "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-cdff31076cc418a7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/jenkins-chatbot/page.tsx:55", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/jenkins-chatbot/page.tsx:55"}, "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-bdd92af1b4d5ac2f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/jenkins-mcp/page.tsx:55", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/jenkins-mcp/page.tsx:55"}, "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-7735dde0d3cfe317", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/aws-ec2-agent/page.tsx:58", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/aws-ec2-agent/page.tsx:58"}, "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-bc3752710465e5c0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/method-crm-mcp/page.tsx:55", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/method-crm-mcp/page.tsx:55"}, "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-134b5faad657b69d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/social-media-auto-poster/page.tsx:55", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/social-media-auto-poster/page.tsx:55"}, "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-08c649de8b47dd0a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/calculator-server/page.tsx:55", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/calculator-server/page.tsx:55"}, "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-071e7360d5b89082", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/services/page.tsx:123", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/services/page.tsx:123"}, "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-31f78f84b3830f92", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/page.tsx:44", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/page.tsx:44"}, "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-e4f6b459abe0a2c1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-managed-agents/page.tsx:228", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-managed-agents/page.tsx:228"}, "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-ef46d1996dde2b06", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-fable-5-model-routing/page.tsx:84", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-fable-5-model-routing/page.tsx:84"}, "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-2d93c2dd7e830e60", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-security-review-github-actions/page.tsx:2", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-security-review-github-actions/page.tsx:282"}, "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-601232cad5a7011d", "name": "Stray `console.log` in TS/JS \u2014 src/app/blog/claude-code-cost-tracking/page.tsx:728", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/blog/claude-code-cost-tracking/page.tsx:728"}, "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-e86381f946d936fa", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-cost-tracking/page.tsx:85", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-cost-tracking/page.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-38a45e315afc67fe", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/hardening-ai-agents-cicd-prompt-injection/page.tsx:22", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/hardening-ai-agents-cicd-prompt-injection/page.tsx:228"}, "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-5737d75035ebe69f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-md-guide/page.tsx:251", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-md-guide/page.tsx:251"}, "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-b20149873aa710df", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-mythos-preview/page.tsx:77", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-mythos-preview/page.tsx:77"}, "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-ebfaa0d3013cb87e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/ant-cli-getting-started/page.tsx:275", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/ant-cli-getting-started/page.tsx:275"}, "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-2a0c090b37c268db", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/method-crm-mcp/page.tsx:40", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/method-crm-mcp/page.tsx:40"}, "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-38f42adaabc9606b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/ultrareview-ci-cd-pipelines/page.tsx:230", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/ultrareview-ci-cd-pipelines/page.tsx:230"}, "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-55cee8af2ac90224", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/codex-security-github-setup/page.tsx:78", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/codex-security-github-setup/page.tsx:78"}, "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-f6f678592e22e19f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/gemini-cli-to-antigravity-cli-guide/page.tsx:313", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/gemini-cli-to-antigravity-cli-guide/page.tsx:313"}, "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-578c2e6fce3089d5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/gemma-4-models-guide/page.tsx:83", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/gemma-4-models-guide/page.tsx:83"}, "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-ec06c835d56cba10", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/clawdbot-guide/page.tsx:100", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/clawdbot-guide/page.tsx:100"}, "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-8831f763017c98ab", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/regression-proofing-claude-code-workflows/page.tsx:24", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/regression-proofing-claude-code-workflows/page.tsx:246"}, "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-f51c6f18332480d7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx:299", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx:299"}, "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-e59c5e484f0ea97c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/mcp-code-execution-pattern/page.tsx:226", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/mcp-code-execution-pattern/page.tsx:226"}, "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-14a8823ee98bc3b3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/persistent-memory-ai-coding-agents/page.tsx:83", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/persistent-memory-ai-coding-agents/page.tsx:83"}, "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-bf5c3e969ba62197", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-dynamic-workflows-guide/page.tsx:82", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-dynamic-workflows-guide/page.tsx:82"}, "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-f39495911ca86ea8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-managed-agents-outcomes/page.tsx:229", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-managed-agents-outcomes/page.tsx:229"}, "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-54d9a476395bea34", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/qwen-code-getting-started/page.tsx:265", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/qwen-code-getting-started/page.tsx:265"}, "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-5f8b995e940bd55c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:83", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:83"}, "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-ecec854224bbb209", "name": "Insecure pattern 'dangerous_innerhtml' in CLAUDE.md:198", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in CLAUDE.md:198"}, "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-d1c852fd7907f2dd", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/main.js:28", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/main.js:28"}, "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-e077b09109e3ceb3", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/page.tsx:19", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/page.tsx:19"}, "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-30941763a28d280d", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/twitter-oauth/page.tsx:55", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/twitter-oauth/page.tsx:55"}, "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-8dd8df7e43174917", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/reddit-agent/page.tsx:58", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/reddit-agent/page.tsx:58"}, "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-6cc2ddf54b834082", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/wp-mcp/page.tsx:53", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/wp-mcp/page.tsx:53"}, "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-ec3eef1296408c77", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/jenkins-chatbot/page.tsx:55", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/jenkins-chatbot/page.tsx:55"}, "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-71009ed67ccb18fd", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/jenkins-mcp/page.tsx:55", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/jenkins-mcp/page.tsx:55"}, "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-8b23a58d846dc3b9", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/aws-ec2-agent/page.tsx:58", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/aws-ec2-agent/page.tsx:58"}, "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-654b9d74a896d820", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/method-crm-mcp/page.tsx:55", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/method-crm-mcp/page.tsx:55"}, "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-05cfd761bc80fde3", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/social-media-auto-poster/page.tsx:55", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/social-media-auto-poster/page.tsx:55"}, "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-086c0d9e22e8cff4", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/calculator-server/page.tsx:55", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/calculator-server/page.tsx:55"}, "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-43b5e986c9bc5ff5", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/services/page.tsx:123", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/services/page.tsx:123"}, "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-51c10555082e0db4", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/page.tsx:44", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/page.tsx:44"}, "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-bcc0df0b0664d91e", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-managed-agents/page.tsx:228", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-managed-agents/page.tsx:228"}, "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-f2190f6ebd2552d3", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-fable-5-model-routing/page.tsx:84", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-fable-5-model-routing/page.tsx:84"}, "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-8943b00eef26fcb5", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-security-review-github-actions/page.tsx:282", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-security-review-github-actions/page.tsx:282"}, "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-dd409de1b414c874", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-cost-tracking/page.tsx:85", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-cost-tracking/page.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-ad53691495d7fd8d", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/hardening-ai-agents-cicd-prompt-injection/page.tsx:228", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/hardening-ai-agents-cicd-prompt-injection/page.tsx:228"}, "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-451845f6355247ec", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-md-guide/page.tsx:251", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-md-guide/page.tsx:251"}, "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-9367180d669616ea", "name": "Possible secret in src/app/blog/ant-cli-getting-started/page.tsx", "shortDescription": {"text": "Possible secret in src/app/blog/ant-cli-getting-started/page.tsx"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-8c63a40b372e2174", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/ant-cli-getting-started/page.tsx:275", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/ant-cli-getting-started/page.tsx:275"}, "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-3881b2eda75b1773", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/method-crm-mcp/page.tsx:40", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/method-crm-mcp/page.tsx:40"}, "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-6fdc81d2b8c5c5d0", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/ultrareview-ci-cd-pipelines/page.tsx:230", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/ultrareview-ci-cd-pipelines/page.tsx:230"}, "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-bd9bb05bc864cdda", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/gemini-cli-to-antigravity-cli-guide/page.tsx:313", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/gemini-cli-to-antigravity-cli-guide/page.tsx:313"}, "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-30c6a656f1161e6c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/clawdbot-guide/page.tsx:100", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/clawdbot-guide/page.tsx:100"}, "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-46fda064d5ade13c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/regression-proofing-claude-code-workflows/page.tsx:246", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/regression-proofing-claude-code-workflows/page.tsx:246"}, "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-114f4f61ddbcac5f", "name": "Possible secret in src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx", "shortDescription": {"text": "Possible secret in src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-725c5d05142c2089", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx:299", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx:299"}, "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-db7b374d0f5bbf27", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/mcp-code-execution-pattern/page.tsx:226", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/mcp-code-execution-pattern/page.tsx:226"}, "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-f7f37715940a02ab", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/persistent-memory-ai-coding-agents/page.tsx:83", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/persistent-memory-ai-coding-agents/page.tsx:83"}, "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-7202b8cbd4c06dc0", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-dynamic-workflows-guide/page.tsx:82", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-dynamic-workflows-guide/page.tsx:82"}, "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-a214683883523b4c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-managed-agents-outcomes/page.tsx:229", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-managed-agents-outcomes/page.tsx:229"}, "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-ce3a681a5a0f9d05", "name": "Possible secret in src/app/blog/qwen-code-getting-started/page.tsx", "shortDescription": {"text": "Possible secret in src/app/blog/qwen-code-getting-started/page.tsx"}, "fullDescription": {"text": "Detected pattern matching openai_or_anthropic_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-bb7471535fc92ed9", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/qwen-code-getting-started/page.tsx:265", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/qwen-code-getting-started/page.tsx:265"}, "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-6f38a33241735455", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:83", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:83"}, "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-701b64465b275e96", "name": "Very large file: src/app/blog/claude-code-security-review-github-actions/page.tsx (1257 lines)", "shortDescription": {"text": "Very large file: src/app/blog/claude-code-security-review-github-actions/page.tsx (1257 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-9cefd63092a37877", "name": "Very large file: src/app/blog/claude-code-cost-tracking/page.tsx (1125 lines)", "shortDescription": {"text": "Very large file: src/app/blog/claude-code-cost-tracking/page.tsx (1125 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-74cec1ba146d2810", "name": "Very large file: src/app/blog/hardening-ai-agents-cicd-prompt-injection/page.tsx (1286 lines)", "shortDescription": {"text": "Very large file: src/app/blog/hardening-ai-agents-cicd-prompt-injection/page.tsx (1286 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-407f7b96f9f3c276", "name": "Very large file: src/app/blog/ant-cli-getting-started/page.tsx (1215 lines)", "shortDescription": {"text": "Very large file: src/app/blog/ant-cli-getting-started/page.tsx (1215 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-f01990e9f702e274", "name": "Very large file: src/app/blog/ultrareview-ci-cd-pipelines/page.tsx (1390 lines)", "shortDescription": {"text": "Very large file: src/app/blog/ultrareview-ci-cd-pipelines/page.tsx (1390 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-7391e0761ac19f51", "name": "Very large file: src/app/blog/codex-security-github-setup/page.tsx (1434 lines)", "shortDescription": {"text": "Very large file: src/app/blog/codex-security-github-setup/page.tsx (1434 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-c3793dc24f45a0af", "name": "Very large file: src/app/blog/gemini-cli-to-antigravity-cli-guide/page.tsx (1391 lines)", "shortDescription": {"text": "Very large file: src/app/blog/gemini-cli-to-antigravity-cli-guide/page.tsx (1391 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-274d6e0a1db31bc3", "name": "Very large file: src/app/blog/gemma-4-models-guide/page.tsx (1304 lines)", "shortDescription": {"text": "Very large file: src/app/blog/gemma-4-models-guide/page.tsx (1304 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-5d515559a4925ba2", "name": "Very large file: src/app/blog/clawdbot-guide/page.tsx (1666 lines)", "shortDescription": {"text": "Very large file: src/app/blog/clawdbot-guide/page.tsx (1666 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-24c5281b1daea4ea", "name": "Very large file: src/app/blog/regression-proofing-claude-code-workflows/page.tsx (1394 lines)", "shortDescription": {"text": "Very large file: src/app/blog/regression-proofing-claude-code-workflows/page.tsx (1394 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-6e5102b63b285aa6", "name": "Very large file: src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx (1511 lines)", "shortDescription": {"text": "Very large file: src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx (1511 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-e9a2228c4eb5c7bb", "name": "Very large file: src/app/blog/mcp-code-execution-pattern/page.tsx (1164 lines)", "shortDescription": {"text": "Very large file: src/app/blog/mcp-code-execution-pattern/page.tsx (1164 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-414e981181249b6c", "name": "Very large file: src/app/blog/persistent-memory-ai-coding-agents/page.tsx (1035 lines)", "shortDescription": {"text": "Very large file: src/app/blog/persistent-memory-ai-coding-agents/page.tsx (1035 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-61a6ee54d8fe3746", "name": "Very large file: src/app/blog/claude-code-dynamic-workflows-guide/page.tsx (988 lines)", "shortDescription": {"text": "Very large file: src/app/blog/claude-code-dynamic-workflows-guide/page.tsx (988 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-79d4fa8c30154a55", "name": "Very large file: src/app/blog/claude-managed-agents-outcomes/page.tsx (1209 lines)", "shortDescription": {"text": "Very large file: src/app/blog/claude-managed-agents-outcomes/page.tsx (1209 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 109 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 173 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 26 placeholder/mock markers across 9 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d68d8e41732bbe9c", "name": "Agent instruction contains unpinned remote install: .claude/progress.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: .claude/progress.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3fe97505b08346cf", "name": "Agent authority lacks a verifier contract: .claude/content-pipeline.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/content-pipeline.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-91e8d20ac26008c2", "name": "Agent instruction/config may expose a secret: .claude/blog-guidelines.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/blog-guidelines.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75d81b0dc02094cd", "name": "Agent authority lacks a verifier contract: .claude/blog-guidelines.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/blog-guidelines.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-36239a33134bcbf2", "name": "Agent authority lacks a verifier contract: .claude/claude.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/claude.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dd90f230acbddc4e", "name": "Agent instruction/config may expose a secret: .claude/content-briefs/ant-cli-getting-started.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/content-briefs/ant-cli-getting-started.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41776ab466d4a7ea", "name": "Agent instruction contains unpinned remote install: .claude/content-briefs/gemini-cli-to-antigravity-cli-guide.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: .claude/content-briefs/gemini-cli-to-antigravity-cli-guide.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce66dea0750f1797", "name": "Agent authority lacks a verifier contract: .claude/content-briefs/claude-managed-agents-outcomes.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/content-briefs/claude-managed-agents-outcomes.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aaa30fea69eed42e", "name": "Agent instruction/config may expose a secret: .claude/content-briefs/claude-managed-agents.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/content-briefs/claude-managed-agents.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3f7dbc1b3b35ebe", "name": "Agent instruction contains unpinned remote install: .claude/content-briefs/ultrareview-ci-cd-pipelines.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: .claude/content-briefs/ultrareview-ci-cd-pipelines.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0bfb19f2bb7a3d84", "name": "Agent instruction/config may expose a secret: .claude/content-briefs/mcp-code-execution-pattern.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/content-briefs/mcp-code-execution-pattern.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7d7d9e1948e5f91", "name": "Agent instruction/config may expose a secret: .claude/content-briefs/regression-proofing-claude-code-workflows.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/content-briefs/regression-proofing-claude-code-workflows.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-288f013dd2eb1aff", "name": "Agent instruction contains unpinned remote install: .claude/content-briefs/regression-proofing-claude-code-workflows.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: .claude/content-briefs/regression-proofing-claude-code-workflows.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2df835209d4d96b5", "name": "Agent authority lacks a verifier contract: .claude/content-briefs/gemma-4-models-guide.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/content-briefs/gemma-4-models-guide.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-958118808b966709", "name": "Agent authority lacks a verifier contract: .claude/content-briefs/claude-code-cost-tracking.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/content-briefs/claude-code-cost-tracking.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e3380b15ecf6bd9", "name": "Agent authority lacks a verifier contract: .claude/content-briefs/qwen-code-getting-started.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/content-briefs/qwen-code-getting-started.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-56111689a0765486", "name": "Agent instruction contains unpinned remote install: .claude/content-briefs/qwen-code-getting-started.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: .claude/content-briefs/qwen-code-getting-started.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-356515cd15ae1eeb", "name": "Agent instruction contains unpinned remote install: .claude/content-briefs/persistent-memory-ai-coding-agents.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: .claude/content-briefs/persistent-memory-ai-coding-agents.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c992e1059c7d4ea1", "name": "Agent authority lacks a verifier contract: .claude/commands/research-topic.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/research-topic.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a9443c36627754a4", "name": "Commented-code block (9 lines) in next.config.ts:129", "shortDescription": {"text": "Commented-code block (9 lines) in next.config.ts:129"}, "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-0cf9c8f66a1abb1b", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/linkedin_authorize.py:94", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/linkedin_authorize.py:94"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/search_console_report.py:get_service, scripts/request_indexing.py:get_service\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24407"}, "properties": {"repository": "avisangle/avisangle.github.io", "repoUrl": "https://github.com/avisangle/avisangle.github.io", "branch": "main"}, "results": [{"ruleId": "scanner-9eff0ca45ca9e3d4", "level": "note", "message": {"text": "Possibly dead Python function: add_header_footer"}, "properties": {"repobilityId": "7610b7e366e3a554", "scanner": "scanner-primary", "fingerprint": "9eff0ca45ca9e3d4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "SEO_Indexing_Analysis.py:116"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ebf8441c311bedb", "level": "note", "message": {"text": "Possibly dead Python function: severity_badge"}, "properties": {"repobilityId": "8ac1a4d9d01cf6f4", "scanner": "scanner-primary", "fingerprint": "9ebf8441c311bedb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "SEO_Indexing_Analysis.py:134"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b2fd8512ea3b7870", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "b2fd8512ea3b7870", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/linkedin_authorize.py:62"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5a76835d8804dd0e", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "5a76835d8804dd0e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/linkedin_authorize.py:65"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ba5845cf567f166", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/page.tsx:19"}, "properties": {"repobilityId": "4d4ab3e03315f684", "scanner": "scanner-primary", "fingerprint": "1ba5845cf567f166", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2a023cd2effff637", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/twitter-oauth/page.tsx:55"}, "properties": {"repobilityId": "41898057e45424f3", "scanner": "scanner-primary", "fingerprint": "2a023cd2effff637", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f041ee2f73ea86f6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/reddit-agent/page.tsx:58"}, "properties": {"repobilityId": "c4b80dc5934f8f44", "scanner": "scanner-primary", "fingerprint": "f041ee2f73ea86f6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-faf090623cab9bed", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/wp-mcp/page.tsx:53"}, "properties": {"repobilityId": "6cbeda7d3611af08", "scanner": "scanner-primary", "fingerprint": "faf090623cab9bed", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-cdff31076cc418a7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/jenkins-chatbot/page.tsx:55"}, "properties": {"repobilityId": "67700164a9366703", "scanner": "scanner-primary", "fingerprint": "cdff31076cc418a7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bdd92af1b4d5ac2f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/jenkins-mcp/page.tsx:55"}, "properties": {"repobilityId": "1413265a16295b9a", "scanner": "scanner-primary", "fingerprint": "bdd92af1b4d5ac2f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7735dde0d3cfe317", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/aws-ec2-agent/page.tsx:58"}, "properties": {"repobilityId": "82e2c39044c8dd1d", "scanner": "scanner-primary", "fingerprint": "7735dde0d3cfe317", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bc3752710465e5c0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/method-crm-mcp/page.tsx:55"}, "properties": {"repobilityId": "ccff81bc23354c1b", "scanner": "scanner-primary", "fingerprint": "bc3752710465e5c0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-134b5faad657b69d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/social-media-auto-poster/page.tsx:55"}, "properties": {"repobilityId": "14f36838fe96ec86", "scanner": "scanner-primary", "fingerprint": "134b5faad657b69d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-08c649de8b47dd0a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/projects/calculator-server/page.tsx:55"}, "properties": {"repobilityId": "02839ea7caff3997", "scanner": "scanner-primary", "fingerprint": "08c649de8b47dd0a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-071e7360d5b89082", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/services/page.tsx:123"}, "properties": {"repobilityId": "3a765d4765fa1597", "scanner": "scanner-primary", "fingerprint": "071e7360d5b89082", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-31f78f84b3830f92", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/page.tsx:44"}, "properties": {"repobilityId": "41b4d8ab3226bd10", "scanner": "scanner-primary", "fingerprint": "31f78f84b3830f92", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e4f6b459abe0a2c1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-managed-agents/page.tsx:228"}, "properties": {"repobilityId": "cadcd2358a425477", "scanner": "scanner-primary", "fingerprint": "e4f6b459abe0a2c1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ef46d1996dde2b06", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-fable-5-model-routing/page.tsx:84"}, "properties": {"repobilityId": "1790f76e6c91e817", "scanner": "scanner-primary", "fingerprint": "ef46d1996dde2b06", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2d93c2dd7e830e60", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-security-review-github-actions/page.tsx:282"}, "properties": {"repobilityId": "37c0e4f728441fd3", "scanner": "scanner-primary", "fingerprint": "2d93c2dd7e830e60", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-601232cad5a7011d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/blog/claude-code-cost-tracking/page.tsx:728"}, "properties": {"repobilityId": "d30b64afc296f97c", "scanner": "scanner-primary", "fingerprint": "601232cad5a7011d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e86381f946d936fa", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-cost-tracking/page.tsx:85"}, "properties": {"repobilityId": "770250d2bf5fd1c0", "scanner": "scanner-primary", "fingerprint": "e86381f946d936fa", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-38a45e315afc67fe", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/hardening-ai-agents-cicd-prompt-injection/page.tsx:228"}, "properties": {"repobilityId": "c306541c971010da", "scanner": "scanner-primary", "fingerprint": "38a45e315afc67fe", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5737d75035ebe69f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-md-guide/page.tsx:251"}, "properties": {"repobilityId": "9198f8590c33298a", "scanner": "scanner-primary", "fingerprint": "5737d75035ebe69f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b20149873aa710df", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-mythos-preview/page.tsx:77"}, "properties": {"repobilityId": "8f9750a03c2ec80e", "scanner": "scanner-primary", "fingerprint": "b20149873aa710df", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ebfaa0d3013cb87e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/ant-cli-getting-started/page.tsx:275"}, "properties": {"repobilityId": "166a1801bcb7d241", "scanner": "scanner-primary", "fingerprint": "ebfaa0d3013cb87e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2a0c090b37c268db", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/method-crm-mcp/page.tsx:40"}, "properties": {"repobilityId": "32a9da5cc6fb8535", "scanner": "scanner-primary", "fingerprint": "2a0c090b37c268db", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-38f42adaabc9606b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/ultrareview-ci-cd-pipelines/page.tsx:230"}, "properties": {"repobilityId": "5a2dd295314f0eb7", "scanner": "scanner-primary", "fingerprint": "38f42adaabc9606b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-55cee8af2ac90224", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/codex-security-github-setup/page.tsx:78"}, "properties": {"repobilityId": "41e09b0964c92578", "scanner": "scanner-primary", "fingerprint": "55cee8af2ac90224", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f6f678592e22e19f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/gemini-cli-to-antigravity-cli-guide/page.tsx:313"}, "properties": {"repobilityId": "395b51b0b2927c18", "scanner": "scanner-primary", "fingerprint": "f6f678592e22e19f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-578c2e6fce3089d5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/gemma-4-models-guide/page.tsx:83"}, "properties": {"repobilityId": "8fdb82b42f98c22d", "scanner": "scanner-primary", "fingerprint": "578c2e6fce3089d5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ec06c835d56cba10", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/clawdbot-guide/page.tsx:100"}, "properties": {"repobilityId": "6e36411cb0215dd1", "scanner": "scanner-primary", "fingerprint": "ec06c835d56cba10", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8831f763017c98ab", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/regression-proofing-claude-code-workflows/page.tsx:246"}, "properties": {"repobilityId": "70ab94b467288bb4", "scanner": "scanner-primary", "fingerprint": "8831f763017c98ab", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f51c6f18332480d7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx:299"}, "properties": {"repobilityId": "bdd57f0c579df698", "scanner": "scanner-primary", "fingerprint": "f51c6f18332480d7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e59c5e484f0ea97c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/mcp-code-execution-pattern/page.tsx:226"}, "properties": {"repobilityId": "a97cd6613207b87c", "scanner": "scanner-primary", "fingerprint": "e59c5e484f0ea97c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-14a8823ee98bc3b3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/persistent-memory-ai-coding-agents/page.tsx:83"}, "properties": {"repobilityId": "da5be424b688cc5a", "scanner": "scanner-primary", "fingerprint": "14a8823ee98bc3b3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bf5c3e969ba62197", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-code-dynamic-workflows-guide/page.tsx:82"}, "properties": {"repobilityId": "70a424607221feb0", "scanner": "scanner-primary", "fingerprint": "bf5c3e969ba62197", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f39495911ca86ea8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/claude-managed-agents-outcomes/page.tsx:229"}, "properties": {"repobilityId": "922a12e5c1c348d0", "scanner": "scanner-primary", "fingerprint": "f39495911ca86ea8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-54d9a476395bea34", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/qwen-code-getting-started/page.tsx:265"}, "properties": {"repobilityId": "9ef721bfd1e98585", "scanner": "scanner-primary", "fingerprint": "54d9a476395bea34", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5f8b995e940bd55c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:83"}, "properties": {"repobilityId": "b8c68f17a4018107", "scanner": "scanner-primary", "fingerprint": "5f8b995e940bd55c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ecec854224bbb209", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in CLAUDE.md:198"}, "properties": {"repobilityId": "1d599077e226eef8", "scanner": "scanner-primary", "fingerprint": "ecec854224bbb209", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 198}}}]}, {"ruleId": "scanner-d1c852fd7907f2dd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/main.js:28"}, "properties": {"repobilityId": "3b23e0cd41b5e603", "scanner": "scanner-primary", "fingerprint": "d1c852fd7907f2dd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/main.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-e077b09109e3ceb3", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/page.tsx:19"}, "properties": {"repobilityId": "88fd235b712bda65", "scanner": "scanner-primary", "fingerprint": "e077b09109e3ceb3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/page.tsx"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-30941763a28d280d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/twitter-oauth/page.tsx:55"}, "properties": {"repobilityId": "ab9a21266e52c155", "scanner": "scanner-primary", "fingerprint": "30941763a28d280d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/projects/twitter-oauth/page.tsx"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-8dd8df7e43174917", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/reddit-agent/page.tsx:58"}, "properties": {"repobilityId": "5cfef87a05c8ab10", "scanner": "scanner-primary", "fingerprint": "8dd8df7e43174917", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/projects/reddit-agent/page.tsx"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-6cc2ddf54b834082", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/wp-mcp/page.tsx:53"}, "properties": {"repobilityId": "a80902a7d6b7956b", "scanner": "scanner-primary", "fingerprint": "6cc2ddf54b834082", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/projects/wp-mcp/page.tsx"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-ec3eef1296408c77", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/jenkins-chatbot/page.tsx:55"}, "properties": {"repobilityId": "dc290a8622892edc", "scanner": "scanner-primary", "fingerprint": "ec3eef1296408c77", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/projects/jenkins-chatbot/page.tsx"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-71009ed67ccb18fd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/jenkins-mcp/page.tsx:55"}, "properties": {"repobilityId": "f6361b57ca025b08", "scanner": "scanner-primary", "fingerprint": "71009ed67ccb18fd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/projects/jenkins-mcp/page.tsx"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-8b23a58d846dc3b9", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/aws-ec2-agent/page.tsx:58"}, "properties": {"repobilityId": "7bae879e04ab4f5a", "scanner": "scanner-primary", "fingerprint": "8b23a58d846dc3b9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/projects/aws-ec2-agent/page.tsx"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-654b9d74a896d820", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/method-crm-mcp/page.tsx:55"}, "properties": {"repobilityId": "ec2adda332703f89", "scanner": "scanner-primary", "fingerprint": "654b9d74a896d820", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/projects/method-crm-mcp/page.tsx"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-05cfd761bc80fde3", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/social-media-auto-poster/page.tsx:55"}, "properties": {"repobilityId": "bf7c657e1e2874cb", "scanner": "scanner-primary", "fingerprint": "05cfd761bc80fde3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/projects/social-media-auto-poster/page.tsx"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-086c0d9e22e8cff4", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/projects/calculator-server/page.tsx:55"}, "properties": {"repobilityId": "d0860454a98a2a7b", "scanner": "scanner-primary", "fingerprint": "086c0d9e22e8cff4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/projects/calculator-server/page.tsx"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-43b5e986c9bc5ff5", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/services/page.tsx:123"}, "properties": {"repobilityId": "dbe815eb2acdb233", "scanner": "scanner-primary", "fingerprint": "43b5e986c9bc5ff5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/services/page.tsx"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-51c10555082e0db4", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/page.tsx:44"}, "properties": {"repobilityId": "0f7434f401785d28", "scanner": "scanner-primary", "fingerprint": "51c10555082e0db4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/page.tsx"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-bcc0df0b0664d91e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-managed-agents/page.tsx:228"}, "properties": {"repobilityId": "5500e69b30d70ab8", "scanner": "scanner-primary", "fingerprint": "bcc0df0b0664d91e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/claude-managed-agents/page.tsx"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-f2190f6ebd2552d3", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-fable-5-model-routing/page.tsx:84"}, "properties": {"repobilityId": "ad719c3c59297a58", "scanner": "scanner-primary", "fingerprint": "f2190f6ebd2552d3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/claude-code-fable-5-model-routing/page.tsx"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-8943b00eef26fcb5", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-security-review-github-actions/page.tsx:282"}, "properties": {"repobilityId": "2ac16e71b492fa14", "scanner": "scanner-primary", "fingerprint": "8943b00eef26fcb5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/claude-code-security-review-github-actions/page.tsx"}, "region": {"startLine": 282}}}]}, {"ruleId": "scanner-dd409de1b414c874", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-cost-tracking/page.tsx:85"}, "properties": {"repobilityId": "e46f183b44d8506c", "scanner": "scanner-primary", "fingerprint": "dd409de1b414c874", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/claude-code-cost-tracking/page.tsx"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-ad53691495d7fd8d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/hardening-ai-agents-cicd-prompt-injection/page.tsx:228"}, "properties": {"repobilityId": "b521481bf169fe06", "scanner": "scanner-primary", "fingerprint": "ad53691495d7fd8d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/hardening-ai-agents-cicd-prompt-injection/page.tsx"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-451845f6355247ec", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-md-guide/page.tsx:251"}, "properties": {"repobilityId": "5072cbbca322ccd5", "scanner": "scanner-primary", "fingerprint": "451845f6355247ec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/claude-md-guide/page.tsx"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-9367180d669616ea", "level": "error", "message": {"text": "Possible secret in src/app/blog/ant-cli-getting-started/page.tsx"}, "properties": {"repobilityId": "c2885e6b73418c8b", "scanner": "scanner-primary", "fingerprint": "9367180d669616ea", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/ant-cli-getting-started/page.tsx"}, "region": {"startLine": 511}}}]}, {"ruleId": "scanner-8c63a40b372e2174", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/ant-cli-getting-started/page.tsx:275"}, "properties": {"repobilityId": "78597ddeb94a7568", "scanner": "scanner-primary", "fingerprint": "8c63a40b372e2174", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/ant-cli-getting-started/page.tsx"}, "region": {"startLine": 275}}}]}, {"ruleId": "scanner-3881b2eda75b1773", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/method-crm-mcp/page.tsx:40"}, "properties": {"repobilityId": "0dbac024ad91a0c8", "scanner": "scanner-primary", "fingerprint": "3881b2eda75b1773", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/method-crm-mcp/page.tsx"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-6fdc81d2b8c5c5d0", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/ultrareview-ci-cd-pipelines/page.tsx:230"}, "properties": {"repobilityId": "18c37b845b05ac60", "scanner": "scanner-primary", "fingerprint": "6fdc81d2b8c5c5d0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/ultrareview-ci-cd-pipelines/page.tsx"}, "region": {"startLine": 230}}}]}, {"ruleId": "scanner-bd9bb05bc864cdda", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/gemini-cli-to-antigravity-cli-guide/page.tsx:313"}, "properties": {"repobilityId": "d336bdcd9bf252c3", "scanner": "scanner-primary", "fingerprint": "bd9bb05bc864cdda", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/gemini-cli-to-antigravity-cli-guide/page.tsx"}, "region": {"startLine": 313}}}]}, {"ruleId": "scanner-30c6a656f1161e6c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/clawdbot-guide/page.tsx:100"}, "properties": {"repobilityId": "dd9e56a5377c8361", "scanner": "scanner-primary", "fingerprint": "30c6a656f1161e6c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/clawdbot-guide/page.tsx"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-46fda064d5ade13c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/regression-proofing-claude-code-workflows/page.tsx:246"}, "properties": {"repobilityId": "b4b1af59a75eb540", "scanner": "scanner-primary", "fingerprint": "46fda064d5ade13c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/regression-proofing-claude-code-workflows/page.tsx"}, "region": {"startLine": 246}}}]}, {"ruleId": "scanner-114f4f61ddbcac5f", "level": "error", "message": {"text": "Possible secret in src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx"}, "properties": {"repobilityId": "fe6a49cb7eba64b3", "scanner": "scanner-primary", "fingerprint": "114f4f61ddbcac5f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx"}, "region": {"startLine": 1074}}}]}, {"ruleId": "scanner-725c5d05142c2089", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx:299"}, "properties": {"repobilityId": "30f9e3d5147c1146", "scanner": "scanner-primary", "fingerprint": "725c5d05142c2089", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx"}, "region": {"startLine": 299}}}]}, {"ruleId": "scanner-db7b374d0f5bbf27", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/mcp-code-execution-pattern/page.tsx:226"}, "properties": {"repobilityId": "3e8de5feb6f46e91", "scanner": "scanner-primary", "fingerprint": "db7b374d0f5bbf27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/mcp-code-execution-pattern/page.tsx"}, "region": {"startLine": 226}}}]}, {"ruleId": "scanner-f7f37715940a02ab", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/persistent-memory-ai-coding-agents/page.tsx:83"}, "properties": {"repobilityId": "04b2ff3d743682c0", "scanner": "scanner-primary", "fingerprint": "f7f37715940a02ab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/persistent-memory-ai-coding-agents/page.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-7202b8cbd4c06dc0", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-code-dynamic-workflows-guide/page.tsx:82"}, "properties": {"repobilityId": "a44508e167b9779c", "scanner": "scanner-primary", "fingerprint": "7202b8cbd4c06dc0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/claude-code-dynamic-workflows-guide/page.tsx"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-a214683883523b4c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/claude-managed-agents-outcomes/page.tsx:229"}, "properties": {"repobilityId": "fa26177c8dcfda26", "scanner": "scanner-primary", "fingerprint": "a214683883523b4c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/claude-managed-agents-outcomes/page.tsx"}, "region": {"startLine": 229}}}]}, {"ruleId": "scanner-ce3a681a5a0f9d05", "level": "error", "message": {"text": "Possible secret in src/app/blog/qwen-code-getting-started/page.tsx"}, "properties": {"repobilityId": "8169ffe1d0f22d22", "scanner": "scanner-primary", "fingerprint": "ce3a681a5a0f9d05", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/qwen-code-getting-started/page.tsx"}, "region": {"startLine": 467}}}]}, {"ruleId": "scanner-bb7471535fc92ed9", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/qwen-code-getting-started/page.tsx:265"}, "properties": {"repobilityId": "00891c88592b5fac", "scanner": "scanner-primary", "fingerprint": "bb7471535fc92ed9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/qwen-code-getting-started/page.tsx"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-6f38a33241735455", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:83"}, "properties": {"repobilityId": "33f10636e53b4298", "scanner": "scanner-primary", "fingerprint": "6f38a33241735455", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ui/chart.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-701b64465b275e96", "level": "note", "message": {"text": "Very large file: src/app/blog/claude-code-security-review-github-actions/page.tsx (1257 lines)"}, "properties": {"repobilityId": "1a151ff1b372e60b", "scanner": "scanner-primary", "fingerprint": "701b64465b275e96", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9cefd63092a37877", "level": "note", "message": {"text": "Very large file: src/app/blog/claude-code-cost-tracking/page.tsx (1125 lines)"}, "properties": {"repobilityId": "44c80cdd006fcdfb", "scanner": "scanner-primary", "fingerprint": "9cefd63092a37877", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-74cec1ba146d2810", "level": "note", "message": {"text": "Very large file: src/app/blog/hardening-ai-agents-cicd-prompt-injection/page.tsx (1286 lines)"}, "properties": {"repobilityId": "7cdcb4e7ace95fdf", "scanner": "scanner-primary", "fingerprint": "74cec1ba146d2810", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-407f7b96f9f3c276", "level": "note", "message": {"text": "Very large file: src/app/blog/ant-cli-getting-started/page.tsx (1215 lines)"}, "properties": {"repobilityId": "76c8636991ff8b5c", "scanner": "scanner-primary", "fingerprint": "407f7b96f9f3c276", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f01990e9f702e274", "level": "note", "message": {"text": "Very large file: src/app/blog/ultrareview-ci-cd-pipelines/page.tsx (1390 lines)"}, "properties": {"repobilityId": "fe8bc29c0990e938", "scanner": "scanner-primary", "fingerprint": "f01990e9f702e274", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7391e0761ac19f51", "level": "note", "message": {"text": "Very large file: src/app/blog/codex-security-github-setup/page.tsx (1434 lines)"}, "properties": {"repobilityId": "70499c56464d1be0", "scanner": "scanner-primary", "fingerprint": "7391e0761ac19f51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c3793dc24f45a0af", "level": "note", "message": {"text": "Very large file: src/app/blog/gemini-cli-to-antigravity-cli-guide/page.tsx (1391 lines)"}, "properties": {"repobilityId": "8fe5c9311a0ecbb1", "scanner": "scanner-primary", "fingerprint": "c3793dc24f45a0af", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-274d6e0a1db31bc3", "level": "note", "message": {"text": "Very large file: src/app/blog/gemma-4-models-guide/page.tsx (1304 lines)"}, "properties": {"repobilityId": "af70f2b3c78f08f4", "scanner": "scanner-primary", "fingerprint": "274d6e0a1db31bc3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5d515559a4925ba2", "level": "note", "message": {"text": "Very large file: src/app/blog/clawdbot-guide/page.tsx (1666 lines)"}, "properties": {"repobilityId": "36e0024670f6c35b", "scanner": "scanner-primary", "fingerprint": "5d515559a4925ba2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-24c5281b1daea4ea", "level": "note", "message": {"text": "Very large file: src/app/blog/regression-proofing-claude-code-workflows/page.tsx (1394 lines)"}, "properties": {"repobilityId": "66d338d9f59f97d9", "scanner": "scanner-primary", "fingerprint": "24c5281b1daea4ea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6e5102b63b285aa6", "level": "note", "message": {"text": "Very large file: src/app/blog/gemini-3-5-flash-agentic-coding-guide/page.tsx (1511 lines)"}, "properties": {"repobilityId": "5a373ccba41cab74", "scanner": "scanner-primary", "fingerprint": "6e5102b63b285aa6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e9a2228c4eb5c7bb", "level": "note", "message": {"text": "Very large file: src/app/blog/mcp-code-execution-pattern/page.tsx (1164 lines)"}, "properties": {"repobilityId": "841301c77398590f", "scanner": "scanner-primary", "fingerprint": "e9a2228c4eb5c7bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-414e981181249b6c", "level": "note", "message": {"text": "Very large file: src/app/blog/persistent-memory-ai-coding-agents/page.tsx (1035 lines)"}, "properties": {"repobilityId": "06d5309adc8092e6", "scanner": "scanner-primary", "fingerprint": "414e981181249b6c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-61a6ee54d8fe3746", "level": "note", "message": {"text": "Very large file: src/app/blog/claude-code-dynamic-workflows-guide/page.tsx (988 lines)"}, "properties": {"repobilityId": "82480b60c818cbf6", "scanner": "scanner-primary", "fingerprint": "61a6ee54d8fe3746", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-79d4fa8c30154a55", "level": "note", "message": {"text": "Very large file: src/app/blog/claude-managed-agents-outcomes/page.tsx (1209 lines)"}, "properties": {"repobilityId": "7a5ddba6f2d260f8", "scanner": "scanner-primary", "fingerprint": "79d4fa8c30154a55", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "588176bd8807a8a1", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ed0412619f40997e", "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": "7b874227e25e110d", "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": "0cb2639584db807e", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "e362c507d9d46a2c", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "ee7bd0da0d202953", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-d68d8e41732bbe9c", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: .claude/progress.md"}, "properties": {"repobilityId": "40d6b78d4a742d8d", "scanner": "scanner-primary", "fingerprint": "d68d8e41732bbe9c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/progress.md"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-3fe97505b08346cf", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/content-pipeline.md"}, "properties": {"repobilityId": "59e870f8f4c84da5", "scanner": "scanner-primary", "fingerprint": "3fe97505b08346cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-pipeline.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91e8d20ac26008c2", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/blog-guidelines.md"}, "properties": {"repobilityId": "c94eda5275c99186", "scanner": "scanner-primary", "fingerprint": "91e8d20ac26008c2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/blog-guidelines.md"}, "region": {"startLine": 270}}}]}, {"ruleId": "scanner-75d81b0dc02094cd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/blog-guidelines.md"}, "properties": {"repobilityId": "372a656a5d69d5fd", "scanner": "scanner-primary", "fingerprint": "75d81b0dc02094cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/blog-guidelines.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-36239a33134bcbf2", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/claude.md"}, "properties": {"repobilityId": "389b7254ba876eb7", "scanner": "scanner-primary", "fingerprint": "36239a33134bcbf2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/claude.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dd90f230acbddc4e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/content-briefs/ant-cli-getting-started.md"}, "properties": {"repobilityId": "02b791d0f17871dd", "scanner": "scanner-primary", "fingerprint": "dd90f230acbddc4e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/ant-cli-getting-started.md"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-41776ab466d4a7ea", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: .claude/content-briefs/gemini-cli-to-antigravity-cli-guide.md"}, "properties": {"repobilityId": "2071462866e345b5", "scanner": "scanner-primary", "fingerprint": "41776ab466d4a7ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/gemini-cli-to-antigravity-cli-guide.md"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-ce66dea0750f1797", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/content-briefs/claude-managed-agents-outcomes.md"}, "properties": {"repobilityId": "b04207e5b2f00dd9", "scanner": "scanner-primary", "fingerprint": "ce66dea0750f1797", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/claude-managed-agents-outcomes.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aaa30fea69eed42e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/content-briefs/claude-managed-agents.md"}, "properties": {"repobilityId": "4dc0bb25075c8be9", "scanner": "scanner-primary", "fingerprint": "aaa30fea69eed42e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/claude-managed-agents.md"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-d3f7dbc1b3b35ebe", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: .claude/content-briefs/ultrareview-ci-cd-pipelines.md"}, "properties": {"repobilityId": "5621522a89b9b11e", "scanner": "scanner-primary", "fingerprint": "d3f7dbc1b3b35ebe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/ultrareview-ci-cd-pipelines.md"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-0bfb19f2bb7a3d84", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/content-briefs/mcp-code-execution-pattern.md"}, "properties": {"repobilityId": "fb90f28c54682eaf", "scanner": "scanner-primary", "fingerprint": "0bfb19f2bb7a3d84", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/mcp-code-execution-pattern.md"}, "region": {"startLine": 244}}}]}, {"ruleId": "scanner-b7d7d9e1948e5f91", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/content-briefs/regression-proofing-claude-code-workflows.md"}, "properties": {"repobilityId": "b26bf4f50053cd0c", "scanner": "scanner-primary", "fingerprint": "b7d7d9e1948e5f91", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/regression-proofing-claude-code-workflows.md"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-288f013dd2eb1aff", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: .claude/content-briefs/regression-proofing-claude-code-workflows.md"}, "properties": {"repobilityId": "412c2080c0b2fb99", "scanner": "scanner-primary", "fingerprint": "288f013dd2eb1aff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/regression-proofing-claude-code-workflows.md"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-2df835209d4d96b5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/content-briefs/gemma-4-models-guide.md"}, "properties": {"repobilityId": "94abe5dde3c58b58", "scanner": "scanner-primary", "fingerprint": "2df835209d4d96b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/gemma-4-models-guide.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-958118808b966709", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/content-briefs/claude-code-cost-tracking.md"}, "properties": {"repobilityId": "709e82455bd74c48", "scanner": "scanner-primary", "fingerprint": "958118808b966709", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/claude-code-cost-tracking.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1e3380b15ecf6bd9", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/content-briefs/qwen-code-getting-started.md"}, "properties": {"repobilityId": "4970e40c1cb3d045", "scanner": "scanner-primary", "fingerprint": "1e3380b15ecf6bd9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/qwen-code-getting-started.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-56111689a0765486", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: .claude/content-briefs/qwen-code-getting-started.md"}, "properties": {"repobilityId": "491ffcf3a796ee7f", "scanner": "scanner-primary", "fingerprint": "56111689a0765486", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/qwen-code-getting-started.md"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-356515cd15ae1eeb", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: .claude/content-briefs/persistent-memory-ai-coding-agents.md"}, "properties": {"repobilityId": "0ad2198c57bb6e6b", "scanner": "scanner-primary", "fingerprint": "356515cd15ae1eeb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/content-briefs/persistent-memory-ai-coding-agents.md"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-c992e1059c7d4ea1", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/research-topic.md"}, "properties": {"repobilityId": "d99c1026f69fe228", "scanner": "scanner-primary", "fingerprint": "c992e1059c7d4ea1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/research-topic.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a9443c36627754a4", "level": "none", "message": {"text": "Commented-code block (9 lines) in next.config.ts:129"}, "properties": {"repobilityId": "756ab4318af9d05e", "scanner": "scanner-primary", "fingerprint": "a9443c36627754a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0cf9c8f66a1abb1b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/linkedin_authorize.py:94"}, "properties": {"repobilityId": "47f4d145c4f03135", "scanner": "scanner-primary", "fingerprint": "0cf9c8f66a1abb1b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "781619958e0f9b34", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "08987aaeeb72ff7a", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}