{"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-a52c4a897d3c5ec1", "name": "Possibly dead Python function: slugify", "shortDescription": {"text": "Possibly dead Python function: slugify"}, "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-722f344aabc66ce4", "name": "Possibly dead Python function: http_update_field", "shortDescription": {"text": "Possibly dead Python function: http_update_field"}, "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-5b8f6424bf36482b", "name": "Stray `console.log` in TS/JS \u2014 generate_sql.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 generate_sql.js:30"}, "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-9934ff3e2b2c309b", "name": "Stray `console.log` in TS/JS \u2014 check_db.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_db.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-39524ecc92269118", "name": "Stray `console.log` in TS/JS \u2014 fix_timezone_crear.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fix_timezone_crear.js:51"}, "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-4e4f25f26f732d31", "name": "Stray `console.log` in TS/JS \u2014 seed.js:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 seed.js:154"}, "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-419314a546268124", "name": "Stray `console.log` in TS/JS \u2014 update_ghl_durations.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 update_ghl_durations.js:96"}, "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-7176e5d95d18d844", "name": "Runtime dotenv file present in repo: .env", "shortDescription": {"text": "Runtime dotenv file present in repo: .env"}, "fullDescription": {"text": "`.env` looks like a runtime dotenv file. It contains secret-looking assignments for VITE_SUPABASE_ANON_KEY. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-400403778f555b91", "name": "Possible secret in cleanup_calendars.py", "shortDescription": {"text": "Possible secret in cleanup_calendars.py"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3cdcb6aa104dea9d", "name": "Possible secret in create_carolina_calendars.py", "shortDescription": {"text": "Possible secret in create_carolina_calendars.py"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-37db6e59c7fd7f7c", "name": "Possible secret in update_laura_calendars.py", "shortDescription": {"text": "Possible secret in update_laura_calendars.py"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-60b76b7675d662b4", "name": "Insecure pattern 'eval_used' in generate_sql.js:15", "shortDescription": {"text": "Insecure pattern 'eval_used' in generate_sql.js:15"}, "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-40c0db191a51d29c", "name": "Possible secret in update_luzaida_calendars.py", "shortDescription": {"text": "Possible secret in update_luzaida_calendars.py"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 65 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 213 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 17 placeholder/mock markers across 3 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-505bc666a82f9849", "name": "Agent instruction/config may expose a secret: .claude/settings.local.json", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/settings.local.json"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eebc068595b6f514", "name": "Network/subprocess call without timeout or try/except \u2014 create_carolina_calendars.py:166", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 create_carolina_calendars.py:166"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c4fe1762450264b", "name": "Network/subprocess call without timeout or try/except \u2014 update_laura_calendars.py:92", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 update_laura_calendars.py:92"}, "fullDescription": {"text": "`requests.put(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-32f5baeed0eea6ce", "name": "Legacy-named symbol `abc_master_glow_spray_serum_teaser_v1` in download_images.mjs:21", "shortDescription": {"text": "Legacy-named symbol `abc_master_glow_spray_serum_teaser_v1` in download_images.mjs:21"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-498df06122929dfb", "name": "Network/subprocess call without timeout or try/except \u2014 update_luzaida_calendars.py:110", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 update_luzaida_calendars.py:110"}, "fullDescription": {"text": "`requests.put(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e2171f3e0207bf05", "name": "Network/subprocess call without timeout or try/except \u2014 deploy_velik_ghl.py:406", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 deploy_velik_ghl.py:406"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e921a5416b8c0367", "name": "Network/subprocess call without timeout or try/except \u2014 deploy_velik_assistant.py:139", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 deploy_velik_assistant.py:139"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-248278f5be9be3cc", "name": "Network/subprocess call without timeout or try/except \u2014 fix_verificar.py:7", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 fix_verificar.py:7"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3d47341344301241", "name": "Frontend route `/admin` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `/admin` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-408de51c8eb99780", "name": "Frontend route `pedidos` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `pedidos` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-58cf0c2c1354e7c3", "name": "Frontend route `inventario` has no Link/navigate to it \u2014 src/App.tsx", "shortDescription": {"text": "Frontend route `inventario` has no Link/navigate to it \u2014 src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/19071"}, "properties": {"repository": "scmejia010-afk/velik-beauty-house", "repoUrl": "https://github.com/scmejia010-afk/velik-beauty-house", "branch": "main"}, "results": [{"ruleId": "scanner-a52c4a897d3c5ec1", "level": "note", "message": {"text": "Possibly dead Python function: slugify"}, "properties": {"repobilityId": "567b248aeba18f49", "scanner": "scanner-primary", "fingerprint": "a52c4a897d3c5ec1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "create_carolina_calendars.py:129"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-722f344aabc66ce4", "level": "note", "message": {"text": "Possibly dead Python function: http_update_field"}, "properties": {"repobilityId": "8d2fda32dcbd4b43", "scanner": "scanner-primary", "fingerprint": "722f344aabc66ce4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deploy_velik_ghl.py:177"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5b8f6424bf36482b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 generate_sql.js:30"}, "properties": {"repobilityId": "6bf0e92e7ddc0913", "scanner": "scanner-primary", "fingerprint": "5b8f6424bf36482b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9934ff3e2b2c309b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_db.js:12"}, "properties": {"repobilityId": "4575843e4166c98b", "scanner": "scanner-primary", "fingerprint": "9934ff3e2b2c309b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39524ecc92269118", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fix_timezone_crear.js:51"}, "properties": {"repobilityId": "46c08737078897de", "scanner": "scanner-primary", "fingerprint": "39524ecc92269118", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e4f25f26f732d31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 seed.js:154"}, "properties": {"repobilityId": "9e9ae1b5c1626834", "scanner": "scanner-primary", "fingerprint": "4e4f25f26f732d31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-419314a546268124", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 update_ghl_durations.js:96"}, "properties": {"repobilityId": "f7ef262faf7e7777", "scanner": "scanner-primary", "fingerprint": "419314a546268124", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7176e5d95d18d844", "level": "error", "message": {"text": "Runtime dotenv file present in repo: .env"}, "properties": {"repobilityId": "4b9c737a445874ba", "scanner": "scanner-primary", "fingerprint": "7176e5d95d18d844", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env", "env_file_with_secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".env"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-400403778f555b91", "level": "error", "message": {"text": "Possible secret in cleanup_calendars.py"}, "properties": {"repobilityId": "931810463cb82fa6", "scanner": "scanner-primary", "fingerprint": "400403778f555b91", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cleanup_calendars.py"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-3cdcb6aa104dea9d", "level": "error", "message": {"text": "Possible secret in create_carolina_calendars.py"}, "properties": {"repobilityId": "ba560861e70c0ec6", "scanner": "scanner-primary", "fingerprint": "3cdcb6aa104dea9d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "create_carolina_calendars.py"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-37db6e59c7fd7f7c", "level": "error", "message": {"text": "Possible secret in update_laura_calendars.py"}, "properties": {"repobilityId": "edbacf4562d31bf1", "scanner": "scanner-primary", "fingerprint": "37db6e59c7fd7f7c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "update_laura_calendars.py"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-60b76b7675d662b4", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in generate_sql.js:15"}, "properties": {"repobilityId": "f3b4058d888493e4", "scanner": "scanner-primary", "fingerprint": "60b76b7675d662b4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "generate_sql.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-40c0db191a51d29c", "level": "error", "message": {"text": "Possible secret in update_luzaida_calendars.py"}, "properties": {"repobilityId": "fee2734c2ee0710f", "scanner": "scanner-primary", "fingerprint": "40c0db191a51d29c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "update_luzaida_calendars.py"}, "region": {"startLine": 5}}}]}, {"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-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": "c0d9feeb35bca114", "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": "252f4f3242ab25a1", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "62e4b15a8249badf", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "9c1f5a4c14b79cea", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "e542fba67c3239d0", "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": "de128b8b8e401c72", "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": "b8ee11213a4e2fa1", "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": "d771d195b977d249", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-505bc666a82f9849", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/settings.local.json"}, "properties": {"repobilityId": "777970b0fce0a93b", "scanner": "scanner-primary", "fingerprint": "505bc666a82f9849", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.local.json"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-eebc068595b6f514", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 create_carolina_calendars.py:166"}, "properties": {"repobilityId": "d1e7073876a383e9", "scanner": "scanner-primary", "fingerprint": "eebc068595b6f514", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1c4fe1762450264b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 update_laura_calendars.py:92"}, "properties": {"repobilityId": "037641164e47f6cd", "scanner": "scanner-primary", "fingerprint": "1c4fe1762450264b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-32f5baeed0eea6ce", "level": "note", "message": {"text": "Legacy-named symbol `abc_master_glow_spray_serum_teaser_v1` in download_images.mjs:21"}, "properties": {"repobilityId": "58bd02c2956d3117", "scanner": "scanner-primary", "fingerprint": "32f5baeed0eea6ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-498df06122929dfb", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 update_luzaida_calendars.py:110"}, "properties": {"repobilityId": "8817b4b2922c1121", "scanner": "scanner-primary", "fingerprint": "498df06122929dfb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e2171f3e0207bf05", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 deploy_velik_ghl.py:406"}, "properties": {"repobilityId": "de56f55c75e69b93", "scanner": "scanner-primary", "fingerprint": "e2171f3e0207bf05", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e921a5416b8c0367", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 deploy_velik_assistant.py:139"}, "properties": {"repobilityId": "bc41693703333872", "scanner": "scanner-primary", "fingerprint": "e921a5416b8c0367", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-248278f5be9be3cc", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 fix_verificar.py:7"}, "properties": {"repobilityId": "0c7000d59f956fcb", "scanner": "scanner-primary", "fingerprint": "248278f5be9be3cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3d47341344301241", "level": "warning", "message": {"text": "Frontend route `/admin` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "3060fc2a800f6a3c", "scanner": "scanner-primary", "fingerprint": "3d47341344301241", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-408de51c8eb99780", "level": "warning", "message": {"text": "Frontend route `pedidos` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "5b0be80100bf4fbd", "scanner": "scanner-primary", "fingerprint": "408de51c8eb99780", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-58cf0c2c1354e7c3", "level": "warning", "message": {"text": "Frontend route `inventario` has no Link/navigate to it \u2014 src/App.tsx"}, "properties": {"repobilityId": "e41c556ab231253e", "scanner": "scanner-primary", "fingerprint": "58cf0c2c1354e7c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}]}]}