{"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-b05334513dac4646", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_utf8.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_utf8.js:14"}, "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-5c1cdca46b252677", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_strings.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_strings.js:8"}, "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-3132cd6b0f67a701", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_json.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_json.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ddd0e66b0bc3cfdb", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_hotpaths.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_hotpaths.js:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7ca17d8789d9f1c", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_sprintf.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_sprintf.js:12"}, "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-de922820363eed50", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_binary.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_binary.js:15"}, "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-13a830de40d96fa8", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_closures.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_closures.js:14"}, "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-0ad2cf99cb292e99", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_oop.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_oop.js:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b0b624220a2e36b", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_binary_trees.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_binary_trees.js:12"}, "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-c48b70464b42ff04", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_functions.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_functions.js:18"}, "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-71ffd817a998377b", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_compute.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_compute.js:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ad2cae3a97ad175", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_startup.js:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_startup.js:1"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8578c440a360e4eb", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_regex.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_regex.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29b79acc269c280f", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_pipeline.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_pipeline.js:6"}, "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-8e7f487fe1725879", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_data.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_data.js:19"}, "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-e582b84b7c786f57", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_exceptions.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_exceptions.js:10"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4db310374df85b2", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_sort.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_sort.js:12"}, "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-36334fc0c98aa667", "name": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_array_hash.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_array_hash.js:8"}, "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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-807657a8e2bbe51f", "name": "Insecure pattern 'eval_used' in CLAUDE.md:1157", "shortDescription": {"text": "Insecure pattern 'eval_used' in CLAUDE.md:1157"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6e9c664a2e251b4", "name": "Insecure pattern 'eval_used' in lib/perl5/README.md:44", "shortDescription": {"text": "Insecure pattern 'eval_used' in lib/perl5/README.md:44"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "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-ed5ad8b282669ad7", "name": "Very large file: t/perl2strada/run_tests.sh (3280 lines)", "shortDescription": {"text": "Very large file: t/perl2strada/run_tests.sh (3280 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 47 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 106 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: 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": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing 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-7d4525c1263263c2", "name": "Commented-code block (5 lines) in benchmarks/bench_hotpaths.js:43", "shortDescription": {"text": "Commented-code block (5 lines) in benchmarks/bench_hotpaths.js:43"}, "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-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:\nbenchmarks/bench_oop.py:distance_sq, benchmarks/bench_oop.py:distance_sq\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/20379"}, "properties": {"repository": "strada-lang/strada-lang", "repoUrl": "https://github.com/strada-lang/strada-lang", "branch": "main"}, "results": [{"ruleId": "scanner-b05334513dac4646", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_utf8.js:14"}, "properties": {"repobilityId": "657ae8da5d52cada", "scanner": "scanner-primary", "fingerprint": "b05334513dac4646", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c1cdca46b252677", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_strings.js:8"}, "properties": {"repobilityId": "eb99dc1b684130c7", "scanner": "scanner-primary", "fingerprint": "5c1cdca46b252677", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3132cd6b0f67a701", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_json.js:22"}, "properties": {"repobilityId": "d47d2c7fdcb5eba7", "scanner": "scanner-primary", "fingerprint": "3132cd6b0f67a701", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ddd0e66b0bc3cfdb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_hotpaths.js:24"}, "properties": {"repobilityId": "5a0d95e6ee923692", "scanner": "scanner-primary", "fingerprint": "ddd0e66b0bc3cfdb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7ca17d8789d9f1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_sprintf.js:12"}, "properties": {"repobilityId": "e7c4551c2f6ba484", "scanner": "scanner-primary", "fingerprint": "b7ca17d8789d9f1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de922820363eed50", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_binary.js:15"}, "properties": {"repobilityId": "6eae854f43f05af6", "scanner": "scanner-primary", "fingerprint": "de922820363eed50", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13a830de40d96fa8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_closures.js:14"}, "properties": {"repobilityId": "a709604f49d9c204", "scanner": "scanner-primary", "fingerprint": "13a830de40d96fa8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ad2cf99cb292e99", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_oop.js:31"}, "properties": {"repobilityId": "8198645a75d6a4c1", "scanner": "scanner-primary", "fingerprint": "0ad2cf99cb292e99", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b0b624220a2e36b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_binary_trees.js:12"}, "properties": {"repobilityId": "7e932b8c20ab3d95", "scanner": "scanner-primary", "fingerprint": "0b0b624220a2e36b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c48b70464b42ff04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_functions.js:18"}, "properties": {"repobilityId": "0628ddf48d0e9d23", "scanner": "scanner-primary", "fingerprint": "c48b70464b42ff04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71ffd817a998377b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_compute.js:13"}, "properties": {"repobilityId": "75b1f60024b0e40c", "scanner": "scanner-primary", "fingerprint": "71ffd817a998377b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ad2cae3a97ad175", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_startup.js:1"}, "properties": {"repobilityId": "2e8bbb6455ee917b", "scanner": "scanner-primary", "fingerprint": "5ad2cae3a97ad175", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8578c440a360e4eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_regex.js:16"}, "properties": {"repobilityId": "db5f4d4e4c63ac73", "scanner": "scanner-primary", "fingerprint": "8578c440a360e4eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29b79acc269c280f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_pipeline.js:6"}, "properties": {"repobilityId": "18fd6fc56abd45fa", "scanner": "scanner-primary", "fingerprint": "29b79acc269c280f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e7f487fe1725879", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_data.js:19"}, "properties": {"repobilityId": "0e454bdc28b55ccd", "scanner": "scanner-primary", "fingerprint": "8e7f487fe1725879", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e582b84b7c786f57", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_exceptions.js:10"}, "properties": {"repobilityId": "b3433d74feb871ba", "scanner": "scanner-primary", "fingerprint": "e582b84b7c786f57", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4db310374df85b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_sort.js:12"}, "properties": {"repobilityId": "35dad43305926b6e", "scanner": "scanner-primary", "fingerprint": "c4db310374df85b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36334fc0c98aa667", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 benchmarks/bench_array_hash.js:8"}, "properties": {"repobilityId": "3da06adc18c12498", "scanner": "scanner-primary", "fingerprint": "36334fc0c98aa667", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-807657a8e2bbe51f", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in CLAUDE.md:1157"}, "properties": {"repobilityId": "c9592072ddaa74b7", "scanner": "scanner-primary", "fingerprint": "807657a8e2bbe51f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 1157}}}]}, {"ruleId": "scanner-d6e9c664a2e251b4", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in lib/perl5/README.md:44"}, "properties": {"repobilityId": "b4c21304f407c3a0", "scanner": "scanner-primary", "fingerprint": "d6e9c664a2e251b4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/perl5/README.md"}, "region": {"startLine": 44}}}]}, {"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-ed5ad8b282669ad7", "level": "note", "message": {"text": "Very large file: t/perl2strada/run_tests.sh (3280 lines)"}, "properties": {"repobilityId": "4848f6c7d98ce0e8", "scanner": "scanner-primary", "fingerprint": "ed5ad8b282669ad7", "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-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "b4ec1537ea099d7f", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "cf5093dae42d9d5f", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "9a5d7c2f3744025d", "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": "85f6aa72face4b82", "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": "fbb2f08a84eecd58", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-7d4525c1263263c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in benchmarks/bench_hotpaths.js:43"}, "properties": {"repobilityId": "8d62d1ed8de84d30", "scanner": "scanner-primary", "fingerprint": "7d4525c1263263c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "3149b59327281fcc", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}