{"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-2a83b70a76bf5bbe", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/ViolationCard.tsx:73", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ViolationCard.tsx:73"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1dc46a8aaf4933c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/JsonLd.tsx:5", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/JsonLd.tsx:5"}, "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-b1822586ac84617f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/page.tsx:182", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/page.tsx:182"}, "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-ffaa8e72fd15dea0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:104", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:104"}, "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-31ca3ab134cd1d67", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:260", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:260"}, "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-07508c97b85b460f", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/webhook/route.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/webhook/route.ts:84"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0793b9a1965dbedb", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/cron/weekly-scan/route.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/cron/weekly-scan/route.ts:111"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d43a9e007904cbad", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/page.tsx:203", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/page.tsx:203"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-476c2cf8df544098", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/history/page.tsx:126", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/history/page.tsx:126"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-91661d85e88bf715", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/history/[scanId]/page.tsx:33", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/history/[scanId]/page.tsx:33"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dc3e8ae073f72d8c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/scan/page.tsx:329", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/scan/page.tsx:329"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-63208f6fe84f5b42", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/sites/page.tsx:282", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/sites/page.tsx:282"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-168e0c80e188a9b0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/page.tsx:285", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/page.tsx:285"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2a43d5ce86b0404", "name": "Stray `console.log` in TS/JS \u2014 src/lib/email.ts:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/email.ts:190"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f314aa06d78e5bbe", "name": "Stray `console.log` in TS/JS \u2014 src/lib/scanner.ts:515", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/scanner.ts:515"}, "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-166dff3c3df6a10e", "name": "ORM models found but no DB engine detected", "shortDescription": {"text": "ORM models found but no DB engine detected"}, "fullDescription": {"text": "The repo defines tables/models but no DB connection string was found. Likely lives in env vars or a config file the scanner didn't read."}, "properties": {"scanner": "scanner-primary", "layer": "data", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1f3ed224f3296e56", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/JsonLd.tsx:5", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/JsonLd.tsx:5"}, "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-43c76358e530629b", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/page.tsx:182", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/page.tsx:182"}, "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-50279372f6ff0e38", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:104", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:104"}, "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-ad0cd840a92c4a7c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:260", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:260"}, "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-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "4 test file(s) for 89 source file(s) (ratio 0.04). 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 18 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 16 placeholder/mock markers across 7 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "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-1561d7ff25fdea51", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-19.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-19.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-ae00fa57c5735870", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-18.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-18.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-1281b9255e5d34c1", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-05-17.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-05-17.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-2c2f322d46abd674", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-23.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-23.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-220377b0b0d11462", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-13.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-13.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-e9aad820ac74e9f2", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-26.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-26.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-47b2d072363a6af7", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-30.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-30.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-884cc2c5bfca5abc", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-06-01.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-06-01.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-45ccc1ac5765f519", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-08.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-08.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-b49efb5182037901", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-19.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-19.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-0442a1242f003842", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-02.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-02.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-f71bcca2e148d163", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-16.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-16.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-141a00cb95e4b110", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-12.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-12.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-e46f7f592fc7621b", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-06-08.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-06-08.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-68d0be78d08b7462", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-14.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-14.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-8e8844e16927f14f", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-01.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-01.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-d01ded7d28a9e5fd", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-11.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-11.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-5285ed0856ae2e6d", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-02.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-02.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-37250a6889f7183f", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-14.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-14.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-608000b3f09af5aa", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-06-15.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-06-15.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-58c2395f766cce08", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-15.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-15.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-060e5823bfd71b8a", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-02b.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-02b.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-e1ea4863fb884ef1", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-05-25.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-05-25.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-e11600dc681654e5", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-14.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-14.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-6dffbbf833d29313", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-11.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-11.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-71152cbac364c541", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-10.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-10.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-9b3677e0fbad2dbf", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-12.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-12.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-6eaa5b582b97f736", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-25.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-25.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-b6911281f28ed6b6", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-20.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-20.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-7e1817f9610934b0", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-15.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-15.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-c26b7a30b56ebf36", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-09.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-09.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-11f90576bcdd3faf", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-17.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-17.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-7c31c0ac09ff79e8", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-21.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-21.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-65392be0a0a641ab", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-30.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-30.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-82f4f933ecd74323", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-13.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-13.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-1ddbc6d67d34d52f", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-28.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-28.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-219b7bcc64d61168", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-14.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-14.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-99d3bb6e1cb8b45c", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-15.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-15.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-9bf5cf6c87787aa9", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-16.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-16.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-2757680a3d0d573f", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-21.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-21.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-2326de22e8216976", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-25.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-25.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-6fd3dc9d7d4232de", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-26.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-26.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-7daa3e803b253743", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-27.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-27.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-6bab6f753928b095", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-20.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-20.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-c0130513f6022754", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-03.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-03.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-7fde404550b3bfef", "name": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-23.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-23.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-3cfa4408501c5a81", "name": "Commented-code block (6 lines) in src/components/ScanReport.tsx:99", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/ScanReport.tsx:99"}, "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-5d878df42b8da158", "name": "Commented-code block (6 lines) in src/app/page.tsx:127", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/page.tsx:127"}, "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-418e41fba85b9bb6", "name": "Commented-code block (5 lines) in src/app/api/events/route.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/events/route.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de639cd364a41de7", "name": "Commented-code block (5 lines) in src/app/api/checkout/route.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/checkout/route.ts:61"}, "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-ed553f40be07f0dc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/track.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/track.ts:39"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-58fe164df94ab238", "name": "Commented-code block (7 lines) in src/lib/db.ts:293", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/db.ts:293"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2eafc3188c36bb02", "name": "3 env vars used in code but missing from .env.example", "shortDescription": {"text": "3 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AWS_LAMBDA_FUNCTION_NAME`, `NODE_ENV`, `VERCEL`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/22023"}, "properties": {"repository": "vacationdesign/accessguard", "repoUrl": "https://github.com/vacationdesign/accessguard", "branch": "main"}, "results": [{"ruleId": "scanner-2a83b70a76bf5bbe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ViolationCard.tsx:73"}, "properties": {"repobilityId": "31ba60680ad6f48e", "scanner": "scanner-primary", "fingerprint": "2a83b70a76bf5bbe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f1dc46a8aaf4933c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/JsonLd.tsx:5"}, "properties": {"repobilityId": "63d1555414765036", "scanner": "scanner-primary", "fingerprint": "f1dc46a8aaf4933c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b1822586ac84617f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/page.tsx:182"}, "properties": {"repobilityId": "4d4ab3e03315f684", "scanner": "scanner-primary", "fingerprint": "b1822586ac84617f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ffaa8e72fd15dea0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:104"}, "properties": {"repobilityId": "0d72350965068f5b", "scanner": "scanner-primary", "fingerprint": "ffaa8e72fd15dea0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-31ca3ab134cd1d67", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:260"}, "properties": {"repobilityId": "edc166468e8868e7", "scanner": "scanner-primary", "fingerprint": "31ca3ab134cd1d67", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-07508c97b85b460f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/webhook/route.ts:84"}, "properties": {"repobilityId": "846c6f4c7ef42c35", "scanner": "scanner-primary", "fingerprint": "07508c97b85b460f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0793b9a1965dbedb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/cron/weekly-scan/route.ts:111"}, "properties": {"repobilityId": "f3cfd6d5ce896745", "scanner": "scanner-primary", "fingerprint": "0793b9a1965dbedb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d43a9e007904cbad", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/page.tsx:203"}, "properties": {"repobilityId": "4ba209c1bd3eacfd", "scanner": "scanner-primary", "fingerprint": "d43a9e007904cbad", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-476c2cf8df544098", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/history/page.tsx:126"}, "properties": {"repobilityId": "c21cd4a38bda5db1", "scanner": "scanner-primary", "fingerprint": "476c2cf8df544098", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-91661d85e88bf715", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/history/[scanId]/page.tsx:33"}, "properties": {"repobilityId": "cceb15def69c193d", "scanner": "scanner-primary", "fingerprint": "91661d85e88bf715", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dc3e8ae073f72d8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/scan/page.tsx:329"}, "properties": {"repobilityId": "551cbb498da4086f", "scanner": "scanner-primary", "fingerprint": "dc3e8ae073f72d8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-63208f6fe84f5b42", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/sites/page.tsx:282"}, "properties": {"repobilityId": "7ffc0e4480fdcaef", "scanner": "scanner-primary", "fingerprint": "63208f6fe84f5b42", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-168e0c80e188a9b0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/page.tsx:285"}, "properties": {"repobilityId": "8d313b2589100140", "scanner": "scanner-primary", "fingerprint": "168e0c80e188a9b0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f2a43d5ce86b0404", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/email.ts:190"}, "properties": {"repobilityId": "bdf73540c4990d36", "scanner": "scanner-primary", "fingerprint": "f2a43d5ce86b0404", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f314aa06d78e5bbe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/scanner.ts:515"}, "properties": {"repobilityId": "81199e546c418610", "scanner": "scanner-primary", "fingerprint": "f314aa06d78e5bbe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-166dff3c3df6a10e", "level": "warning", "message": {"text": "ORM models found but no DB engine detected"}, "properties": {"repobilityId": "cda36de65e114635", "scanner": "scanner-primary", "fingerprint": "166dff3c3df6a10e", "layer": "data", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-1f3ed224f3296e56", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/JsonLd.tsx:5"}, "properties": {"repobilityId": "a28d03af2ac862d0", "scanner": "scanner-primary", "fingerprint": "1f3ed224f3296e56", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/JsonLd.tsx"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-43c76358e530629b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/page.tsx:182"}, "properties": {"repobilityId": "88fd235b712bda65", "scanner": "scanner-primary", "fingerprint": "43c76358e530629b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/page.tsx"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-50279372f6ff0e38", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:104"}, "properties": {"repobilityId": "0bca654fa2052eb0", "scanner": "scanner-primary", "fingerprint": "50279372f6ff0e38", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-ad0cd840a92c4a7c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:260"}, "properties": {"repobilityId": "df5a2a4c38f975f6", "scanner": "scanner-primary", "fingerprint": "ad0cd840a92c4a7c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/[slug]/page.tsx"}, "region": {"startLine": 260}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"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": "8cf370dd44da4994", "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": "f697bc60187f8dea", "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": "ac78ea2e1569e7ce", "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": "bd01d0d53f46b42e", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "1d111e7bc5963714", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "2dad12aa1077720b", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "bd393be759c0a429", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1561d7ff25fdea51", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-19.md"}, "properties": {"repobilityId": "59b67402c5b712e5", "scanner": "scanner-primary", "fingerprint": "1561d7ff25fdea51", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-19.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ae00fa57c5735870", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-18.md"}, "properties": {"repobilityId": "1a880654e73e2ea0", "scanner": "scanner-primary", "fingerprint": "ae00fa57c5735870", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-18.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1281b9255e5d34c1", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-05-17.md"}, "properties": {"repobilityId": "1ac00c109debde71", "scanner": "scanner-primary", "fingerprint": "1281b9255e5d34c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/weekly-2026-05-17.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2c2f322d46abd674", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-23.md"}, "properties": {"repobilityId": "871c9d3e8af38abb", "scanner": "scanner-primary", "fingerprint": "2c2f322d46abd674", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-23.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-220377b0b0d11462", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-13.md"}, "properties": {"repobilityId": "5c6f996aa3f24514", "scanner": "scanner-primary", "fingerprint": "220377b0b0d11462", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-06-13.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e9aad820ac74e9f2", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-26.md"}, "properties": {"repobilityId": "e494760899b62552", "scanner": "scanner-primary", "fingerprint": "e9aad820ac74e9f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-26.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-47b2d072363a6af7", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-30.md"}, "properties": {"repobilityId": "00b640646b0d1bc4", "scanner": "scanner-primary", "fingerprint": "47b2d072363a6af7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-30.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-884cc2c5bfca5abc", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-06-01.md"}, "properties": {"repobilityId": "b274ae8bbf7c1688", "scanner": "scanner-primary", "fingerprint": "884cc2c5bfca5abc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/weekly-2026-06-01.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-45ccc1ac5765f519", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-08.md"}, "properties": {"repobilityId": "a581b9f3e49584d2", "scanner": "scanner-primary", "fingerprint": "45ccc1ac5765f519", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-08.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b49efb5182037901", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-19.md"}, "properties": {"repobilityId": "c02fe8a80050ff7f", "scanner": "scanner-primary", "fingerprint": "b49efb5182037901", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-19.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0442a1242f003842", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-02.md"}, "properties": {"repobilityId": "316c50e12499601b", "scanner": "scanner-primary", "fingerprint": "0442a1242f003842", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-06-02.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f71bcca2e148d163", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-16.md"}, "properties": {"repobilityId": "aa3b5db791443fbc", "scanner": "scanner-primary", "fingerprint": "f71bcca2e148d163", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-06-16.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-141a00cb95e4b110", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-12.md"}, "properties": {"repobilityId": "9086d8f32ad7dca1", "scanner": "scanner-primary", "fingerprint": "141a00cb95e4b110", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-12.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e46f7f592fc7621b", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-06-08.md"}, "properties": {"repobilityId": "715b2dff9420a17d", "scanner": "scanner-primary", "fingerprint": "e46f7f592fc7621b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/weekly-2026-06-08.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-68d0be78d08b7462", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-14.md"}, "properties": {"repobilityId": "4822dd347ebb023a", "scanner": "scanner-primary", "fingerprint": "68d0be78d08b7462", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-04-14.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e8844e16927f14f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-01.md"}, "properties": {"repobilityId": "c47fcf105922ac60", "scanner": "scanner-primary", "fingerprint": "8e8844e16927f14f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-01.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d01ded7d28a9e5fd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-11.md"}, "properties": {"repobilityId": "be4aafc4fb47e1cb", "scanner": "scanner-primary", "fingerprint": "d01ded7d28a9e5fd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-11.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5285ed0856ae2e6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-02.md"}, "properties": {"repobilityId": "6d101b213a089422", "scanner": "scanner-primary", "fingerprint": "5285ed0856ae2e6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-02.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-37250a6889f7183f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-14.md"}, "properties": {"repobilityId": "10f3ae766fb34e91", "scanner": "scanner-primary", "fingerprint": "37250a6889f7183f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-14.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-608000b3f09af5aa", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-06-15.md"}, "properties": {"repobilityId": "c3fee8190392de6e", "scanner": "scanner-primary", "fingerprint": "608000b3f09af5aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/weekly-2026-06-15.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-58c2395f766cce08", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-15.md"}, "properties": {"repobilityId": "ec5edafb21b0264d", "scanner": "scanner-primary", "fingerprint": "58c2395f766cce08", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-06-15.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-060e5823bfd71b8a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-02b.md"}, "properties": {"repobilityId": "b32ecbc46d3cea24", "scanner": "scanner-primary", "fingerprint": "060e5823bfd71b8a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-04-02b.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e1ea4863fb884ef1", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/weekly-2026-05-25.md"}, "properties": {"repobilityId": "11b00ae87692fa5c", "scanner": "scanner-primary", "fingerprint": "e1ea4863fb884ef1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/weekly-2026-05-25.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e11600dc681654e5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-14.md"}, "properties": {"repobilityId": "958b7b77ec4bd4cb", "scanner": "scanner-primary", "fingerprint": "e11600dc681654e5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-06-14.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6dffbbf833d29313", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-11.md"}, "properties": {"repobilityId": "c8706c11421c0561", "scanner": "scanner-primary", "fingerprint": "6dffbbf833d29313", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-06-11.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-71152cbac364c541", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-10.md"}, "properties": {"repobilityId": "1cf5a160a2c1874a", "scanner": "scanner-primary", "fingerprint": "71152cbac364c541", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-10.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9b3677e0fbad2dbf", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-06-12.md"}, "properties": {"repobilityId": "9bd5102b945580d3", "scanner": "scanner-primary", "fingerprint": "9b3677e0fbad2dbf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-06-12.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6eaa5b582b97f736", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-25.md"}, "properties": {"repobilityId": "25d84091b88d17c8", "scanner": "scanner-primary", "fingerprint": "6eaa5b582b97f736", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-25.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b6911281f28ed6b6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-20.md"}, "properties": {"repobilityId": "3284ab67a920e41a", "scanner": "scanner-primary", "fingerprint": "b6911281f28ed6b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-20.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7e1817f9610934b0", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-15.md"}, "properties": {"repobilityId": "686366522847c89b", "scanner": "scanner-primary", "fingerprint": "7e1817f9610934b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-15.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c26b7a30b56ebf36", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-09.md"}, "properties": {"repobilityId": "245adcf956159985", "scanner": "scanner-primary", "fingerprint": "c26b7a30b56ebf36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-09.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-11f90576bcdd3faf", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-17.md"}, "properties": {"repobilityId": "242200ca2b49f38e", "scanner": "scanner-primary", "fingerprint": "11f90576bcdd3faf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-17.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c31c0ac09ff79e8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-21.md"}, "properties": {"repobilityId": "58f622934baac68c", "scanner": "scanner-primary", "fingerprint": "7c31c0ac09ff79e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-21.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-65392be0a0a641ab", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-30.md"}, "properties": {"repobilityId": "bc1043f28948eaf8", "scanner": "scanner-primary", "fingerprint": "65392be0a0a641ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-04-30.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-82f4f933ecd74323", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-13.md"}, "properties": {"repobilityId": "12e256a13f8103c4", "scanner": "scanner-primary", "fingerprint": "82f4f933ecd74323", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-13.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ddbc6d67d34d52f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-28.md"}, "properties": {"repobilityId": "2e66a00779ba0ca0", "scanner": "scanner-primary", "fingerprint": "1ddbc6d67d34d52f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-04-28.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-219b7bcc64d61168", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-14.md"}, "properties": {"repobilityId": "c332290d26f3a647", "scanner": "scanner-primary", "fingerprint": "219b7bcc64d61168", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-14.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-99d3bb6e1cb8b45c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-15.md"}, "properties": {"repobilityId": "bd51abe64f58b029", "scanner": "scanner-primary", "fingerprint": "99d3bb6e1cb8b45c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-15.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9bf5cf6c87787aa9", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-16.md"}, "properties": {"repobilityId": "0bc1d66399dfdfdd", "scanner": "scanner-primary", "fingerprint": "9bf5cf6c87787aa9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-16.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2757680a3d0d573f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-21.md"}, "properties": {"repobilityId": "b80c7daf95b11b85", "scanner": "scanner-primary", "fingerprint": "2757680a3d0d573f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-21.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2326de22e8216976", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-25.md"}, "properties": {"repobilityId": "215dfd94bed6e929", "scanner": "scanner-primary", "fingerprint": "2326de22e8216976", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-25.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6fd3dc9d7d4232de", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-04-26.md"}, "properties": {"repobilityId": "9419688b35b8d64c", "scanner": "scanner-primary", "fingerprint": "6fd3dc9d7d4232de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-04-26.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7daa3e803b253743", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-27.md"}, "properties": {"repobilityId": "9d62c8d269022351", "scanner": "scanner-primary", "fingerprint": "7daa3e803b253743", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-27.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6bab6f753928b095", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-20.md"}, "properties": {"repobilityId": "2e533c616f749c8b", "scanner": "scanner-primary", "fingerprint": "6bab6f753928b095", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-20.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c0130513f6022754", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-05-03.md"}, "properties": {"repobilityId": "740c2f1c16c30a3e", "scanner": "scanner-primary", "fingerprint": "c0130513f6022754", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-05-03.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7fde404550b3bfef", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/seo-reports/2026-03-23.md"}, "properties": {"repobilityId": "57c86e710a37a14d", "scanner": "scanner-primary", "fingerprint": "7fde404550b3bfef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/seo-reports/2026-03-23.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3cfa4408501c5a81", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/ScanReport.tsx:99"}, "properties": {"repobilityId": "5e9112319248f0cb", "scanner": "scanner-primary", "fingerprint": "3cfa4408501c5a81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d878df42b8da158", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/page.tsx:127"}, "properties": {"repobilityId": "fb2c04bcce48b6bf", "scanner": "scanner-primary", "fingerprint": "5d878df42b8da158", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-418e41fba85b9bb6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/events/route.ts:12"}, "properties": {"repobilityId": "04ba620edf5332da", "scanner": "scanner-primary", "fingerprint": "418e41fba85b9bb6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de639cd364a41de7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/checkout/route.ts:61"}, "properties": {"repobilityId": "4bacd75f01fe0b6d", "scanner": "scanner-primary", "fingerprint": "de639cd364a41de7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed553f40be07f0dc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/track.ts:39"}, "properties": {"repobilityId": "bb35ca2901c94fb2", "scanner": "scanner-primary", "fingerprint": "ed553f40be07f0dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-58fe164df94ab238", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/db.ts:293"}, "properties": {"repobilityId": "4d259509a717386f", "scanner": "scanner-primary", "fingerprint": "58fe164df94ab238", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2eafc3188c36bb02", "level": "none", "message": {"text": "3 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "bd934ba112b02ffa", "scanner": "scanner-primary", "fingerprint": "2eafc3188c36bb02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}