{"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-bf7f7b9236091243", "name": "Possibly dead Python function: showDfInfo", "shortDescription": {"text": "Possibly dead Python function: showDfInfo"}, "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-9e077c978dcfd3dc", "name": "Possibly dead Python function: olsRegression", "shortDescription": {"text": "Possibly dead Python function: olsRegression"}, "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-555f8e19384ffab3", "name": "Possibly dead Python function: rk_model", "shortDescription": {"text": "Possibly dead Python function: rk_model"}, "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-c6a5f6e199bbcfdb", "name": "Possibly dead Python function: staffing_allocations_line_accumulate", "shortDescription": {"text": "Possibly dead Python function: staffing_allocations_line_accumulate"}, "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-c1fd66196929392c", "name": "Possibly dead Python function: remove_comma_dollar", "shortDescription": {"text": "Possibly dead Python function: remove_comma_dollar"}, "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-997ad588dabeb22b", "name": "Possibly dead Python function: identity", "shortDescription": {"text": "Possibly dead Python function: identity"}, "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-aba0e7e295d05e1f", "name": "Possibly dead Python function: to_number_dash_zero", "shortDescription": {"text": "Possibly dead Python function: to_number_dash_zero"}, "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-0f65d0f2f7abd286", "name": "Possibly dead Python function: identity", "shortDescription": {"text": "Possibly dead Python function: identity"}, "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-4a9f84a61b9e64eb", "name": "Possibly dead Python function: transform_complex_field_old", "shortDescription": {"text": "Possibly dead Python function: transform_complex_field_old"}, "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-8173f3e2ded2940e", "name": "Possibly dead Python function: transform_edm_date_to_epoch_days", "shortDescription": {"text": "Possibly dead Python function: transform_edm_date_to_epoch_days"}, "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-1c95e548f03b7d75", "name": "Possibly dead Python function: transform_edm_date_to_millis", "shortDescription": {"text": "Possibly dead Python function: transform_edm_date_to_millis"}, "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-cf9fd95d5c43a30c", "name": "Possibly dead Python function: transform_edm_point_to_pointliteral", "shortDescription": {"text": "Possibly dead Python function: transform_edm_point_to_pointliteral"}, "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-e4dda9e46aa09695", "name": "Possibly dead Python function: transform_edm_multiline_to_multilineliteral", "shortDescription": {"text": "Possibly dead Python function: transform_edm_multiline_to_multilineliteral"}, "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-77881af65fa59631", "name": "Possibly dead Python function: transform_edm_linestring_to_linestring", "shortDescription": {"text": "Possibly dead Python function: transform_edm_linestring_to_linestring"}, "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-1ac292d695830993", "name": "Possibly dead Python function: transform_edm_multipoint_to_multipoint", "shortDescription": {"text": "Possibly dead Python function: transform_edm_multipoint_to_multipoint"}, "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-0e0d48f02ce6a090", "name": "Possibly dead Python function: transform_edm_multipolygon_to_multipolygon", "shortDescription": {"text": "Possibly dead Python function: transform_edm_multipolygon_to_multipolygon"}, "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-7c3c9f4c6603a605", "name": "Possibly dead Python function: transform_complex", "shortDescription": {"text": "Possibly dead Python function: transform_complex"}, "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-fa12efe81bff1d7e", "name": "Possibly dead Python function: title_case", "shortDescription": {"text": "Possibly dead Python function: title_case"}, "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-3536d6ec14ab6b50", "name": "Possibly dead Python function: int_or_null", "shortDescription": {"text": "Possibly dead Python function: int_or_null"}, "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-91a000ad1635862f", "name": "Possibly dead Python function: decimal_or_null", "shortDescription": {"text": "Possibly dead Python function: decimal_or_null"}, "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-bfa8ca95b6baf671", "name": "Possibly dead Python function: program_activity_or_null", "shortDescription": {"text": "Possibly dead Python function: program_activity_or_null"}, "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-50dacb52a750cb22", "name": "Possibly dead Python function: add_access_csv_arguments", "shortDescription": {"text": "Possibly dead Python function: add_access_csv_arguments"}, "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-62fc1ab0eb069fb6", "name": "Possibly dead Python function: export_avro", "shortDescription": {"text": "Possibly dead Python function: export_avro"}, "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-b88db6182c0bca37", "name": "Possibly dead Python function: passthru", "shortDescription": {"text": "Possibly dead Python function: passthru"}, "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-93c82d75fb532aca", "name": "Possibly dead Python function: just_zero", "shortDescription": {"text": "Possibly dead Python function: just_zero"}, "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-d50eb9c75b1e3494", "name": "Possibly dead Python function: to_int", "shortDescription": {"text": "Possibly dead Python function: to_int"}, "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-ff3773347b2ff4e1", "name": "Possibly dead Python function: to_int_or_null", "shortDescription": {"text": "Possibly dead Python function: to_int_or_null"}, "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-d77f74ab57870478", "name": "Stray `console.log` in TS/JS \u2014 docs/contentscripts/scrappers/ospi-stars-reports.js:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/contentscripts/scrappers/ospi-stars-reports.js:112"}, "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-bf945a72b75e9318", "name": "Stray `console.log` in TS/JS \u2014 docs/contentscripts/scrappers/ospi-stars-diag.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/contentscripts/scrappers/ospi-stars-diag.js:70"}, "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-926869d5dc32642a", "name": "Stray `console.log` in TS/JS \u2014 docs/contentscripts/scrappers/ospi-funding-reports.js:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/contentscripts/scrappers/ospi-funding-reports.js:122"}, "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-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-72d34f35b88d7bff", "name": "Very large file: analysis/montecarlo/scenarios.py (1069 lines)", "shortDescription": {"text": "Very large file: analysis/montecarlo/scenarios.py (1069 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 124 source file(s) (ratio 0.01). 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 409 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 15 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-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. 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-60d851e564987d94", "name": "Commented-code block (8 lines) in analyze.py:242", "shortDescription": {"text": "Commented-code block (8 lines) in analyze.py:242"}, "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-e62273f45a3aab5a", "name": "Network/subprocess call without timeout or try/except \u2014 extractors/p223_pdf_batch.py:55", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 extractors/p223_pdf_batch.py:55"}, "fullDescription": {"text": "`subprocess.Popen(...)` 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-54e380e2ef32345c", "name": "Network/subprocess call without timeout or try/except \u2014 extractors/prr/transit/ocr_bundle.py:48", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 extractors/prr/transit/ocr_bundle.py:48"}, "fullDescription": {"text": "`subprocess.run(...)` 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-10c89c030f42a6c9", "name": "Stub function `commit` (body is just `pass`/`return`) \u2014 extractors/purplebook/section_parser.py:102", "shortDescription": {"text": "Stub function `commit` (body is just `pass`/`return`) \u2014 extractors/purplebook/section_parser.py:102"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d2585d316fddf26", "name": "Network/subprocess call without timeout or try/except \u2014 extractors/odata/ospi-odata-load.py:30", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 extractors/odata/ospi-odata-load.py:30"}, "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-43695379e1003d0c", "name": "Legacy-named symbol `transform_complex_field_old` in extractors/odata/odata.py:21", "shortDescription": {"text": "Legacy-named symbol `transform_complex_field_old` in extractors/odata/odata.py: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-25519b1a3a564b9b", "name": "Network/subprocess call without timeout or try/except \u2014 extractors/safs/data_reader.py:122", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 extractors/safs/data_reader.py:122"}, "fullDescription": {"text": "`subprocess.Popen(...)` 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-17af4f137cf122e8", "name": "Commented-code block (5 lines) in extractors/safs/transforms/f19x.py:649", "shortDescription": {"text": "Commented-code block (5 lines) in extractors/safs/transforms/f19x.py:649"}, "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-f46a039a196f4782", "name": "Commented-code block (5 lines) in extractors/stars/filename.py:52", "shortDescription": {"text": "Commented-code block (5 lines) in extractors/stars/filename.py:52"}, "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-ac3c360dcb1f33b3", "name": "Commented-code block (9 lines) in extractors/stars/parsers/operations_allocation_compact.py:31", "shortDescription": {"text": "Commented-code block (9 lines) in extractors/stars/parsers/operations_allocation_compact.py:31"}, "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-d3dbc2ed57f852ac", "name": "Commented-code block (5 lines) in extractors/stars/parsers/kpi.py:48", "shortDescription": {"text": "Commented-code block (5 lines) in extractors/stars/parsers/kpi.py:48"}, "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-c8d6561cd420bc32", "name": "Commented-code block (9 lines) in extractors/stars/parsers/operations_allocation.py:33", "shortDescription": {"text": "Commented-code block (9 lines) in extractors/stars/parsers/operations_allocation.py:33"}, "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-43bb29e756d3b506", "name": "Commented-code block (10 lines) in extractors/stars/parsers/quarterly_district.py:189", "shortDescription": {"text": "Commented-code block (10 lines) in extractors/stars/parsers/quarterly_district.py:189"}, "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-1c86d0b269cd435d", "name": "Commented-code block (7 lines) in docs/contentscripts/scrappers/ospi-stars-reports.js:11", "shortDescription": {"text": "Commented-code block (7 lines) in docs/contentscripts/scrappers/ospi-stars-reports.js:11"}, "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-4042634ae1605f46", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/contentscripts/scrappers/ospi-stars-reports.js:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/contentscripts/scrappers/ospi-stars-reports.js:96"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e6cd57a014b12cd", "name": "Commented-code block (8 lines) in docs/contentscripts/scrappers/ospi-funding-reports.js:11", "shortDescription": {"text": "Commented-code block (8 lines) in docs/contentscripts/scrappers/ospi-funding-reports.js:11"}, "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-1dfd3791406ea56a", "name": "Commented-code block (5 lines) in analysis/montecarlo/scenarios.py:556", "shortDescription": {"text": "Commented-code block (5 lines) in analysis/montecarlo/scenarios.py:556"}, "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-f7c51bd61f7e93a9", "name": "Commented-code block (5 lines) in analysis/montecarlo/rc_seattle.py:138", "shortDescription": {"text": "Commented-code block (5 lines) in analysis/montecarlo/rc_seattle.py:138"}, "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-a21c95a860315ae4", "name": "Commented-code block (5 lines) in analysis/montecarlo/ridership.py:112", "shortDescription": {"text": "Commented-code block (5 lines) in analysis/montecarlo/ridership.py:112"}, "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-732f4cbfa35b41f8", "name": "Commented-code block (6 lines) in analysis/montecarlo/acs_population.py:81", "shortDescription": {"text": "Commented-code block (6 lines) in analysis/montecarlo/acs_population.py:81"}, "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-a339ade43046ac4a", "name": "Network/subprocess call without timeout or try/except \u2014 analysis/montecarlo/acs_population.py:129", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 analysis/montecarlo/acs_population.py:129"}, "fullDescription": {"text": "`urllib.request.urlopen(...)` 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-ccf7a2b97e2acd48", "name": "Network/subprocess call without timeout or try/except \u2014 analysis/montecarlo/section4_seattle.py:89", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 analysis/montecarlo/section4_seattle.py:89"}, "fullDescription": {"text": "`subprocess.run(...)` 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-1a1693e74b04ca38", "name": "Commented-code block (7 lines) in analysis/montecarlo/report.py:71", "shortDescription": {"text": "Commented-code block (7 lines) in analysis/montecarlo/report.py:71"}, "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:\nplot.py:main, analyze.py:main\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-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nextractors/purplebook/section_parser.py:init_context, extractors/purplebook/section_parser.py:init_context, extractors/purplebook/section_parser.py:init_context, extractors/purplebook/section_parser.py:init_context\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-9dad557909b86499", "name": "Near-duplicate function bodies in 10 places", "shortDescription": {"text": "Near-duplicate function bodies in 10 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nextractors/purplebook/section_parser.py:accumulate, extractors/purplebook/section_parser.py:accumulate, extractors/purplebook/section_parser.py:accumulate, extractors/purplebook/section_parser.py:accumulate\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-46969939caf8120b", "name": "Near-duplicate function bodies in 9 places", "shortDescription": {"text": "Near-duplicate function bodies in 9 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nextractors/purplebook/section_parser.py:commit, extractors/purplebook/section_parser.py:commit, extractors/purplebook/section_parser.py:commit, extractors/purplebook/section_parser.py:commit\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:\nextractors/odata/odata.py:transform_complex_field_old, extractors/odata/odata.py:transform_complex_field, extractors/odata/odata.py:transform_complex\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-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:\nextractors/safs/data_reader.py:filename, extractors/safs/data_reader.py:filename, extractors/safs/data_reader.py:filename, extractors/safs/data_reader.py:filename\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/20153"}, "properties": {"repository": "SPS-By-The-Numbers/data-tools", "repoUrl": "https://github.com/SPS-By-The-Numbers/data-tools", "branch": "main"}, "results": [{"ruleId": "scanner-bf7f7b9236091243", "level": "note", "message": {"text": "Possibly dead Python function: showDfInfo"}, "properties": {"repobilityId": "cf227d8b3752ea4f", "scanner": "scanner-primary", "fingerprint": "bf7f7b9236091243", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "analyze.py:14"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9e077c978dcfd3dc", "level": "note", "message": {"text": "Possibly dead Python function: olsRegression"}, "properties": {"repobilityId": "e7cd7b6f68d889dc", "scanner": "scanner-primary", "fingerprint": "9e077c978dcfd3dc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "analyze.py:100"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-555f8e19384ffab3", "level": "note", "message": {"text": "Possibly dead Python function: rk_model"}, "properties": {"repobilityId": "ea9f0a3bdaef5307", "scanner": "scanner-primary", "fingerprint": "555f8e19384ffab3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "analyze.py:113"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c6a5f6e199bbcfdb", "level": "note", "message": {"text": "Possibly dead Python function: staffing_allocations_line_accumulate"}, "properties": {"repobilityId": "2427e93bfcca4be6", "scanner": "scanner-primary", "fingerprint": "c6a5f6e199bbcfdb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/purplebook.py:13"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c1fd66196929392c", "level": "note", "message": {"text": "Possibly dead Python function: remove_comma_dollar"}, "properties": {"repobilityId": "cce7185a642e79f1", "scanner": "scanner-primary", "fingerprint": "c1fd66196929392c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/budget/extractor.py:27"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-997ad588dabeb22b", "level": "note", "message": {"text": "Possibly dead Python function: identity"}, "properties": {"repobilityId": "1d1f03ccf7f11af6", "scanner": "scanner-primary", "fingerprint": "997ad588dabeb22b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/budget/line_tools.py:26"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aba0e7e295d05e1f", "level": "note", "message": {"text": "Possibly dead Python function: to_number_dash_zero"}, "properties": {"repobilityId": "dc325dd4568bcfb9", "scanner": "scanner-primary", "fingerprint": "aba0e7e295d05e1f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/budget/line_tools.py:35"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f65d0f2f7abd286", "level": "note", "message": {"text": "Possibly dead Python function: identity"}, "properties": {"repobilityId": "1d1f03ccf7f11af6", "scanner": "scanner-primary", "fingerprint": "0f65d0f2f7abd286", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/odata/odata.py:12"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a9f84a61b9e64eb", "level": "note", "message": {"text": "Possibly dead Python function: transform_complex_field_old"}, "properties": {"repobilityId": "63d6eb0c4b54fc59", "scanner": "scanner-primary", "fingerprint": "4a9f84a61b9e64eb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/odata/odata.py:21"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8173f3e2ded2940e", "level": "note", "message": {"text": "Possibly dead Python function: transform_edm_date_to_epoch_days"}, "properties": {"repobilityId": "f8ad1e977676cd18", "scanner": "scanner-primary", "fingerprint": "8173f3e2ded2940e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/odata/odata.py:39"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1c95e548f03b7d75", "level": "note", "message": {"text": "Possibly dead Python function: transform_edm_date_to_millis"}, "properties": {"repobilityId": "43fbc9f6eb03fbfe", "scanner": "scanner-primary", "fingerprint": "1c95e548f03b7d75", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/odata/odata.py:52"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cf9fd95d5c43a30c", "level": "note", "message": {"text": "Possibly dead Python function: transform_edm_point_to_pointliteral"}, "properties": {"repobilityId": "1ff2f525289a5f36", "scanner": "scanner-primary", "fingerprint": "cf9fd95d5c43a30c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/odata/odata.py:59"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e4dda9e46aa09695", "level": "note", "message": {"text": "Possibly dead Python function: transform_edm_multiline_to_multilineliteral"}, "properties": {"repobilityId": "996512e04d09d4c9", "scanner": "scanner-primary", "fingerprint": "e4dda9e46aa09695", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/odata/odata.py:69"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-77881af65fa59631", "level": "note", "message": {"text": "Possibly dead Python function: transform_edm_linestring_to_linestring"}, "properties": {"repobilityId": "0c668f3d42466002", "scanner": "scanner-primary", "fingerprint": "77881af65fa59631", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/odata/odata.py:83"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ac292d695830993", "level": "note", "message": {"text": "Possibly dead Python function: transform_edm_multipoint_to_multipoint"}, "properties": {"repobilityId": "cb370ff74c6e7115", "scanner": "scanner-primary", "fingerprint": "1ac292d695830993", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/odata/odata.py:96"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0e0d48f02ce6a090", "level": "note", "message": {"text": "Possibly dead Python function: transform_edm_multipolygon_to_multipolygon"}, "properties": {"repobilityId": "7e06deb742cd1e96", "scanner": "scanner-primary", "fingerprint": "0e0d48f02ce6a090", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/odata/odata.py:109"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c3c9f4c6603a605", "level": "note", "message": {"text": "Possibly dead Python function: transform_complex"}, "properties": {"repobilityId": "bd71a4533581d06f", "scanner": "scanner-primary", "fingerprint": "7c3c9f4c6603a605", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/odata/odata.py:344"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fa12efe81bff1d7e", "level": "note", "message": {"text": "Possibly dead Python function: title_case"}, "properties": {"repobilityId": "add3c023013ed994", "scanner": "scanner-primary", "fingerprint": "fa12efe81bff1d7e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/safs/access_csv.py:15"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3536d6ec14ab6b50", "level": "note", "message": {"text": "Possibly dead Python function: int_or_null"}, "properties": {"repobilityId": "80cd5f9026ddec33", "scanner": "scanner-primary", "fingerprint": "3536d6ec14ab6b50", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/safs/access_csv.py:20"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91a000ad1635862f", "level": "note", "message": {"text": "Possibly dead Python function: decimal_or_null"}, "properties": {"repobilityId": "e5860b7ec0e54c16", "scanner": "scanner-primary", "fingerprint": "91a000ad1635862f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/safs/access_csv.py:29"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bfa8ca95b6baf671", "level": "note", "message": {"text": "Possibly dead Python function: program_activity_or_null"}, "properties": {"repobilityId": "8654c21f42905254", "scanner": "scanner-primary", "fingerprint": "bfa8ca95b6baf671", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/safs/access_csv.py:38"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-50dacb52a750cb22", "level": "note", "message": {"text": "Possibly dead Python function: add_access_csv_arguments"}, "properties": {"repobilityId": "1c3d26713d78571b", "scanner": "scanner-primary", "fingerprint": "50dacb52a750cb22", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/safs/access_csv.py:96"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-62fc1ab0eb069fb6", "level": "note", "message": {"text": "Possibly dead Python function: export_avro"}, "properties": {"repobilityId": "55196dc265ef642e", "scanner": "scanner-primary", "fingerprint": "62fc1ab0eb069fb6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/safs/data_reader.py:289"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b88db6182c0bca37", "level": "note", "message": {"text": "Possibly dead Python function: passthru"}, "properties": {"repobilityId": "4961bcb5ba6af186", "scanner": "scanner-primary", "fingerprint": "b88db6182c0bca37", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/safs/avro_schema.py:63"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-93c82d75fb532aca", "level": "note", "message": {"text": "Possibly dead Python function: just_zero"}, "properties": {"repobilityId": "8be5bf1073e7fde0", "scanner": "scanner-primary", "fingerprint": "93c82d75fb532aca", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/safs/avro_schema.py:89"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d50eb9c75b1e3494", "level": "note", "message": {"text": "Possibly dead Python function: to_int"}, "properties": {"repobilityId": "1017742aa50f0eea", "scanner": "scanner-primary", "fingerprint": "d50eb9c75b1e3494", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/safs/avro_schema.py:94"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ff3773347b2ff4e1", "level": "note", "message": {"text": "Possibly dead Python function: to_int_or_null"}, "properties": {"repobilityId": "740fc10432826d0a", "scanner": "scanner-primary", "fingerprint": "ff3773347b2ff4e1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extractors/safs/avro_schema.py:100"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d77f74ab57870478", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/contentscripts/scrappers/ospi-stars-reports.js:112"}, "properties": {"repobilityId": "49e18bb096da1fbe", "scanner": "scanner-primary", "fingerprint": "d77f74ab57870478", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf945a72b75e9318", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/contentscripts/scrappers/ospi-stars-diag.js:70"}, "properties": {"repobilityId": "02f7f084e9bb16dc", "scanner": "scanner-primary", "fingerprint": "bf945a72b75e9318", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-926869d5dc32642a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/contentscripts/scrappers/ospi-funding-reports.js:122"}, "properties": {"repobilityId": "080ce564200ebdbe", "scanner": "scanner-primary", "fingerprint": "926869d5dc32642a", "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-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-72d34f35b88d7bff", "level": "note", "message": {"text": "Very large file: analysis/montecarlo/scenarios.py (1069 lines)"}, "properties": {"repobilityId": "43cf768dacde6683", "scanner": "scanner-primary", "fingerprint": "72d34f35b88d7bff", "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": "f4c133c6686a1f80", "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": "a074a912ec8dddea", "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": "873c251337821c61", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "c326d7777fd4577b", "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": "60e6f79fa509ba0c", "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": "c0bb7220d764f17f", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-60d851e564987d94", "level": "none", "message": {"text": "Commented-code block (8 lines) in analyze.py:242"}, "properties": {"repobilityId": "9a1ebb8f2400aed6", "scanner": "scanner-primary", "fingerprint": "60d851e564987d94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e62273f45a3aab5a", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 extractors/p223_pdf_batch.py:55"}, "properties": {"repobilityId": "7d588b84d48b4845", "scanner": "scanner-primary", "fingerprint": "e62273f45a3aab5a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-54e380e2ef32345c", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 extractors/prr/transit/ocr_bundle.py:48"}, "properties": {"repobilityId": "706c3dfa03360f85", "scanner": "scanner-primary", "fingerprint": "54e380e2ef32345c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-10c89c030f42a6c9", "level": "note", "message": {"text": "Stub function `commit` (body is just `pass`/`return`) \u2014 extractors/purplebook/section_parser.py:102"}, "properties": {"repobilityId": "7d2a1f11ba10508e", "scanner": "scanner-primary", "fingerprint": "10c89c030f42a6c9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-8d2585d316fddf26", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 extractors/odata/ospi-odata-load.py:30"}, "properties": {"repobilityId": "861b99dca7bac06a", "scanner": "scanner-primary", "fingerprint": "8d2585d316fddf26", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43695379e1003d0c", "level": "note", "message": {"text": "Legacy-named symbol `transform_complex_field_old` in extractors/odata/odata.py:21"}, "properties": {"repobilityId": "51632e589a919487", "scanner": "scanner-primary", "fingerprint": "43695379e1003d0c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-25519b1a3a564b9b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 extractors/safs/data_reader.py:122"}, "properties": {"repobilityId": "e71452a41c1c0083", "scanner": "scanner-primary", "fingerprint": "25519b1a3a564b9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-17af4f137cf122e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in extractors/safs/transforms/f19x.py:649"}, "properties": {"repobilityId": "2d2fc7314b3235c9", "scanner": "scanner-primary", "fingerprint": "17af4f137cf122e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f46a039a196f4782", "level": "none", "message": {"text": "Commented-code block (5 lines) in extractors/stars/filename.py:52"}, "properties": {"repobilityId": "8ec9354510e1b81a", "scanner": "scanner-primary", "fingerprint": "f46a039a196f4782", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac3c360dcb1f33b3", "level": "none", "message": {"text": "Commented-code block (9 lines) in extractors/stars/parsers/operations_allocation_compact.py:31"}, "properties": {"repobilityId": "f736729ccdbb07ec", "scanner": "scanner-primary", "fingerprint": "ac3c360dcb1f33b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3dbc2ed57f852ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in extractors/stars/parsers/kpi.py:48"}, "properties": {"repobilityId": "ba895a91e950e56a", "scanner": "scanner-primary", "fingerprint": "d3dbc2ed57f852ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8d6561cd420bc32", "level": "none", "message": {"text": "Commented-code block (9 lines) in extractors/stars/parsers/operations_allocation.py:33"}, "properties": {"repobilityId": "f3007dcbf7b120e7", "scanner": "scanner-primary", "fingerprint": "c8d6561cd420bc32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43bb29e756d3b506", "level": "none", "message": {"text": "Commented-code block (10 lines) in extractors/stars/parsers/quarterly_district.py:189"}, "properties": {"repobilityId": "52bd7427f9649962", "scanner": "scanner-primary", "fingerprint": "43bb29e756d3b506", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c86d0b269cd435d", "level": "none", "message": {"text": "Commented-code block (7 lines) in docs/contentscripts/scrappers/ospi-stars-reports.js:11"}, "properties": {"repobilityId": "f926716c89627a7b", "scanner": "scanner-primary", "fingerprint": "1c86d0b269cd435d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4042634ae1605f46", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/contentscripts/scrappers/ospi-stars-reports.js:96"}, "properties": {"repobilityId": "9aaf4bc267fa7db7", "scanner": "scanner-primary", "fingerprint": "4042634ae1605f46", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5e6cd57a014b12cd", "level": "none", "message": {"text": "Commented-code block (8 lines) in docs/contentscripts/scrappers/ospi-funding-reports.js:11"}, "properties": {"repobilityId": "2ace13cdb4567860", "scanner": "scanner-primary", "fingerprint": "5e6cd57a014b12cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1dfd3791406ea56a", "level": "none", "message": {"text": "Commented-code block (5 lines) in analysis/montecarlo/scenarios.py:556"}, "properties": {"repobilityId": "d146c7475dacf8d7", "scanner": "scanner-primary", "fingerprint": "1dfd3791406ea56a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7c51bd61f7e93a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in analysis/montecarlo/rc_seattle.py:138"}, "properties": {"repobilityId": "eb8622cbd2f56d14", "scanner": "scanner-primary", "fingerprint": "f7c51bd61f7e93a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a21c95a860315ae4", "level": "none", "message": {"text": "Commented-code block (5 lines) in analysis/montecarlo/ridership.py:112"}, "properties": {"repobilityId": "774f10096b52ba3d", "scanner": "scanner-primary", "fingerprint": "a21c95a860315ae4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-732f4cbfa35b41f8", "level": "none", "message": {"text": "Commented-code block (6 lines) in analysis/montecarlo/acs_population.py:81"}, "properties": {"repobilityId": "4e4a5402f2713cb1", "scanner": "scanner-primary", "fingerprint": "732f4cbfa35b41f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a339ade43046ac4a", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 analysis/montecarlo/acs_population.py:129"}, "properties": {"repobilityId": "d0da370190599c0e", "scanner": "scanner-primary", "fingerprint": "a339ade43046ac4a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ccf7a2b97e2acd48", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 analysis/montecarlo/section4_seattle.py:89"}, "properties": {"repobilityId": "35e05c8b6473d062", "scanner": "scanner-primary", "fingerprint": "ccf7a2b97e2acd48", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a1693e74b04ca38", "level": "none", "message": {"text": "Commented-code block (7 lines) in analysis/montecarlo/report.py:71"}, "properties": {"repobilityId": "40d744fd7ee87436", "scanner": "scanner-primary", "fingerprint": "1a1693e74b04ca38", "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": "8c90161b0b116d4b", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "45b13bebcf99672a", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "6363434c2ec1f797", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "626db9f00a083428", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "1619708d3b222461", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "de4444a8f773c606", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "90b06b48a424c91c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "195428a976636a10", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "5dc03bb554d0e5c1", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "a34b310556e0ae03", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "01f4152d48a8c494", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "f729a9c4ffe127ba", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-9dad557909b86499", "level": "note", "message": {"text": "Near-duplicate function bodies in 10 places"}, "properties": {"repobilityId": "effe1bc4230c69e0", "scanner": "scanner-primary", "fingerprint": "9dad557909b86499", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-46969939caf8120b", "level": "note", "message": {"text": "Near-duplicate function bodies in 9 places"}, "properties": {"repobilityId": "dd85180c7699fbc0", "scanner": "scanner-primary", "fingerprint": "46969939caf8120b", "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": "4d9409eb4573cce6", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "26b62de3de37c7fa", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "1f58e508e4ac0de4", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "c538c542c22ccebb", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "b0a79a2e7f03653e", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "66061151a22d3a1a", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}