{"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-1ffebb2aad035e75", "name": "Possibly dead Python function: replace_cautions", "shortDescription": {"text": "Possibly dead Python function: replace_cautions"}, "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-ccdf738f85981e5c", "name": "Possibly dead Python function: render_studios_typescript", "shortDescription": {"text": "Possibly dead Python function: render_studios_typescript"}, "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-7afd6151e2be4b9e", "name": "Possibly dead Python function: num_to_word", "shortDescription": {"text": "Possibly dead Python function: num_to_word"}, "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-8ff014df23766bee", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/FAQSchema.tsx:27", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/FAQSchema.tsx:27"}, "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-d6a9dd9bdef69cfb", "name": "`truncate` class without `title=` for hover reveal \u2014 components/PriceComparisonTable.tsx:65", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/PriceComparisonTable.tsx:65"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d46e066a867c373a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/BreadcrumbSchema.tsx:25", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/BreadcrumbSchema.tsx:25"}, "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-1be4f88ae33a185b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/layout.tsx:132", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/layout.tsx:132"}, "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-7bc8f64138fdb0c8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/kobe/page.tsx:888", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/kobe/page.tsx:888"}, "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-eff917fbdc8734f6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/nishi-ogikubo/page.tsx:411", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/nishi-ogikubo/page.tsx:411"}, "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-8ef14c8fbd6db45b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/shin-okubo/page.tsx:497", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/shin-okubo/page.tsx:497"}, "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-ef3692ad9f6ba629", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/hiroshima/page.tsx:914", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/hiroshima/page.tsx:914"}, "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-1f8442e8e0ba41e8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/sapporo/page.tsx:964", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/sapporo/page.tsx:964"}, "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-a92911c8421687eb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/sendai/page.tsx:957", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/sendai/page.tsx:957"}, "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-caebe637f1161911", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/tokyo/page.tsx:995", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/tokyo/page.tsx:995"}, "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-805a64e869e73660", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/sugamo/page.tsx:465", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/sugamo/page.tsx:465"}, "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-b4a961a7e7f21278", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/nagoya/page.tsx:845", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/nagoya/page.tsx:845"}, "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-8066ef06feff9e78", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/niigata/page.tsx:842", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/niigata/page.tsx:842"}, "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-3ea9796c01097103", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/ogikubo/page.tsx:402", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/ogikubo/page.tsx:402"}, "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-24085d0f01215d2d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/oshiage/page.tsx:297", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/oshiage/page.tsx:297"}, "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-d30fa447f3b58ac3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/ochanomizu/page.tsx:359", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/ochanomizu/page.tsx:359"}, "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-7826fe94f7061347", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/chiba/page.tsx:951", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/chiba/page.tsx:951"}, "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-86eb19c7392623a4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/articles/[slug]/page.tsx:100", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/articles/[slug]/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-0b7d89b7763678be", "name": "Insecure pattern 'dangerous_innerhtml' in components/FAQSchema.tsx:27", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/FAQSchema.tsx:27"}, "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-23cd7d5f071ce13d", "name": "Insecure pattern 'dangerous_innerhtml' in components/BreadcrumbSchema.tsx:25", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/BreadcrumbSchema.tsx:25"}, "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-b6cba4fd7e5d914b", "name": "Insecure pattern 'dangerous_innerhtml' in app/layout.tsx:132", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/layout.tsx:132"}, "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-f1f731d439d40350", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/kobe/page.tsx:888", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/kobe/page.tsx:888"}, "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-2df0764ce3fd8e5b", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/nishi-ogikubo/page.tsx:411", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/nishi-ogikubo/page.tsx:411"}, "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-966be8953302c99a", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/shin-okubo/page.tsx:497", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/shin-okubo/page.tsx:497"}, "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-590013c58056b992", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/hiroshima/page.tsx:914", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/hiroshima/page.tsx:914"}, "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-17719cc17423d4bb", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/sapporo/page.tsx:964", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/sapporo/page.tsx:964"}, "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-1a022d028a8e1ec6", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/sendai/page.tsx:957", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/sendai/page.tsx:957"}, "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-ad168cf585540e55", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/tokyo/page.tsx:995", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/tokyo/page.tsx:995"}, "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-eb3fe4793a3b0dcf", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/sugamo/page.tsx:465", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/sugamo/page.tsx:465"}, "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-ea22a20c8b402335", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/nagoya/page.tsx:845", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/nagoya/page.tsx:845"}, "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-bbee4b869ddc2f72", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/niigata/page.tsx:842", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/niigata/page.tsx:842"}, "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-44bc45eab02debc0", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/ogikubo/page.tsx:402", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/ogikubo/page.tsx:402"}, "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-f358aa0bf456c726", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/oshiage/page.tsx:297", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/oshiage/page.tsx:297"}, "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-eb808e8fbfb97876", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/ochanomizu/page.tsx:359", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/ochanomizu/page.tsx:359"}, "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-15839e5212da1623", "name": "Insecure pattern 'dangerous_innerhtml' in app/area/chiba/page.tsx:951", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/chiba/page.tsx:951"}, "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-7afbdcbd091a0080", "name": "Insecure pattern 'dangerous_innerhtml' in app/articles/[slug]/page.tsx:100", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/articles/[slug]/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-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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63a22f2b27d9d89b", "name": "Very large file: app/page.tsx (1185 lines)", "shortDescription": {"text": "Very large file: app/page.tsx (1185 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-55469205e0d74ccd", "name": "Very large file: app/area/akasaka/page.tsx (941 lines)", "shortDescription": {"text": "Very large file: app/area/akasaka/page.tsx (941 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-643c902e7a65867a", "name": "Very large file: app/area/takadanobaba/page.tsx (1083 lines)", "shortDescription": {"text": "Very large file: app/area/takadanobaba/page.tsx (1083 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-df52b1cf533487a9", "name": "Very large file: app/area/seijo-gakuenmae/page.tsx (885 lines)", "shortDescription": {"text": "Very large file: app/area/seijo-gakuenmae/page.tsx (885 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-c514e181e0597ccf", "name": "Very large file: app/area/kobe/page.tsx (917 lines)", "shortDescription": {"text": "Very large file: app/area/kobe/page.tsx (917 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-3518ab252576b32c", "name": "Very large file: app/area/nishi-ogikubo/page.tsx (888 lines)", "shortDescription": {"text": "Very large file: app/area/nishi-ogikubo/page.tsx (888 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-69641db65dcd0f51", "name": "Very large file: app/area/shin-okubo/page.tsx (970 lines)", "shortDescription": {"text": "Very large file: app/area/shin-okubo/page.tsx (970 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-c7a1a715f1988e27", "name": "Very large file: app/area/hiroshima/page.tsx (943 lines)", "shortDescription": {"text": "Very large file: app/area/hiroshima/page.tsx (943 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-dde45017d2f855a3", "name": "Very large file: app/area/tokyo-station/page.tsx (984 lines)", "shortDescription": {"text": "Very large file: app/area/tokyo-station/page.tsx (984 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-4d7ab15b09e2053a", "name": "Very large file: app/area/sangenjaya/page.tsx (1108 lines)", "shortDescription": {"text": "Very large file: app/area/sangenjaya/page.tsx (1108 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-be6f72f36503ebc7", "name": "Very large file: app/area/kinshicho/page.tsx (1244 lines)", "shortDescription": {"text": "Very large file: app/area/kinshicho/page.tsx (1244 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-16fdb5b52450f43c", "name": "Very large file: app/area/asakusa/page.tsx (914 lines)", "shortDescription": {"text": "Very large file: app/area/asakusa/page.tsx (914 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-80bc76df0fe9bb9e", "name": "Very large file: app/area/akihabara/page.tsx (888 lines)", "shortDescription": {"text": "Very large file: app/area/akihabara/page.tsx (888 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-aa50751b94dd713a", "name": "Very large file: app/area/sapporo/page.tsx (994 lines)", "shortDescription": {"text": "Very large file: app/area/sapporo/page.tsx (994 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-84e278374e2f1821", "name": "Very large file: app/area/okinawa/page.tsx (1256 lines)", "shortDescription": {"text": "Very large file: app/area/okinawa/page.tsx (1256 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-ae9c9c1e2d90cc6d", "name": "Very large file: app/area/sendai/page.tsx (986 lines)", "shortDescription": {"text": "Very large file: app/area/sendai/page.tsx (986 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-012d62c38c1ca5c4", "name": "Very large file: app/area/tokyo/page.tsx (1024 lines)", "shortDescription": {"text": "Very large file: app/area/tokyo/page.tsx (1024 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-6bf88a912e1e017b", "name": "Very large file: app/area/sugamo/page.tsx (935 lines)", "shortDescription": {"text": "Very large file: app/area/sugamo/page.tsx (935 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-97f79dd1001e5e28", "name": "Very large file: app/area/esaka/page.tsx (941 lines)", "shortDescription": {"text": "Very large file: app/area/esaka/page.tsx (941 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0de5cbdc8caf78bc", "name": "Very large file: app/area/yoyogi/page.tsx (899 lines)", "shortDescription": {"text": "Very large file: app/area/yoyogi/page.tsx (899 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-b44650c40abcf98b", "name": "Very large file: app/area/shimokitazawa/page.tsx (947 lines)", "shortDescription": {"text": "Very large file: app/area/shimokitazawa/page.tsx (947 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-7f214810fbd97cd4", "name": "Very large file: app/area/yokohama/page.tsx (965 lines)", "shortDescription": {"text": "Very large file: app/area/yokohama/page.tsx (965 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-8db76ef78cd7b0c5", "name": "Very large file: app/area/asagaya/page.tsx (866 lines)", "shortDescription": {"text": "Very large file: app/area/asagaya/page.tsx (866 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-5f605df0bf90216f", "name": "Very large file: app/area/shinjuku/page.tsx (1212 lines)", "shortDescription": {"text": "Very large file: app/area/shinjuku/page.tsx (1212 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-bbc24387fd6be1e5", "name": "Very large file: app/area/nagoya/page.tsx (875 lines)", "shortDescription": {"text": "Very large file: app/area/nagoya/page.tsx (875 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-b711818e0f3e196b", "name": "Very large file: app/area/koenji/page.tsx (1096 lines)", "shortDescription": {"text": "Very large file: app/area/koenji/page.tsx (1096 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-db058ce063274a1f", "name": "Very large file: app/area/tamachi/page.tsx (848 lines)", "shortDescription": {"text": "Very large file: app/area/tamachi/page.tsx (848 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-650dbd77cbe3a1c4", "name": "Very large file: app/area/omiya/page.tsx (970 lines)", "shortDescription": {"text": "Very large file: app/area/omiya/page.tsx (970 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-aa125c6a8c6970df", "name": "Very large file: app/area/niigata/page.tsx (872 lines)", "shortDescription": {"text": "Very large file: app/area/niigata/page.tsx (872 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-a28906a6bb0ecf3d", "name": "Very large file: app/area/toritsu-daigaku/page.tsx (1154 lines)", "shortDescription": {"text": "Very large file: app/area/toritsu-daigaku/page.tsx (1154 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-b48deaf2010e5f90", "name": "Very large file: app/area/shizuoka/page.tsx (950 lines)", "shortDescription": {"text": "Very large file: app/area/shizuoka/page.tsx (950 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-d4915d708abd298e", "name": "Very large file: app/area/ebisu/page.tsx (963 lines)", "shortDescription": {"text": "Very large file: app/area/ebisu/page.tsx (963 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-ee262d2fdce57267", "name": "Very large file: app/area/okayama/page.tsx (937 lines)", "shortDescription": {"text": "Very large file: app/area/okayama/page.tsx (937 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-a99170f6ed39a7d2", "name": "Very large file: app/area/yoyogi-uehara/page.tsx (837 lines)", "shortDescription": {"text": "Very large file: app/area/yoyogi-uehara/page.tsx (837 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-8dc7540dbff4f7c2", "name": "Very large file: app/area/ogikubo/page.tsx (878 lines)", "shortDescription": {"text": "Very large file: app/area/ogikubo/page.tsx (878 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-63a9731667b1f1bc", "name": "Very large file: app/area/shimbashi/page.tsx (994 lines)", "shortDescription": {"text": "Very large file: app/area/shimbashi/page.tsx (994 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-1a1619d1d5700a5c", "name": "Very large file: app/area/ochanomizu/page.tsx (827 lines)", "shortDescription": {"text": "Very large file: app/area/ochanomizu/page.tsx (827 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-2d2f09f9026a7f35", "name": "Very large file: app/area/kawasaki/page.tsx (896 lines)", "shortDescription": {"text": "Very large file: app/area/kawasaki/page.tsx (896 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-fd137634e99a408d", "name": "Very large file: app/area/osaka/page.tsx (973 lines)", "shortDescription": {"text": "Very large file: app/area/osaka/page.tsx (973 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-2f03e2a7515e7cd7", "name": "Very large file: app/area/nakano/page.tsx (1100 lines)", "shortDescription": {"text": "Very large file: app/area/nakano/page.tsx (1100 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-4ac4595d1bee3591", "name": "Very large file: app/area/aoyama-itchome/page.tsx (889 lines)", "shortDescription": {"text": "Very large file: app/area/aoyama-itchome/page.tsx (889 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-2d638481fa290942", "name": "Very large file: app/area/suidobashi/page.tsx (1057 lines)", "shortDescription": {"text": "Very large file: app/area/suidobashi/page.tsx (1057 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-ed8accb232f93857", "name": "Very large file: app/area/chiba/page.tsx (980 lines)", "shortDescription": {"text": "Very large file: app/area/chiba/page.tsx (980 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-435813843b867549", "name": "Very large file: app/area/fujisawa/page.tsx (908 lines)", "shortDescription": {"text": "Very large file: app/area/fujisawa/page.tsx (908 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-3fe0f89effbd5277", "name": "Very large file: app/area/fukuoka/page.tsx (933 lines)", "shortDescription": {"text": "Very large file: app/area/fukuoka/page.tsx (933 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": "1 test file(s) for 433 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 75 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-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-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-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/add-zenplace-202606.py:find_array_close, scripts/gen-new-areas-batch3.py:find_array_close, scripts/gen-new-areas-batch2.py:find_array_close, scripts/gen-new-areas-batch1.py:find_array_close\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/gen-know-articles.py:md, scripts/gen-know-deep-a.py:write\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/gen-new-areas-batch3.py:studio_ts, scripts/gen-new-areas-batch4.py:studio_ts, scripts/gen-new-areas-batch5.py:studio_ts\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/22615"}, "properties": {"repository": "webmaster0818/pilates-biyori", "repoUrl": "https://github.com/webmaster0818/pilates-biyori", "branch": "main"}, "results": [{"ruleId": "scanner-1ffebb2aad035e75", "level": "note", "message": {"text": "Possibly dead Python function: replace_cautions"}, "properties": {"repobilityId": "8f22d701455218bf", "scanner": "scanner-primary", "fingerprint": "1ffebb2aad035e75", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/update_sections.py:607"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ccdf738f85981e5c", "level": "note", "message": {"text": "Possibly dead Python function: render_studios_typescript"}, "properties": {"repobilityId": "4a2613cea9d7e7a9", "scanner": "scanner-primary", "fingerprint": "ccdf738f85981e5c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/enrich_61_areas.py:97"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7afd6151e2be4b9e", "level": "note", "message": {"text": "Possibly dead Python function: num_to_word"}, "properties": {"repobilityId": "38d57fa9470655e2", "scanner": "scanner-primary", "fingerprint": "7afd6151e2be4b9e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/enrich_61_areas.py:106"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ff014df23766bee", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/FAQSchema.tsx:27"}, "properties": {"repobilityId": "04b34afdf1ea417d", "scanner": "scanner-primary", "fingerprint": "8ff014df23766bee", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d6a9dd9bdef69cfb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/PriceComparisonTable.tsx:65"}, "properties": {"repobilityId": "12fb89c1f0e7cdae", "scanner": "scanner-primary", "fingerprint": "d6a9dd9bdef69cfb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d46e066a867c373a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/BreadcrumbSchema.tsx:25"}, "properties": {"repobilityId": "7a5f026638fca5f7", "scanner": "scanner-primary", "fingerprint": "d46e066a867c373a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1be4f88ae33a185b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/layout.tsx:132"}, "properties": {"repobilityId": "6f16eb9b82a2dcd6", "scanner": "scanner-primary", "fingerprint": "1be4f88ae33a185b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7bc8f64138fdb0c8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/kobe/page.tsx:888"}, "properties": {"repobilityId": "aa31503e264077e6", "scanner": "scanner-primary", "fingerprint": "7bc8f64138fdb0c8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-eff917fbdc8734f6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/nishi-ogikubo/page.tsx:411"}, "properties": {"repobilityId": "0d7c5824fee7af49", "scanner": "scanner-primary", "fingerprint": "eff917fbdc8734f6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8ef14c8fbd6db45b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/shin-okubo/page.tsx:497"}, "properties": {"repobilityId": "c1bc542a24fc0930", "scanner": "scanner-primary", "fingerprint": "8ef14c8fbd6db45b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ef3692ad9f6ba629", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/hiroshima/page.tsx:914"}, "properties": {"repobilityId": "00a432e163e0fb9a", "scanner": "scanner-primary", "fingerprint": "ef3692ad9f6ba629", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1f8442e8e0ba41e8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/sapporo/page.tsx:964"}, "properties": {"repobilityId": "a00698d044d2f8c7", "scanner": "scanner-primary", "fingerprint": "1f8442e8e0ba41e8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a92911c8421687eb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/sendai/page.tsx:957"}, "properties": {"repobilityId": "32eedbf407bb1999", "scanner": "scanner-primary", "fingerprint": "a92911c8421687eb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-caebe637f1161911", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/tokyo/page.tsx:995"}, "properties": {"repobilityId": "763d168e23bd0074", "scanner": "scanner-primary", "fingerprint": "caebe637f1161911", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-805a64e869e73660", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/sugamo/page.tsx:465"}, "properties": {"repobilityId": "3f0184292351b324", "scanner": "scanner-primary", "fingerprint": "805a64e869e73660", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b4a961a7e7f21278", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/nagoya/page.tsx:845"}, "properties": {"repobilityId": "64ec29de5ba262fd", "scanner": "scanner-primary", "fingerprint": "b4a961a7e7f21278", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8066ef06feff9e78", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/niigata/page.tsx:842"}, "properties": {"repobilityId": "60ea281a15e148cc", "scanner": "scanner-primary", "fingerprint": "8066ef06feff9e78", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3ea9796c01097103", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/ogikubo/page.tsx:402"}, "properties": {"repobilityId": "05200d59cdd1c0ee", "scanner": "scanner-primary", "fingerprint": "3ea9796c01097103", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-24085d0f01215d2d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/oshiage/page.tsx:297"}, "properties": {"repobilityId": "6d7e802da5bb9c59", "scanner": "scanner-primary", "fingerprint": "24085d0f01215d2d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d30fa447f3b58ac3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/ochanomizu/page.tsx:359"}, "properties": {"repobilityId": "565a5d058b4a2bf6", "scanner": "scanner-primary", "fingerprint": "d30fa447f3b58ac3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7826fe94f7061347", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/area/chiba/page.tsx:951"}, "properties": {"repobilityId": "796243a516cadde2", "scanner": "scanner-primary", "fingerprint": "7826fe94f7061347", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-86eb19c7392623a4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/articles/[slug]/page.tsx:100"}, "properties": {"repobilityId": "a8e1ee45b5deffcb", "scanner": "scanner-primary", "fingerprint": "86eb19c7392623a4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0b7d89b7763678be", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/FAQSchema.tsx:27"}, "properties": {"repobilityId": "cafbb95332a72200", "scanner": "scanner-primary", "fingerprint": "0b7d89b7763678be", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/FAQSchema.tsx"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-23cd7d5f071ce13d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/BreadcrumbSchema.tsx:25"}, "properties": {"repobilityId": "7e70b409934ab884", "scanner": "scanner-primary", "fingerprint": "23cd7d5f071ce13d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/BreadcrumbSchema.tsx"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-b6cba4fd7e5d914b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/layout.tsx:132"}, "properties": {"repobilityId": "69d4743587f721a0", "scanner": "scanner-primary", "fingerprint": "b6cba4fd7e5d914b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/layout.tsx"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-f1f731d439d40350", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/kobe/page.tsx:888"}, "properties": {"repobilityId": "2c11319e1f5783e2", "scanner": "scanner-primary", "fingerprint": "f1f731d439d40350", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/kobe/page.tsx"}, "region": {"startLine": 888}}}]}, {"ruleId": "scanner-2df0764ce3fd8e5b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/nishi-ogikubo/page.tsx:411"}, "properties": {"repobilityId": "33217d8848bfb8a7", "scanner": "scanner-primary", "fingerprint": "2df0764ce3fd8e5b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/nishi-ogikubo/page.tsx"}, "region": {"startLine": 411}}}]}, {"ruleId": "scanner-966be8953302c99a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/shin-okubo/page.tsx:497"}, "properties": {"repobilityId": "b457fedf30e9979d", "scanner": "scanner-primary", "fingerprint": "966be8953302c99a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/shin-okubo/page.tsx"}, "region": {"startLine": 497}}}]}, {"ruleId": "scanner-590013c58056b992", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/hiroshima/page.tsx:914"}, "properties": {"repobilityId": "757ac52f96e35c1e", "scanner": "scanner-primary", "fingerprint": "590013c58056b992", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/hiroshima/page.tsx"}, "region": {"startLine": 914}}}]}, {"ruleId": "scanner-17719cc17423d4bb", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/sapporo/page.tsx:964"}, "properties": {"repobilityId": "21d8fe0796ab211c", "scanner": "scanner-primary", "fingerprint": "17719cc17423d4bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/sapporo/page.tsx"}, "region": {"startLine": 964}}}]}, {"ruleId": "scanner-1a022d028a8e1ec6", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/sendai/page.tsx:957"}, "properties": {"repobilityId": "0c5e001261bc1f45", "scanner": "scanner-primary", "fingerprint": "1a022d028a8e1ec6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/sendai/page.tsx"}, "region": {"startLine": 957}}}]}, {"ruleId": "scanner-ad168cf585540e55", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/tokyo/page.tsx:995"}, "properties": {"repobilityId": "8a69a3b735abc6b5", "scanner": "scanner-primary", "fingerprint": "ad168cf585540e55", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/tokyo/page.tsx"}, "region": {"startLine": 995}}}]}, {"ruleId": "scanner-eb3fe4793a3b0dcf", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/sugamo/page.tsx:465"}, "properties": {"repobilityId": "214722cea9d4998f", "scanner": "scanner-primary", "fingerprint": "eb3fe4793a3b0dcf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/sugamo/page.tsx"}, "region": {"startLine": 465}}}]}, {"ruleId": "scanner-ea22a20c8b402335", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/nagoya/page.tsx:845"}, "properties": {"repobilityId": "968899a1ebcb7f36", "scanner": "scanner-primary", "fingerprint": "ea22a20c8b402335", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/nagoya/page.tsx"}, "region": {"startLine": 845}}}]}, {"ruleId": "scanner-bbee4b869ddc2f72", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/niigata/page.tsx:842"}, "properties": {"repobilityId": "ca0dafbfedd4dbd4", "scanner": "scanner-primary", "fingerprint": "bbee4b869ddc2f72", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/niigata/page.tsx"}, "region": {"startLine": 842}}}]}, {"ruleId": "scanner-44bc45eab02debc0", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/ogikubo/page.tsx:402"}, "properties": {"repobilityId": "a349f43a0596829f", "scanner": "scanner-primary", "fingerprint": "44bc45eab02debc0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/ogikubo/page.tsx"}, "region": {"startLine": 402}}}]}, {"ruleId": "scanner-f358aa0bf456c726", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/oshiage/page.tsx:297"}, "properties": {"repobilityId": "f6ac9a4225f014f1", "scanner": "scanner-primary", "fingerprint": "f358aa0bf456c726", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/oshiage/page.tsx"}, "region": {"startLine": 297}}}]}, {"ruleId": "scanner-eb808e8fbfb97876", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/ochanomizu/page.tsx:359"}, "properties": {"repobilityId": "c444e5b0269c865a", "scanner": "scanner-primary", "fingerprint": "eb808e8fbfb97876", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/ochanomizu/page.tsx"}, "region": {"startLine": 359}}}]}, {"ruleId": "scanner-15839e5212da1623", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/area/chiba/page.tsx:951"}, "properties": {"repobilityId": "4456ddd16732acbf", "scanner": "scanner-primary", "fingerprint": "15839e5212da1623", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/area/chiba/page.tsx"}, "region": {"startLine": 951}}}]}, {"ruleId": "scanner-7afbdcbd091a0080", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/articles/[slug]/page.tsx:100"}, "properties": {"repobilityId": "d420bfac8f250674", "scanner": "scanner-primary", "fingerprint": "7afbdcbd091a0080", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/articles/[slug]/page.tsx"}, "region": {"startLine": 100}}}]}, {"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-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-63a22f2b27d9d89b", "level": "note", "message": {"text": "Very large file: app/page.tsx (1185 lines)"}, "properties": {"repobilityId": "5e5eaf124a1a5246", "scanner": "scanner-primary", "fingerprint": "63a22f2b27d9d89b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-55469205e0d74ccd", "level": "note", "message": {"text": "Very large file: app/area/akasaka/page.tsx (941 lines)"}, "properties": {"repobilityId": "a9347d5a98c430d6", "scanner": "scanner-primary", "fingerprint": "55469205e0d74ccd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-643c902e7a65867a", "level": "note", "message": {"text": "Very large file: app/area/takadanobaba/page.tsx (1083 lines)"}, "properties": {"repobilityId": "f47ea3a0c9b21429", "scanner": "scanner-primary", "fingerprint": "643c902e7a65867a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-df52b1cf533487a9", "level": "note", "message": {"text": "Very large file: app/area/seijo-gakuenmae/page.tsx (885 lines)"}, "properties": {"repobilityId": "604b38586989fc97", "scanner": "scanner-primary", "fingerprint": "df52b1cf533487a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c514e181e0597ccf", "level": "note", "message": {"text": "Very large file: app/area/kobe/page.tsx (917 lines)"}, "properties": {"repobilityId": "5b6a91cb01341c65", "scanner": "scanner-primary", "fingerprint": "c514e181e0597ccf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3518ab252576b32c", "level": "note", "message": {"text": "Very large file: app/area/nishi-ogikubo/page.tsx (888 lines)"}, "properties": {"repobilityId": "5c8537d7e799c6e6", "scanner": "scanner-primary", "fingerprint": "3518ab252576b32c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-69641db65dcd0f51", "level": "note", "message": {"text": "Very large file: app/area/shin-okubo/page.tsx (970 lines)"}, "properties": {"repobilityId": "6dbf20817c06af6c", "scanner": "scanner-primary", "fingerprint": "69641db65dcd0f51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c7a1a715f1988e27", "level": "note", "message": {"text": "Very large file: app/area/hiroshima/page.tsx (943 lines)"}, "properties": {"repobilityId": "6a94e0d8f2aaa68f", "scanner": "scanner-primary", "fingerprint": "c7a1a715f1988e27", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dde45017d2f855a3", "level": "note", "message": {"text": "Very large file: app/area/tokyo-station/page.tsx (984 lines)"}, "properties": {"repobilityId": "da17eaf839f6e534", "scanner": "scanner-primary", "fingerprint": "dde45017d2f855a3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4d7ab15b09e2053a", "level": "note", "message": {"text": "Very large file: app/area/sangenjaya/page.tsx (1108 lines)"}, "properties": {"repobilityId": "de353059979ebec0", "scanner": "scanner-primary", "fingerprint": "4d7ab15b09e2053a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-be6f72f36503ebc7", "level": "note", "message": {"text": "Very large file: app/area/kinshicho/page.tsx (1244 lines)"}, "properties": {"repobilityId": "66acdccfbe5e1fd4", "scanner": "scanner-primary", "fingerprint": "be6f72f36503ebc7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-16fdb5b52450f43c", "level": "note", "message": {"text": "Very large file: app/area/asakusa/page.tsx (914 lines)"}, "properties": {"repobilityId": "84a3a9ab64772e9f", "scanner": "scanner-primary", "fingerprint": "16fdb5b52450f43c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-80bc76df0fe9bb9e", "level": "note", "message": {"text": "Very large file: app/area/akihabara/page.tsx (888 lines)"}, "properties": {"repobilityId": "5298eff16784a23c", "scanner": "scanner-primary", "fingerprint": "80bc76df0fe9bb9e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aa50751b94dd713a", "level": "note", "message": {"text": "Very large file: app/area/sapporo/page.tsx (994 lines)"}, "properties": {"repobilityId": "7702af455e7071b3", "scanner": "scanner-primary", "fingerprint": "aa50751b94dd713a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-84e278374e2f1821", "level": "note", "message": {"text": "Very large file: app/area/okinawa/page.tsx (1256 lines)"}, "properties": {"repobilityId": "3a29f84bbd055d8e", "scanner": "scanner-primary", "fingerprint": "84e278374e2f1821", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ae9c9c1e2d90cc6d", "level": "note", "message": {"text": "Very large file: app/area/sendai/page.tsx (986 lines)"}, "properties": {"repobilityId": "7f4513ba0f596796", "scanner": "scanner-primary", "fingerprint": "ae9c9c1e2d90cc6d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-012d62c38c1ca5c4", "level": "note", "message": {"text": "Very large file: app/area/tokyo/page.tsx (1024 lines)"}, "properties": {"repobilityId": "133373d62e98c21a", "scanner": "scanner-primary", "fingerprint": "012d62c38c1ca5c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6bf88a912e1e017b", "level": "note", "message": {"text": "Very large file: app/area/sugamo/page.tsx (935 lines)"}, "properties": {"repobilityId": "8d7e59a9c216fc82", "scanner": "scanner-primary", "fingerprint": "6bf88a912e1e017b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-97f79dd1001e5e28", "level": "note", "message": {"text": "Very large file: app/area/esaka/page.tsx (941 lines)"}, "properties": {"repobilityId": "c0f3dcdcbe4d0cfd", "scanner": "scanner-primary", "fingerprint": "97f79dd1001e5e28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0de5cbdc8caf78bc", "level": "note", "message": {"text": "Very large file: app/area/yoyogi/page.tsx (899 lines)"}, "properties": {"repobilityId": "e002ce86b2599f42", "scanner": "scanner-primary", "fingerprint": "0de5cbdc8caf78bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b44650c40abcf98b", "level": "note", "message": {"text": "Very large file: app/area/shimokitazawa/page.tsx (947 lines)"}, "properties": {"repobilityId": "d3e055cd4aabc7ce", "scanner": "scanner-primary", "fingerprint": "b44650c40abcf98b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7f214810fbd97cd4", "level": "note", "message": {"text": "Very large file: app/area/yokohama/page.tsx (965 lines)"}, "properties": {"repobilityId": "700a70bbd054fe77", "scanner": "scanner-primary", "fingerprint": "7f214810fbd97cd4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8db76ef78cd7b0c5", "level": "note", "message": {"text": "Very large file: app/area/asagaya/page.tsx (866 lines)"}, "properties": {"repobilityId": "8f740394caac565d", "scanner": "scanner-primary", "fingerprint": "8db76ef78cd7b0c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5f605df0bf90216f", "level": "note", "message": {"text": "Very large file: app/area/shinjuku/page.tsx (1212 lines)"}, "properties": {"repobilityId": "06fb06e6880b199f", "scanner": "scanner-primary", "fingerprint": "5f605df0bf90216f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bbc24387fd6be1e5", "level": "note", "message": {"text": "Very large file: app/area/nagoya/page.tsx (875 lines)"}, "properties": {"repobilityId": "ff042c0cf37520f4", "scanner": "scanner-primary", "fingerprint": "bbc24387fd6be1e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b711818e0f3e196b", "level": "note", "message": {"text": "Very large file: app/area/koenji/page.tsx (1096 lines)"}, "properties": {"repobilityId": "5947e68cf22f74de", "scanner": "scanner-primary", "fingerprint": "b711818e0f3e196b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-db058ce063274a1f", "level": "note", "message": {"text": "Very large file: app/area/tamachi/page.tsx (848 lines)"}, "properties": {"repobilityId": "ae9af1588a9cf0d8", "scanner": "scanner-primary", "fingerprint": "db058ce063274a1f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-650dbd77cbe3a1c4", "level": "note", "message": {"text": "Very large file: app/area/omiya/page.tsx (970 lines)"}, "properties": {"repobilityId": "2e2696104448686e", "scanner": "scanner-primary", "fingerprint": "650dbd77cbe3a1c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aa125c6a8c6970df", "level": "note", "message": {"text": "Very large file: app/area/niigata/page.tsx (872 lines)"}, "properties": {"repobilityId": "24047e852ea30193", "scanner": "scanner-primary", "fingerprint": "aa125c6a8c6970df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a28906a6bb0ecf3d", "level": "note", "message": {"text": "Very large file: app/area/toritsu-daigaku/page.tsx (1154 lines)"}, "properties": {"repobilityId": "8b0aa90fa222a5f9", "scanner": "scanner-primary", "fingerprint": "a28906a6bb0ecf3d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b48deaf2010e5f90", "level": "note", "message": {"text": "Very large file: app/area/shizuoka/page.tsx (950 lines)"}, "properties": {"repobilityId": "dfdf5728ea3efbb4", "scanner": "scanner-primary", "fingerprint": "b48deaf2010e5f90", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d4915d708abd298e", "level": "note", "message": {"text": "Very large file: app/area/ebisu/page.tsx (963 lines)"}, "properties": {"repobilityId": "8405f8e3dad7ecbc", "scanner": "scanner-primary", "fingerprint": "d4915d708abd298e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ee262d2fdce57267", "level": "note", "message": {"text": "Very large file: app/area/okayama/page.tsx (937 lines)"}, "properties": {"repobilityId": "1350e74dd1b2bcba", "scanner": "scanner-primary", "fingerprint": "ee262d2fdce57267", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a99170f6ed39a7d2", "level": "note", "message": {"text": "Very large file: app/area/yoyogi-uehara/page.tsx (837 lines)"}, "properties": {"repobilityId": "11c559a9ef9afb0c", "scanner": "scanner-primary", "fingerprint": "a99170f6ed39a7d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8dc7540dbff4f7c2", "level": "note", "message": {"text": "Very large file: app/area/ogikubo/page.tsx (878 lines)"}, "properties": {"repobilityId": "a20ce73d9a082156", "scanner": "scanner-primary", "fingerprint": "8dc7540dbff4f7c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-63a9731667b1f1bc", "level": "note", "message": {"text": "Very large file: app/area/shimbashi/page.tsx (994 lines)"}, "properties": {"repobilityId": "70581f451df47f4b", "scanner": "scanner-primary", "fingerprint": "63a9731667b1f1bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1a1619d1d5700a5c", "level": "note", "message": {"text": "Very large file: app/area/ochanomizu/page.tsx (827 lines)"}, "properties": {"repobilityId": "b85fd7dc213a29a5", "scanner": "scanner-primary", "fingerprint": "1a1619d1d5700a5c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d2f09f9026a7f35", "level": "note", "message": {"text": "Very large file: app/area/kawasaki/page.tsx (896 lines)"}, "properties": {"repobilityId": "925a50d1df796f08", "scanner": "scanner-primary", "fingerprint": "2d2f09f9026a7f35", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fd137634e99a408d", "level": "note", "message": {"text": "Very large file: app/area/osaka/page.tsx (973 lines)"}, "properties": {"repobilityId": "ad7feda88c1edef3", "scanner": "scanner-primary", "fingerprint": "fd137634e99a408d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2f03e2a7515e7cd7", "level": "note", "message": {"text": "Very large file: app/area/nakano/page.tsx (1100 lines)"}, "properties": {"repobilityId": "7afcd45190205b66", "scanner": "scanner-primary", "fingerprint": "2f03e2a7515e7cd7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4ac4595d1bee3591", "level": "note", "message": {"text": "Very large file: app/area/aoyama-itchome/page.tsx (889 lines)"}, "properties": {"repobilityId": "704ff4011e5730c5", "scanner": "scanner-primary", "fingerprint": "4ac4595d1bee3591", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d638481fa290942", "level": "note", "message": {"text": "Very large file: app/area/suidobashi/page.tsx (1057 lines)"}, "properties": {"repobilityId": "c71498bd3e27f021", "scanner": "scanner-primary", "fingerprint": "2d638481fa290942", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ed8accb232f93857", "level": "note", "message": {"text": "Very large file: app/area/chiba/page.tsx (980 lines)"}, "properties": {"repobilityId": "d9db272232cd9298", "scanner": "scanner-primary", "fingerprint": "ed8accb232f93857", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-435813843b867549", "level": "note", "message": {"text": "Very large file: app/area/fujisawa/page.tsx (908 lines)"}, "properties": {"repobilityId": "fada62adf24faa15", "scanner": "scanner-primary", "fingerprint": "435813843b867549", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3fe0f89effbd5277", "level": "note", "message": {"text": "Very large file: app/area/fukuoka/page.tsx (933 lines)"}, "properties": {"repobilityId": "747b13375aaed85e", "scanner": "scanner-primary", "fingerprint": "3fe0f89effbd5277", "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": "e396f0c67ea421a9", "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": "76066e5e417fb85d", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "d8b99d797f35c7b1", "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": "8879c3079e804af9", "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": "ee292b3fec6026fa", "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": "dfab8415e77d1ee8", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "07fdcc4d2e49a5be", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "29d05e3627b4a1d6", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "298ece15b44a59b5", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "25bc43d63d8e03aa", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "ea0a1488bf2b1c86", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "7547eae1fdfe08db", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "f1b6d2ca332e7109", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}