{"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-10a25b1944331fdc", "name": "Stray `console.log` in TS/JS \u2014 functions/src/scripts/backfill_user_memberships.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 functions/src/scripts/backfill_user_memberships.ts:88"}, "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-5ab76d48a76ba5a6", "name": "TODO/FIXME marker in shipping code \u2014 functions/src/callable/backfillPlSummary.ts:150", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 functions/src/callable/backfillPlSummary.ts:150"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2eeb5339e9f6bdf", "name": "TODO/FIXME marker in shipping code \u2014 functions/src/callable/createCapitalEvent.ts:1", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 functions/src/callable/createCapitalEvent.ts:1"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f58171dab70479f0", "name": "Stray `console.log` in TS/JS \u2014 shared/scripts/backfill_member_display_names.ts:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/scripts/backfill_member_display_names.ts:157"}, "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-f853e3c036dbaac6", "name": "Stray `console.log` in TS/JS \u2014 shared/scripts/seed_platform_config.ts:295", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/scripts/seed_platform_config.ts:295"}, "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-13a69f50284d87ed", "name": "Privileged port 19 in use", "shortDescription": {"text": "Privileged port 19 in use"}, "fullDescription": {"text": "Port 19 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "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-589bbdf17413fd9c", "name": "Runtime dotenv file present in repo: functions/.env.farmos-staging", "shortDescription": {"text": "Runtime dotenv file present in repo: functions/.env.farmos-staging"}, "fullDescription": {"text": "`functions/.env.farmos-staging` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8a40f6f175c789c", "name": "Runtime dotenv file present in repo: functions/.env.farmos-devs", "shortDescription": {"text": "Runtime dotenv file present in repo: functions/.env.farmos-devs"}, "fullDescription": {"text": "`functions/.env.farmos-devs` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9502ee2f74351dcf", "name": "Possible secret in apps/farmos/web/firebase-messaging-sw_staging.js", "shortDescription": {"text": "Possible secret in apps/farmos/web/firebase-messaging-sw_staging.js"}, "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-a3bebedbc6fc0a2d", "name": "Possible secret in apps/farmos/web/firebase-messaging-sw_development.js", "shortDescription": {"text": "Possible secret in apps/farmos/web/firebase-messaging-sw_development.js"}, "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-b0f8633865a0facf", "name": "Possible secret in apps/farmos/web/firebase-messaging-sw.js", "shortDescription": {"text": "Possible secret in apps/farmos/web/firebase-messaging-sw.js"}, "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-f90b3ab298304d7c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "VeryGoodOpenSource/very_good_workflows/.github/workflows/license_check.yml@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-494237f20e46176e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2056c1a683141ac3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ba4d3845c4ab28f", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d16ebe2c12878c23", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b5e5e16eccfb7b2", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4f698dcefef5da8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-baf81d0345b81ec2", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b288d247443a5ec", "name": "Very large file: rules-tests/leases.test.ts (2676 lines)", "shortDescription": {"text": "Very large file: rules-tests/leases.test.ts (2676 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-3751917989388ff1", "name": "Very large file: rules-tests/livestock_events.test.ts (2253 lines)", "shortDescription": {"text": "Very large file: rules-tests/livestock_events.test.ts (2253 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 8 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-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-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-e46a8174569de7f7", "name": "Commented-code block (5 lines) in functions/eslint.config.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in functions/eslint.config.js:1"}, "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-6ac25d8f8910e8b0", "name": "Commented-code block (6 lines) in functions/test/config.test.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in functions/test/config.test.ts:1"}, "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-2aede951f8ae8248", "name": "Legacy-named symbol `entry_e_v2` in functions/test/triggers/onAmountDetailWrite.test.ts:280", "shortDescription": {"text": "Legacy-named symbol `entry_e_v2` in functions/test/triggers/onAmountDetailWrite.test.ts:280"}, "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-e9080e8ea7139db9", "name": "Commented-code block (5 lines) in functions/test/triggers/onAmountDetailWrite.test.ts:545", "shortDescription": {"text": "Commented-code block (5 lines) in functions/test/triggers/onAmountDetailWrite.test.ts:545"}, "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-73e082a015416ed3", "name": "Commented-code block (6 lines) in functions/test/triggers/dailyAccrualDispatcher.test.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in functions/test/triggers/dailyAccrualDispatcher.test.ts:3"}, "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-6872276060f95958", "name": "Commented-code block (5 lines) in functions/test/triggers/has_open_loans.test.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in functions/test/triggers/has_open_loans.test.ts:5"}, "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-2710a610d77a2a2c", "name": "Commented-code block (5 lines) in functions/test/triggers/onFarmCreate.test.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in functions/test/triggers/onFarmCreate.test.ts:5"}, "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-e4f20e3f14ebb741", "name": "Commented-code block (5 lines) in functions/test/triggers/accrueLoansForFarm.backfill.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in functions/test/triggers/accrueLoansForFarm.backfill.test.ts:1"}, "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-ab11c99f86895a20", "name": "Legacy-named symbol `farmOld` in functions/test/triggers/staleSaleNudge.test.ts:243", "shortDescription": {"text": "Legacy-named symbol `farmOld` in functions/test/triggers/staleSaleNudge.test.ts:243"}, "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-9f97f47dc1f98ec8", "name": "Commented-code block (6 lines) in functions/test/triggers/staleSaleNudge.test.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in functions/test/triggers/staleSaleNudge.test.ts:1"}, "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-a7dbf4f83002dd3d", "name": "Commented-code block (5 lines) in functions/test/triggers/accrueLoansForFarm.repayment_no_double_count.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in functions/test/triggers/accrueLoansForFarm.repayment_no_double_count.test.ts:1"}, "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-61d551e388311c78", "name": "Commented-code block (7 lines) in functions/test/triggers/onFarmMemberWrite.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in functions/test/triggers/onFarmMemberWrite.test.ts:4"}, "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-3bcffa8e01a3c15f", "name": "Commented-code block (7 lines) in functions/test/triggers/recomputeArrears.test.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in functions/test/triggers/recomputeArrears.test.ts:6"}, "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-9ed4e70c7adbc674", "name": "Commented-code block (23 lines) in functions/test/triggers/onCustomRoleUpdated.test.ts:4", "shortDescription": {"text": "Commented-code block (23 lines) in functions/test/triggers/onCustomRoleUpdated.test.ts:4"}, "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-3dde1fd2166d7b42", "name": "Commented-code block (5 lines) in functions/test/triggers/onMemberPending.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in functions/test/triggers/onMemberPending.test.ts:1"}, "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-9a10c016bbfe027b", "name": "Commented-code block (10 lines) in functions/test/shared/arrears.test.ts:3", "shortDescription": {"text": "Commented-code block (10 lines) in functions/test/shared/arrears.test.ts:3"}, "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-b07aedd03649dede", "name": "Commented-code block (11 lines) in functions/test/shared/logger_redaction_invite.test.ts:3", "shortDescription": {"text": "Commented-code block (11 lines) in functions/test/shared/logger_redaction_invite.test.ts:3"}, "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-6427c6945a581400", "name": "Commented-code block (6 lines) in functions/test/shared/loan_interest.test.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in functions/test/shared/loan_interest.test.ts:3"}, "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-bab1e6942cfd9027", "name": "Commented-code block (7 lines) in functions/test/shared/logger.test.ts:123", "shortDescription": {"text": "Commented-code block (7 lines) in functions/test/shared/logger.test.ts:123"}, "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-f52b9e96f1603db7", "name": "Commented-code block (7 lines) in functions/test/helpers/invite_signing.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in functions/test/helpers/invite_signing.ts:3"}, "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-0d78dff6b657843f", "name": "Commented-code block (5 lines) in functions/test/callable/getSessionStatus.test.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in functions/test/callable/getSessionStatus.test.ts:5"}, "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-f4b088f800c2bae6", "name": "Commented-code block (15 lines) in functions/test/callable/deleteFarm.test.ts:5", "shortDescription": {"text": "Commented-code block (15 lines) in functions/test/callable/deleteFarm.test.ts:5"}, "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-02401e6dffc6f1ef", "name": "Commented-code block (15 lines) in functions/test/callable/transferFarmOwnership.test.ts:5", "shortDescription": {"text": "Commented-code block (15 lines) in functions/test/callable/transferFarmOwnership.test.ts:5"}, "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-b4582bfcc820e306", "name": "Commented-code block (6 lines) in functions/test/callable/deleteCustomRole.test.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in functions/test/callable/deleteCustomRole.test.ts:5"}, "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-1fc7591191751208", "name": "Commented-code block (11 lines) in functions/test/callable/leaveFarm.test.ts:5", "shortDescription": {"text": "Commented-code block (11 lines) in functions/test/callable/leaveFarm.test.ts:5"}, "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-9dc112d15fa8b6a3", "name": "Commented-code block (6 lines) in functions/test/callable/generateInviteToken.test.ts:112", "shortDescription": {"text": "Commented-code block (6 lines) in functions/test/callable/generateInviteToken.test.ts: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-e31d95ebfa281e01", "name": "Commented-code block (5 lines) in functions/test/callable/unregisterFcmToken.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in functions/test/callable/unregisterFcmToken.test.ts:3"}, "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-f9289829fed67c2b", "name": "Commented-code block (5 lines) in functions/test/callable/backfillPlSummary.test.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in functions/test/callable/backfillPlSummary.test.ts:6"}, "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-53b6075993e828cf", "name": "Commented-code block (5 lines) in functions/test/callable/consumeInviteToken.test.ts:270", "shortDescription": {"text": "Commented-code block (5 lines) in functions/test/callable/consumeInviteToken.test.ts:270"}, "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-6a92af09dbed6bc0", "name": "Commented-code block (8 lines) in functions/test/callable/registerFcmToken.test.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in functions/test/callable/registerFcmToken.test.ts:5"}, "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-9a8de12a38a752e5", "name": "Commented-code block (6 lines) in functions/test/callable/createCapitalEvent.no_ledger_write.test.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in functions/test/callable/createCapitalEvent.no_ledger_write.test.ts:1"}, "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-88849ce434ea66c7", "name": "Commented-code block (9 lines) in functions/test/callable/rejectPendingApproval.test.ts:412", "shortDescription": {"text": "Commented-code block (9 lines) in functions/test/callable/rejectPendingApproval.test.ts:412"}, "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-3c7a0bec0ffc1ec1", "name": "Commented-code block (8 lines) in functions/src/index.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in functions/src/index.ts:5"}, "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-b411d22c37610c6b", "name": "Commented-code block (6 lines) in functions/src/triggers/onLoanClose.ts:113", "shortDescription": {"text": "Commented-code block (6 lines) in functions/src/triggers/onLoanClose.ts:113"}, "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-407be9e3c606ec12", "name": "Commented-code block (8 lines) in functions/src/triggers/dailyAccrualDispatcher.ts:115", "shortDescription": {"text": "Commented-code block (8 lines) in functions/src/triggers/dailyAccrualDispatcher.ts:115"}, "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-796042a737611f39", "name": "Commented-code block (25 lines) in functions/src/triggers/onFarmCreate.ts:40", "shortDescription": {"text": "Commented-code block (25 lines) in functions/src/triggers/onFarmCreate.ts:40"}, "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-897e2389a87939c5", "name": "Commented-code block (10 lines) in functions/src/triggers/onMemberRevoked.ts:103", "shortDescription": {"text": "Commented-code block (10 lines) in functions/src/triggers/onMemberRevoked.ts:103"}, "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-0c119f799ac1b95d", "name": "Commented-code block (7 lines) in functions/src/triggers/onCustomRoleUpdated.ts:91", "shortDescription": {"text": "Commented-code block (7 lines) in functions/src/triggers/onCustomRoleUpdated.ts:91"}, "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-4f5f8076f475a328", "name": "Commented-code block (8 lines) in functions/src/triggers/scheduledFirestoreExport.ts:18", "shortDescription": {"text": "Commented-code block (8 lines) in functions/src/triggers/scheduledFirestoreExport.ts:18"}, "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-536590d337627c19", "name": "Commented-code block (9 lines) in functions/src/triggers/staleSaleNudge.ts:119", "shortDescription": {"text": "Commented-code block (9 lines) in functions/src/triggers/staleSaleNudge.ts:119"}, "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-56be87343889582f", "name": "Commented-code block (14 lines) in functions/src/triggers/onFarmMemberWrite.ts:43", "shortDescription": {"text": "Commented-code block (14 lines) in functions/src/triggers/onFarmMemberWrite.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b19c8bbd7e813a6", "name": "Commented-code block (6 lines) in functions/src/triggers/onMemberGranted.ts:49", "shortDescription": {"text": "Commented-code block (6 lines) in functions/src/triggers/onMemberGranted.ts:49"}, "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-ec8b5f85e25e3e09", "name": "Commented-code block (5 lines) in functions/src/triggers/onAmountDetailWrite.ts:300", "shortDescription": {"text": "Commented-code block (5 lines) in functions/src/triggers/onAmountDetailWrite.ts:300"}, "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-0928614b0b3de9f5", "name": "Commented-code block (5 lines) in functions/src/shared/arrears.ts:89", "shortDescription": {"text": "Commented-code block (5 lines) in functions/src/shared/arrears.ts:89"}, "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-07ecc25ef706ec36", "name": "Commented-code block (5 lines) in functions/src/shared/loan_interest.ts:64", "shortDescription": {"text": "Commented-code block (5 lines) in functions/src/shared/loan_interest.ts:64"}, "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-bc382403c7130aa6", "name": "Commented-code block (5 lines) in functions/src/shared/logger.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in functions/src/shared/logger.ts:7"}, "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-f2445d73d65ddc34", "name": "Commented-code block (8 lines) in functions/src/scripts/backfill_user_memberships.ts:4", "shortDescription": {"text": "Commented-code block (8 lines) in functions/src/scripts/backfill_user_memberships.ts:4"}, "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-76b0a8e1dbebbffc", "name": "Commented-code block (6 lines) in functions/src/callable/generateInviteToken.ts:27", "shortDescription": {"text": "Commented-code block (6 lines) in functions/src/callable/generateInviteToken.ts:27"}, "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-20f9d5ac6c8a496a", "name": "Commented-code block (5 lines) in functions/src/callable/changeMemberRole.ts:256", "shortDescription": {"text": "Commented-code block (5 lines) in functions/src/callable/changeMemberRole.ts:256"}, "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-c0fc37e37bacd851", "name": "Commented-code block (7 lines) in functions/src/callable/revokeMemberAccess.ts:172", "shortDescription": {"text": "Commented-code block (7 lines) in functions/src/callable/revokeMemberAccess.ts:172"}, "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-8c63af6260072740", "name": "Commented-code block (7 lines) in functions/src/callable/deleteFarm.ts:214", "shortDescription": {"text": "Commented-code block (7 lines) in functions/src/callable/deleteFarm.ts:214"}, "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-33742ba923d783f7", "name": "Commented-code block (5 lines) in functions/src/callable/registerFcmToken.ts:163", "shortDescription": {"text": "Commented-code block (5 lines) in functions/src/callable/registerFcmToken.ts:163"}, "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-71f27920cd990dd8", "name": "Commented-code block (7 lines) in functions/src/callable/approveMemberAccess.ts:240", "shortDescription": {"text": "Commented-code block (7 lines) in functions/src/callable/approveMemberAccess.ts:240"}, "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-b443ebc468dbc219", "name": "Commented-code block (5 lines) in functions/src/callable/consumeInviteToken.ts:103", "shortDescription": {"text": "Commented-code block (5 lines) in functions/src/callable/consumeInviteToken.ts:103"}, "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-7b0fcf5ac5f7c20c", "name": "Commented-code block (6 lines) in functions/src/callable/backfillPlSummary.ts:199", "shortDescription": {"text": "Commented-code block (6 lines) in functions/src/callable/backfillPlSummary.ts:199"}, "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-94311a37ecda976d", "name": "Commented-code block (7 lines) in functions/src/callable/leaveFarm.ts:159", "shortDescription": {"text": "Commented-code block (7 lines) in functions/src/callable/leaveFarm.ts:159"}, "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-91d604649e1a79b8", "name": "Legacy-named symbol `project_cloud_logging_canonical_filter_v2` in functions/src/callable/rejectPendingApproval.ts:14", "shortDescription": {"text": "Legacy-named symbol `project_cloud_logging_canonical_filter_v2` in functions/src/callable/rejectPendingApproval.ts:14"}, "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-cfde012453017c15", "name": "Commented-code block (19 lines) in functions/src/callable/rejectPendingApproval.ts:164", "shortDescription": {"text": "Commented-code block (19 lines) in functions/src/callable/rejectPendingApproval.ts:164"}, "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-7a2d92edab20c79b", "name": "Commented-code block (7 lines) in functions/src/callable/getSessionStatus.ts:166", "shortDescription": {"text": "Commented-code block (7 lines) in functions/src/callable/getSessionStatus.ts:166"}, "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-93306a90ccb695cd", "name": "Commented-code block (7 lines) in functions/src/callable/transferFarmOwnership.ts:190", "shortDescription": {"text": "Commented-code block (7 lines) in functions/src/callable/transferFarmOwnership.ts:190"}, "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-21cfb595b93ca050", "name": "Commented-code block (7 lines) in functions/src/callable/deleteCustomRole.ts:162", "shortDescription": {"text": "Commented-code block (7 lines) in functions/src/callable/deleteCustomRole.ts:162"}, "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-5911a44d60695388", "name": "Commented-code block (8 lines) in functions/src/callable/createCapitalEvent.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in functions/src/callable/createCapitalEvent.ts:1"}, "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-d8ac500e685d0798", "name": "Commented-code block (5 lines) in functions/src/invites/token_signer.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in functions/src/invites/token_signer.ts:74"}, "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-bb5d4eea85d9be5d", "name": "Commented-code block (5 lines) in apps/farmos/web/firebase-messaging-sw_staging.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/farmos/web/firebase-messaging-sw_staging.js:3"}, "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-f350880b506c919e", "name": "Commented-code block (5 lines) in apps/farmos/web/firebase-messaging-sw_development.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/farmos/web/firebase-messaging-sw_development.js:3"}, "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-0d6f26c9708a1cef", "name": "Commented-code block (6 lines) in apps/farmos/web/firebase-messaging-sw.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in apps/farmos/web/firebase-messaging-sw.js:3"}, "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-417e19321ef0afaa", "name": "Commented-code block (10 lines) in shared/scripts/backfill_member_display_names.ts:6", "shortDescription": {"text": "Commented-code block (10 lines) in shared/scripts/backfill_member_display_names.ts:6"}, "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-03f33d6338b1a4e0", "name": "Commented-code block (5 lines) in shared/scripts/generate_permissions.ts:192", "shortDescription": {"text": "Commented-code block (5 lines) in shared/scripts/generate_permissions.ts:192"}, "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-8d194120106dc781", "name": "Commented-code block (8 lines) in shared/scripts/generate_rule_helpers.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in shared/scripts/generate_rule_helpers.ts:6"}, "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-6cbc38f86ab69573", "name": "Commented-code block (5 lines) in shared/scripts/seed_platform_config.ts:14", "shortDescription": {"text": "Commented-code block (5 lines) in shared/scripts/seed_platform_config.ts:14"}, "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-614db99218a94648", "name": "Commented-code block (9 lines) in rules-tests/owner_notification_prefs.test.ts:4", "shortDescription": {"text": "Commented-code block (9 lines) in rules-tests/owner_notification_prefs.test.ts:4"}, "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-8521cc8f651beef2", "name": "Commented-code block (6 lines) in rules-tests/capital_events.test.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in rules-tests/capital_events.test.ts:7"}, "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-951d3e5f482396cb", "name": "Commented-code block (5 lines) in rules-tests/enums.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/enums.test.ts:1"}, "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-5f6eba786724d4f9", "name": "Commented-code block (6 lines) in rules-tests/subscription_state.test.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in rules-tests/subscription_state.test.ts:4"}, "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-6b1b46825d675d91", "name": "Commented-code block (6 lines) in rules-tests/roles.test.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in rules-tests/roles.test.ts:1"}, "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-ec0f09fe0397fe33", "name": "Commented-code block (5 lines) in rules-tests/allowlist.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/allowlist.test.ts:1"}, "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-ade3ec6fbdc5c14e", "name": "Commented-code block (5 lines) in rules-tests/modules.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/modules.test.ts:1"}, "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-f1a12e361e794a17", "name": "Commented-code block (5 lines) in rules-tests/pl_summary.test.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/pl_summary.test.ts:4"}, "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-520c0ffba22d5cfb", "name": "Legacy-named symbol `lease_alpha_001_v2` in rules-tests/leases.test.ts:694", "shortDescription": {"text": "Legacy-named symbol `lease_alpha_001_v2` in rules-tests/leases.test.ts:694"}, "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-c7d1d9972818206e", "name": "Commented-code block (7 lines) in rules-tests/leases.test.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in rules-tests/leases.test.ts:8"}, "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-9af87874fb625716", "name": "Legacy-named symbol `batch_alpha_001_v2` in rules-tests/livestock_batches.test.ts:804", "shortDescription": {"text": "Legacy-named symbol `batch_alpha_001_v2` in rules-tests/livestock_batches.test.ts:804"}, "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-8748d4685cdc3d8e", "name": "Commented-code block (5 lines) in rules-tests/livestock_batches.test.ts:821", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/livestock_batches.test.ts:821"}, "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-e88086bbc2fdfac7", "name": "Legacy-named symbol `id_doc_v1` in rules-tests/storage_farm_docs.test.ts:47", "shortDescription": {"text": "Legacy-named symbol `id_doc_v1` in rules-tests/storage_farm_docs.test.ts:47"}, "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-bce1552960909cbb", "name": "Commented-code block (5 lines) in rules-tests/storage_farm_docs.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/storage_farm_docs.test.ts:1"}, "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-6a8545878ed47ebc", "name": "Commented-code block (5 lines) in rules-tests/storage_farm_logos.test.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/storage_farm_logos.test.ts:6"}, "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-593f90a4772354d6", "name": "Commented-code block (5 lines) in rules-tests/permissions.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/permissions.test.ts:1"}, "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-8c51aadd9b8250bb", "name": "Legacy-named symbol `ind_alpha_001_v2` in rules-tests/livestock_individuals.test.ts:652", "shortDescription": {"text": "Legacy-named symbol `ind_alpha_001_v2` in rules-tests/livestock_individuals.test.ts:652"}, "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-ef64d3f5821d40a4", "name": "Commented-code block (6 lines) in rules-tests/livestock_individuals.test.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in rules-tests/livestock_individuals.test.ts:4"}, "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-cd5d963e2c649de9", "name": "Commented-code block (5 lines) in rules-tests/pending_approvals.test.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/pending_approvals.test.ts:4"}, "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-a7c5e1d4d309d1d4", "name": "Commented-code block (20 lines) in rules-tests/ledger_entries.test.ts:4", "shortDescription": {"text": "Commented-code block (20 lines) in rules-tests/ledger_entries.test.ts:4"}, "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-d14242935b901686", "name": "Legacy-named symbol `tenant_alpha_001_v2` in rules-tests/tenants.test.ts:696", "shortDescription": {"text": "Legacy-named symbol `tenant_alpha_001_v2` in rules-tests/tenants.test.ts:696"}, "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-d88170704c144e5b", "name": "Commented-code block (6 lines) in rules-tests/tenants.test.ts:689", "shortDescription": {"text": "Commented-code block (6 lines) in rules-tests/tenants.test.ts:689"}, "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-fea0dc1bc4c36e3c", "name": "Commented-code block (6 lines) in rules-tests/members.test.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in rules-tests/members.test.ts:3"}, "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-2c5fcc24c3ef739e", "name": "Commented-code block (20 lines) in rules-tests/custom_categories.test.ts:4", "shortDescription": {"text": "Commented-code block (20 lines) in rules-tests/custom_categories.test.ts:4"}, "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-663bc4f14a1c542b", "name": "Commented-code block (5 lines) in rules-tests/loans.test.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/loans.test.ts:5"}, "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-c13f585870a8e47f", "name": "Commented-code block (7 lines) in rules-tests/users_memberships.test.ts:221", "shortDescription": {"text": "Commented-code block (7 lines) in rules-tests/users_memberships.test.ts:221"}, "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-0c9923f730032238", "name": "Commented-code block (19 lines) in rules-tests/custom_roles.test.ts:3", "shortDescription": {"text": "Commented-code block (19 lines) in rules-tests/custom_roles.test.ts:3"}, "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-7e0f7d72e6e6e1df", "name": "Commented-code block (8 lines) in rules-tests/permissions_drift.test.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in rules-tests/permissions_drift.test.ts:3"}, "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-020bebc3bf2510a2", "name": "Commented-code block (5 lines) in rules-tests/farms_collection_listen.test.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/farms_collection_listen.test.ts:9"}, "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-6e097f8884f49a4a", "name": "Commented-code block (7 lines) in rules-tests/setup.ts:10", "shortDescription": {"text": "Commented-code block (7 lines) in rules-tests/setup.ts:10"}, "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-99b635d209d8fa2d", "name": "Commented-code block (7 lines) in rules-tests/nudge_state.test.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in rules-tests/nudge_state.test.ts:3"}, "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-467581675c98f983", "name": "Legacy-named symbol `event_alpha_001_v2` in rules-tests/livestock_events.test.ts:1112", "shortDescription": {"text": "Legacy-named symbol `event_alpha_001_v2` in rules-tests/livestock_events.test.ts:1112"}, "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-a682db1b903196a8", "name": "Commented-code block (5 lines) in rules-tests/livestock_events.test.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/livestock_events.test.ts:4"}, "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-707a8e4ebdfc3573", "name": "Commented-code block (5 lines) in rules-tests/cross_tenant_isolation.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/cross_tenant_isolation.test.ts:1"}, "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-16a58d4948ae8ce8", "name": "Commented-code block (7 lines) in rules-tests/platform_config.test.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in rules-tests/platform_config.test.ts:1"}, "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-8ba507ff3c3a1b99", "name": "Commented-code block (5 lines) in rules-tests/ownership.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/ownership.test.ts:1"}, "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-2c1a5f7c384b53c1", "name": "Commented-code block (7 lines) in rules-tests/invites.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in rules-tests/invites.test.ts:4"}, "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-b2f0cfe8335d8bf5", "name": "Commented-code block (7 lines) in rules-tests/loader.cjs:1", "shortDescription": {"text": "Commented-code block (7 lines) in rules-tests/loader.cjs:1"}, "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-17dbefbf040db057", "name": "Commented-code block (6 lines) in rules-tests/versioning.test.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in rules-tests/versioning.test.ts:1"}, "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-ca9e2d640ba3f1da", "name": "Commented-code block (5 lines) in rules-tests/helpers/test_app.ts:81", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/helpers/test_app.ts: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-24d6d7f406e6f681", "name": "Commented-code block (5 lines) in rules-tests/helpers/storage_test_app.ts:60", "shortDescription": {"text": "Commented-code block (5 lines) in rules-tests/helpers/storage_test_app.ts:60"}, "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-26238526387d96e7", "name": "Commented-code block (8 lines) in rules-tests/helpers/query_shapes.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in rules-tests/helpers/query_shapes.ts:3"}, "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}}]}}, "automationDetails": {"id": "repobility/21192"}, "properties": {"repository": "theRoadz/FarmOS", "repoUrl": "https://github.com/theRoadz/FarmOS", "branch": "main"}, "results": [{"ruleId": "scanner-10a25b1944331fdc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 functions/src/scripts/backfill_user_memberships.ts:88"}, "properties": {"repobilityId": "76ded0e1b1f337fb", "scanner": "scanner-primary", "fingerprint": "10a25b1944331fdc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ab76d48a76ba5a6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 functions/src/callable/backfillPlSummary.ts:150"}, "properties": {"repobilityId": "da15eda62d3807f6", "scanner": "scanner-primary", "fingerprint": "5ab76d48a76ba5a6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c2eeb5339e9f6bdf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 functions/src/callable/createCapitalEvent.ts:1"}, "properties": {"repobilityId": "e79fbdf4452499ea", "scanner": "scanner-primary", "fingerprint": "c2eeb5339e9f6bdf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f58171dab70479f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/scripts/backfill_member_display_names.ts:157"}, "properties": {"repobilityId": "ed314e25efb7791e", "scanner": "scanner-primary", "fingerprint": "f58171dab70479f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f853e3c036dbaac6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/scripts/seed_platform_config.ts:295"}, "properties": {"repobilityId": "cf4b00441f1d5f08", "scanner": "scanner-primary", "fingerprint": "f853e3c036dbaac6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13a69f50284d87ed", "level": "warning", "message": {"text": "Privileged port 19 in use"}, "properties": {"repobilityId": "a6b5b06deac36eac", "scanner": "scanner-primary", "fingerprint": "13a69f50284d87ed", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_bmad-output/implementation-artifacts/sprint-status.yaml"}, "region": {"startLine": 1}}}]}, {"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-589bbdf17413fd9c", "level": "error", "message": {"text": "Runtime dotenv file present in repo: functions/.env.farmos-staging"}, "properties": {"repobilityId": "7caff27a521f5617", "scanner": "scanner-primary", "fingerprint": "589bbdf17413fd9c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "functions/.env.farmos-staging"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e8a40f6f175c789c", "level": "error", "message": {"text": "Runtime dotenv file present in repo: functions/.env.farmos-devs"}, "properties": {"repobilityId": "e54375fad780a1d2", "scanner": "scanner-primary", "fingerprint": "e8a40f6f175c789c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "functions/.env.farmos-devs"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9502ee2f74351dcf", "level": "error", "message": {"text": "Possible secret in apps/farmos/web/firebase-messaging-sw_staging.js"}, "properties": {"repobilityId": "44a8b9964883b5c8", "scanner": "scanner-primary", "fingerprint": "9502ee2f74351dcf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/farmos/web/firebase-messaging-sw_staging.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-a3bebedbc6fc0a2d", "level": "error", "message": {"text": "Possible secret in apps/farmos/web/firebase-messaging-sw_development.js"}, "properties": {"repobilityId": "d0af89ad59bccd4a", "scanner": "scanner-primary", "fingerprint": "a3bebedbc6fc0a2d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/farmos/web/firebase-messaging-sw_development.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-b0f8633865a0facf", "level": "error", "message": {"text": "Possible secret in apps/farmos/web/firebase-messaging-sw.js"}, "properties": {"repobilityId": "e169d16ca60fbaac", "scanner": "scanner-primary", "fingerprint": "b0f8633865a0facf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/farmos/web/firebase-messaging-sw.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-f90b3ab298304d7c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fcf76a3466662302", "scanner": "scanner-primary", "fingerprint": "f90b3ab298304d7c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/farmos/.github/workflows/license_check.yaml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-494237f20e46176e", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "936b22e296322e96", "scanner": "scanner-primary", "fingerprint": "494237f20e46176e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/farmos/.github/workflows/main.yaml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-494237f20e46176e", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9a924b14218a5015", "scanner": "scanner-primary", "fingerprint": "494237f20e46176e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/farmos/.github/workflows/main.yaml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-494237f20e46176e", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "14abb6761f3b5734", "scanner": "scanner-primary", "fingerprint": "494237f20e46176e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/farmos/.github/workflows/main.yaml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-2056c1a683141ac3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f7301ed4f8b0f376", "scanner": "scanner-primary", "fingerprint": "2056c1a683141ac3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/golden-rebaseline.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-2056c1a683141ac3", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6823c6ccb59b74ab", "scanner": "scanner-primary", "fingerprint": "2056c1a683141ac3", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/golden-rebaseline.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-3ba4d3845c4ab28f", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "6a5f91c0e5d773df", "scanner": "scanner-primary", "fingerprint": "3ba4d3845c4ab28f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/golden-rebaseline.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d16ebe2c12878c23", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8514e997c0f7f5d2", "scanner": "scanner-primary", "fingerprint": "d16ebe2c12878c23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/prod-release.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-d16ebe2c12878c23", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ed7d450856037d66", "scanner": "scanner-primary", "fingerprint": "d16ebe2c12878c23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/prod-release.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-d16ebe2c12878c23", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "91dbea5799b42e52", "scanner": "scanner-primary", "fingerprint": "d16ebe2c12878c23", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/prod-release.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-4b5e5e16eccfb7b2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "85d1c5d9fea6f234", "scanner": "scanner-primary", "fingerprint": "4b5e5e16eccfb7b2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/staging-deploy.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-4b5e5e16eccfb7b2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9fba7f274ea7e746", "scanner": "scanner-primary", "fingerprint": "4b5e5e16eccfb7b2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/staging-deploy.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-4b5e5e16eccfb7b2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "58312c60f5a97e40", "scanner": "scanner-primary", "fingerprint": "4b5e5e16eccfb7b2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/staging-deploy.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bb6f0e61fff8b613", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "287fd39147e2675c", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "be82dd5e34ddbf62", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-d4f698dcefef5da8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0906d78864c99967", "scanner": "scanner-primary", "fingerprint": "d4f698dcefef5da8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr.yml"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-baf81d0345b81ec2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8faaa774ad76994c", "scanner": "scanner-primary", "fingerprint": "baf81d0345b81ec2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/offline-soak.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-baf81d0345b81ec2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b5abfc43a13806a7", "scanner": "scanner-primary", "fingerprint": "baf81d0345b81ec2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/offline-soak.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-baf81d0345b81ec2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "55b46fa09bb54884", "scanner": "scanner-primary", "fingerprint": "baf81d0345b81ec2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/offline-soak.yml"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-baf81d0345b81ec2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a5380e462223f86c", "scanner": "scanner-primary", "fingerprint": "baf81d0345b81ec2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/offline-soak.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-baf81d0345b81ec2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d010e613f7808b17", "scanner": "scanner-primary", "fingerprint": "baf81d0345b81ec2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/offline-soak.yml"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-baf81d0345b81ec2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b8bdb3ee812ac83f", "scanner": "scanner-primary", "fingerprint": "baf81d0345b81ec2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/offline-soak.yml"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-baf81d0345b81ec2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b8bdb3ee812ac83f", "scanner": "scanner-primary", "fingerprint": "baf81d0345b81ec2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/offline-soak.yml"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-baf81d0345b81ec2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8dd3209b32d027f1", "scanner": "scanner-primary", "fingerprint": "baf81d0345b81ec2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/offline-soak.yml"}, "region": {"startLine": 250}}}]}, {"ruleId": "scanner-baf81d0345b81ec2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8faaa774ad76994c", "scanner": "scanner-primary", "fingerprint": "baf81d0345b81ec2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/offline-soak.yml"}, "region": {"startLine": 279}}}]}, {"ruleId": "scanner-baf81d0345b81ec2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a5380e462223f86c", "scanner": "scanner-primary", "fingerprint": "baf81d0345b81ec2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/offline-soak.yml"}, "region": {"startLine": 284}}}]}, {"ruleId": "scanner-9b288d247443a5ec", "level": "note", "message": {"text": "Very large file: rules-tests/leases.test.ts (2676 lines)"}, "properties": {"repobilityId": "75ea6ba1141f2c21", "scanner": "scanner-primary", "fingerprint": "9b288d247443a5ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3751917989388ff1", "level": "note", "message": {"text": "Very large file: rules-tests/livestock_events.test.ts (2253 lines)"}, "properties": {"repobilityId": "dd170fe10f46637f", "scanner": "scanner-primary", "fingerprint": "3751917989388ff1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "37f9e6d45832b76b", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "4daa1a1fd1f80907", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "6183f99f1cb4659f", "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": "a9da89dc1c503a21", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-e46a8174569de7f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/eslint.config.js:1"}, "properties": {"repobilityId": "db37950393029732", "scanner": "scanner-primary", "fingerprint": "e46a8174569de7f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ac25d8f8910e8b0", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/test/config.test.ts:1"}, "properties": {"repobilityId": "01ccc39d9d141a9b", "scanner": "scanner-primary", "fingerprint": "6ac25d8f8910e8b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2aede951f8ae8248", "level": "note", "message": {"text": "Legacy-named symbol `entry_e_v2` in functions/test/triggers/onAmountDetailWrite.test.ts:280"}, "properties": {"repobilityId": "32bbf1a9669d6fae", "scanner": "scanner-primary", "fingerprint": "2aede951f8ae8248", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e9080e8ea7139db9", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/test/triggers/onAmountDetailWrite.test.ts:545"}, "properties": {"repobilityId": "ddaf0c7d3bae3cb6", "scanner": "scanner-primary", "fingerprint": "e9080e8ea7139db9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73e082a015416ed3", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/test/triggers/dailyAccrualDispatcher.test.ts:3"}, "properties": {"repobilityId": "b65b90baffde1fa4", "scanner": "scanner-primary", "fingerprint": "73e082a015416ed3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6872276060f95958", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/test/triggers/has_open_loans.test.ts:5"}, "properties": {"repobilityId": "7f1842a30417cffe", "scanner": "scanner-primary", "fingerprint": "6872276060f95958", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2710a610d77a2a2c", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/test/triggers/onFarmCreate.test.ts:5"}, "properties": {"repobilityId": "2318f5daee29bf7d", "scanner": "scanner-primary", "fingerprint": "2710a610d77a2a2c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4f20e3f14ebb741", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/test/triggers/accrueLoansForFarm.backfill.test.ts:1"}, "properties": {"repobilityId": "cc15cb1bf18eb886", "scanner": "scanner-primary", "fingerprint": "e4f20e3f14ebb741", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab11c99f86895a20", "level": "note", "message": {"text": "Legacy-named symbol `farmOld` in functions/test/triggers/staleSaleNudge.test.ts:243"}, "properties": {"repobilityId": "23a8a7772675e426", "scanner": "scanner-primary", "fingerprint": "ab11c99f86895a20", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9f97f47dc1f98ec8", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/test/triggers/staleSaleNudge.test.ts:1"}, "properties": {"repobilityId": "976124740bf40d25", "scanner": "scanner-primary", "fingerprint": "9f97f47dc1f98ec8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7dbf4f83002dd3d", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/test/triggers/accrueLoansForFarm.repayment_no_double_count.test.ts:1"}, "properties": {"repobilityId": "2705c425204a0516", "scanner": "scanner-primary", "fingerprint": "a7dbf4f83002dd3d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61d551e388311c78", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/test/triggers/onFarmMemberWrite.test.ts:4"}, "properties": {"repobilityId": "628214e326e29a49", "scanner": "scanner-primary", "fingerprint": "61d551e388311c78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3bcffa8e01a3c15f", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/test/triggers/recomputeArrears.test.ts:6"}, "properties": {"repobilityId": "c1080904dfb22ddb", "scanner": "scanner-primary", "fingerprint": "3bcffa8e01a3c15f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ed4e70c7adbc674", "level": "none", "message": {"text": "Commented-code block (23 lines) in functions/test/triggers/onCustomRoleUpdated.test.ts:4"}, "properties": {"repobilityId": "ec7fc55ec34a4342", "scanner": "scanner-primary", "fingerprint": "9ed4e70c7adbc674", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3dde1fd2166d7b42", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/test/triggers/onMemberPending.test.ts:1"}, "properties": {"repobilityId": "0b762598128409f6", "scanner": "scanner-primary", "fingerprint": "3dde1fd2166d7b42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a10c016bbfe027b", "level": "none", "message": {"text": "Commented-code block (10 lines) in functions/test/shared/arrears.test.ts:3"}, "properties": {"repobilityId": "d5ed5e6b8364a15e", "scanner": "scanner-primary", "fingerprint": "9a10c016bbfe027b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b07aedd03649dede", "level": "none", "message": {"text": "Commented-code block (11 lines) in functions/test/shared/logger_redaction_invite.test.ts:3"}, "properties": {"repobilityId": "71daadbe92294d3e", "scanner": "scanner-primary", "fingerprint": "b07aedd03649dede", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6427c6945a581400", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/test/shared/loan_interest.test.ts:3"}, "properties": {"repobilityId": "a13cb628cd6858b8", "scanner": "scanner-primary", "fingerprint": "6427c6945a581400", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bab1e6942cfd9027", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/test/shared/logger.test.ts:123"}, "properties": {"repobilityId": "8eacfa1d94412705", "scanner": "scanner-primary", "fingerprint": "bab1e6942cfd9027", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f52b9e96f1603db7", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/test/helpers/invite_signing.ts:3"}, "properties": {"repobilityId": "1772d1acda947de1", "scanner": "scanner-primary", "fingerprint": "f52b9e96f1603db7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d78dff6b657843f", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/test/callable/getSessionStatus.test.ts:5"}, "properties": {"repobilityId": "12204cae54daa40a", "scanner": "scanner-primary", "fingerprint": "0d78dff6b657843f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4b088f800c2bae6", "level": "none", "message": {"text": "Commented-code block (15 lines) in functions/test/callable/deleteFarm.test.ts:5"}, "properties": {"repobilityId": "06b810ef0519cc30", "scanner": "scanner-primary", "fingerprint": "f4b088f800c2bae6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02401e6dffc6f1ef", "level": "none", "message": {"text": "Commented-code block (15 lines) in functions/test/callable/transferFarmOwnership.test.ts:5"}, "properties": {"repobilityId": "55b5c480df9466a2", "scanner": "scanner-primary", "fingerprint": "02401e6dffc6f1ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4582bfcc820e306", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/test/callable/deleteCustomRole.test.ts:5"}, "properties": {"repobilityId": "32f1d8854316c02e", "scanner": "scanner-primary", "fingerprint": "b4582bfcc820e306", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fc7591191751208", "level": "none", "message": {"text": "Commented-code block (11 lines) in functions/test/callable/leaveFarm.test.ts:5"}, "properties": {"repobilityId": "c440a4088c391901", "scanner": "scanner-primary", "fingerprint": "1fc7591191751208", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dc112d15fa8b6a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/test/callable/generateInviteToken.test.ts:112"}, "properties": {"repobilityId": "1531e29207d8494f", "scanner": "scanner-primary", "fingerprint": "9dc112d15fa8b6a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e31d95ebfa281e01", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/test/callable/unregisterFcmToken.test.ts:3"}, "properties": {"repobilityId": "71815a568ddf66ea", "scanner": "scanner-primary", "fingerprint": "e31d95ebfa281e01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9289829fed67c2b", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/test/callable/backfillPlSummary.test.ts:6"}, "properties": {"repobilityId": "780d1e1aa7185b1d", "scanner": "scanner-primary", "fingerprint": "f9289829fed67c2b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53b6075993e828cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/test/callable/consumeInviteToken.test.ts:270"}, "properties": {"repobilityId": "b6aa22bf8b02b017", "scanner": "scanner-primary", "fingerprint": "53b6075993e828cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a92af09dbed6bc0", "level": "none", "message": {"text": "Commented-code block (8 lines) in functions/test/callable/registerFcmToken.test.ts:5"}, "properties": {"repobilityId": "feefe92aa61cb1fa", "scanner": "scanner-primary", "fingerprint": "6a92af09dbed6bc0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a8de12a38a752e5", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/test/callable/createCapitalEvent.no_ledger_write.test.ts:1"}, "properties": {"repobilityId": "ef13959aeda95ba5", "scanner": "scanner-primary", "fingerprint": "9a8de12a38a752e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88849ce434ea66c7", "level": "none", "message": {"text": "Commented-code block (9 lines) in functions/test/callable/rejectPendingApproval.test.ts:412"}, "properties": {"repobilityId": "c08681e2450aa5d6", "scanner": "scanner-primary", "fingerprint": "88849ce434ea66c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c7a0bec0ffc1ec1", "level": "none", "message": {"text": "Commented-code block (8 lines) in functions/src/index.ts:5"}, "properties": {"repobilityId": "70a88eacc2ad0c3d", "scanner": "scanner-primary", "fingerprint": "3c7a0bec0ffc1ec1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b411d22c37610c6b", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/src/triggers/onLoanClose.ts:113"}, "properties": {"repobilityId": "a55e72b3601b39a3", "scanner": "scanner-primary", "fingerprint": "b411d22c37610c6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-407be9e3c606ec12", "level": "none", "message": {"text": "Commented-code block (8 lines) in functions/src/triggers/dailyAccrualDispatcher.ts:115"}, "properties": {"repobilityId": "f445b479ec0b6bb4", "scanner": "scanner-primary", "fingerprint": "407be9e3c606ec12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-796042a737611f39", "level": "none", "message": {"text": "Commented-code block (25 lines) in functions/src/triggers/onFarmCreate.ts:40"}, "properties": {"repobilityId": "de0f988e6de48cad", "scanner": "scanner-primary", "fingerprint": "796042a737611f39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-897e2389a87939c5", "level": "none", "message": {"text": "Commented-code block (10 lines) in functions/src/triggers/onMemberRevoked.ts:103"}, "properties": {"repobilityId": "597997aa552543f2", "scanner": "scanner-primary", "fingerprint": "897e2389a87939c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c119f799ac1b95d", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/src/triggers/onCustomRoleUpdated.ts:91"}, "properties": {"repobilityId": "cf4af719457a04c2", "scanner": "scanner-primary", "fingerprint": "0c119f799ac1b95d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f5f8076f475a328", "level": "none", "message": {"text": "Commented-code block (8 lines) in functions/src/triggers/scheduledFirestoreExport.ts:18"}, "properties": {"repobilityId": "5f7413062b7f71b5", "scanner": "scanner-primary", "fingerprint": "4f5f8076f475a328", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-536590d337627c19", "level": "none", "message": {"text": "Commented-code block (9 lines) in functions/src/triggers/staleSaleNudge.ts:119"}, "properties": {"repobilityId": "e8be75bd02976070", "scanner": "scanner-primary", "fingerprint": "536590d337627c19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56be87343889582f", "level": "none", "message": {"text": "Commented-code block (14 lines) in functions/src/triggers/onFarmMemberWrite.ts:43"}, "properties": {"repobilityId": "94f880427f71af0d", "scanner": "scanner-primary", "fingerprint": "56be87343889582f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b19c8bbd7e813a6", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/src/triggers/onMemberGranted.ts:49"}, "properties": {"repobilityId": "c5628613efb8de72", "scanner": "scanner-primary", "fingerprint": "5b19c8bbd7e813a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec8b5f85e25e3e09", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/src/triggers/onAmountDetailWrite.ts:300"}, "properties": {"repobilityId": "72228b7d899d0ec2", "scanner": "scanner-primary", "fingerprint": "ec8b5f85e25e3e09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0928614b0b3de9f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/src/shared/arrears.ts:89"}, "properties": {"repobilityId": "fc8345c75abecccb", "scanner": "scanner-primary", "fingerprint": "0928614b0b3de9f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07ecc25ef706ec36", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/src/shared/loan_interest.ts:64"}, "properties": {"repobilityId": "8f3c92e281e8b8ec", "scanner": "scanner-primary", "fingerprint": "07ecc25ef706ec36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc382403c7130aa6", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/src/shared/logger.ts:7"}, "properties": {"repobilityId": "5a6edbecca6aa350", "scanner": "scanner-primary", "fingerprint": "bc382403c7130aa6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2445d73d65ddc34", "level": "none", "message": {"text": "Commented-code block (8 lines) in functions/src/scripts/backfill_user_memberships.ts:4"}, "properties": {"repobilityId": "21d44b19fa69df85", "scanner": "scanner-primary", "fingerprint": "f2445d73d65ddc34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76b0a8e1dbebbffc", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/src/callable/generateInviteToken.ts:27"}, "properties": {"repobilityId": "de7cb2ad748a1be6", "scanner": "scanner-primary", "fingerprint": "76b0a8e1dbebbffc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20f9d5ac6c8a496a", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/src/callable/changeMemberRole.ts:256"}, "properties": {"repobilityId": "904d351070e455cb", "scanner": "scanner-primary", "fingerprint": "20f9d5ac6c8a496a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0fc37e37bacd851", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/src/callable/revokeMemberAccess.ts:172"}, "properties": {"repobilityId": "8d78beb7cfcd2842", "scanner": "scanner-primary", "fingerprint": "c0fc37e37bacd851", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c63af6260072740", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/src/callable/deleteFarm.ts:214"}, "properties": {"repobilityId": "0627ac85c5ebc0b6", "scanner": "scanner-primary", "fingerprint": "8c63af6260072740", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33742ba923d783f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/src/callable/registerFcmToken.ts:163"}, "properties": {"repobilityId": "cba540d4acbc78f8", "scanner": "scanner-primary", "fingerprint": "33742ba923d783f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71f27920cd990dd8", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/src/callable/approveMemberAccess.ts:240"}, "properties": {"repobilityId": "f8cdb0d7fd3c723d", "scanner": "scanner-primary", "fingerprint": "71f27920cd990dd8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b443ebc468dbc219", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/src/callable/consumeInviteToken.ts:103"}, "properties": {"repobilityId": "e02444eb4e61599c", "scanner": "scanner-primary", "fingerprint": "b443ebc468dbc219", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b0fcf5ac5f7c20c", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/src/callable/backfillPlSummary.ts:199"}, "properties": {"repobilityId": "19dd60104dacc485", "scanner": "scanner-primary", "fingerprint": "7b0fcf5ac5f7c20c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94311a37ecda976d", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/src/callable/leaveFarm.ts:159"}, "properties": {"repobilityId": "b4ebe4655d1eb959", "scanner": "scanner-primary", "fingerprint": "94311a37ecda976d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91d604649e1a79b8", "level": "note", "message": {"text": "Legacy-named symbol `project_cloud_logging_canonical_filter_v2` in functions/src/callable/rejectPendingApproval.ts:14"}, "properties": {"repobilityId": "acba2d78cbf3b315", "scanner": "scanner-primary", "fingerprint": "91d604649e1a79b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cfde012453017c15", "level": "none", "message": {"text": "Commented-code block (19 lines) in functions/src/callable/rejectPendingApproval.ts:164"}, "properties": {"repobilityId": "6798e2bc911dffb9", "scanner": "scanner-primary", "fingerprint": "cfde012453017c15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a2d92edab20c79b", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/src/callable/getSessionStatus.ts:166"}, "properties": {"repobilityId": "600a9d015790cba9", "scanner": "scanner-primary", "fingerprint": "7a2d92edab20c79b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93306a90ccb695cd", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/src/callable/transferFarmOwnership.ts:190"}, "properties": {"repobilityId": "9a475b3995089925", "scanner": "scanner-primary", "fingerprint": "93306a90ccb695cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21cfb595b93ca050", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/src/callable/deleteCustomRole.ts:162"}, "properties": {"repobilityId": "79fa913ac639fab7", "scanner": "scanner-primary", "fingerprint": "21cfb595b93ca050", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5911a44d60695388", "level": "none", "message": {"text": "Commented-code block (8 lines) in functions/src/callable/createCapitalEvent.ts:1"}, "properties": {"repobilityId": "e4bfd7a9cfcf19a0", "scanner": "scanner-primary", "fingerprint": "5911a44d60695388", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8ac500e685d0798", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/src/invites/token_signer.ts:74"}, "properties": {"repobilityId": "38a476371ab0c691", "scanner": "scanner-primary", "fingerprint": "d8ac500e685d0798", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb5d4eea85d9be5d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/farmos/web/firebase-messaging-sw_staging.js:3"}, "properties": {"repobilityId": "c1696b0d79c8971a", "scanner": "scanner-primary", "fingerprint": "bb5d4eea85d9be5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f350880b506c919e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/farmos/web/firebase-messaging-sw_development.js:3"}, "properties": {"repobilityId": "2f6a5cf8411d1fe2", "scanner": "scanner-primary", "fingerprint": "f350880b506c919e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d6f26c9708a1cef", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/farmos/web/firebase-messaging-sw.js:3"}, "properties": {"repobilityId": "7708c5f7e1bb436f", "scanner": "scanner-primary", "fingerprint": "0d6f26c9708a1cef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-417e19321ef0afaa", "level": "none", "message": {"text": "Commented-code block (10 lines) in shared/scripts/backfill_member_display_names.ts:6"}, "properties": {"repobilityId": "3b2c54005d0081bc", "scanner": "scanner-primary", "fingerprint": "417e19321ef0afaa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03f33d6338b1a4e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/scripts/generate_permissions.ts:192"}, "properties": {"repobilityId": "c87eaf36488c948a", "scanner": "scanner-primary", "fingerprint": "03f33d6338b1a4e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d194120106dc781", "level": "none", "message": {"text": "Commented-code block (8 lines) in shared/scripts/generate_rule_helpers.ts:6"}, "properties": {"repobilityId": "4c6c7633bb6124ae", "scanner": "scanner-primary", "fingerprint": "8d194120106dc781", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6cbc38f86ab69573", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/scripts/seed_platform_config.ts:14"}, "properties": {"repobilityId": "d5b406660429f85b", "scanner": "scanner-primary", "fingerprint": "6cbc38f86ab69573", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-614db99218a94648", "level": "none", "message": {"text": "Commented-code block (9 lines) in rules-tests/owner_notification_prefs.test.ts:4"}, "properties": {"repobilityId": "9deba3865a9dc27e", "scanner": "scanner-primary", "fingerprint": "614db99218a94648", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8521cc8f651beef2", "level": "none", "message": {"text": "Commented-code block (6 lines) in rules-tests/capital_events.test.ts:7"}, "properties": {"repobilityId": "5a60eb2db25dea95", "scanner": "scanner-primary", "fingerprint": "8521cc8f651beef2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-951d3e5f482396cb", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/enums.test.ts:1"}, "properties": {"repobilityId": "0edf78e17525a733", "scanner": "scanner-primary", "fingerprint": "951d3e5f482396cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f6eba786724d4f9", "level": "none", "message": {"text": "Commented-code block (6 lines) in rules-tests/subscription_state.test.ts:4"}, "properties": {"repobilityId": "32296632a7277ef9", "scanner": "scanner-primary", "fingerprint": "5f6eba786724d4f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b1b46825d675d91", "level": "none", "message": {"text": "Commented-code block (6 lines) in rules-tests/roles.test.ts:1"}, "properties": {"repobilityId": "d4d9aa971edba66f", "scanner": "scanner-primary", "fingerprint": "6b1b46825d675d91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec0f09fe0397fe33", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/allowlist.test.ts:1"}, "properties": {"repobilityId": "480f4c9e380ecfd9", "scanner": "scanner-primary", "fingerprint": "ec0f09fe0397fe33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ade3ec6fbdc5c14e", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/modules.test.ts:1"}, "properties": {"repobilityId": "938df8e8c28bbbc5", "scanner": "scanner-primary", "fingerprint": "ade3ec6fbdc5c14e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1a12e361e794a17", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/pl_summary.test.ts:4"}, "properties": {"repobilityId": "8907c50438258eb6", "scanner": "scanner-primary", "fingerprint": "f1a12e361e794a17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-520c0ffba22d5cfb", "level": "note", "message": {"text": "Legacy-named symbol `lease_alpha_001_v2` in rules-tests/leases.test.ts:694"}, "properties": {"repobilityId": "374f675c4de9ce9d", "scanner": "scanner-primary", "fingerprint": "520c0ffba22d5cfb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c7d1d9972818206e", "level": "none", "message": {"text": "Commented-code block (7 lines) in rules-tests/leases.test.ts:8"}, "properties": {"repobilityId": "26370f47f6816be7", "scanner": "scanner-primary", "fingerprint": "c7d1d9972818206e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9af87874fb625716", "level": "note", "message": {"text": "Legacy-named symbol `batch_alpha_001_v2` in rules-tests/livestock_batches.test.ts:804"}, "properties": {"repobilityId": "3e57f727a12e388b", "scanner": "scanner-primary", "fingerprint": "9af87874fb625716", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8748d4685cdc3d8e", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/livestock_batches.test.ts:821"}, "properties": {"repobilityId": "d430a5fc5880b667", "scanner": "scanner-primary", "fingerprint": "8748d4685cdc3d8e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e88086bbc2fdfac7", "level": "note", "message": {"text": "Legacy-named symbol `id_doc_v1` in rules-tests/storage_farm_docs.test.ts:47"}, "properties": {"repobilityId": "19b157adbb1a8868", "scanner": "scanner-primary", "fingerprint": "e88086bbc2fdfac7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bce1552960909cbb", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/storage_farm_docs.test.ts:1"}, "properties": {"repobilityId": "26aacc2c3ac6579c", "scanner": "scanner-primary", "fingerprint": "bce1552960909cbb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a8545878ed47ebc", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/storage_farm_logos.test.ts:6"}, "properties": {"repobilityId": "ab4fa6430a169cef", "scanner": "scanner-primary", "fingerprint": "6a8545878ed47ebc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-593f90a4772354d6", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/permissions.test.ts:1"}, "properties": {"repobilityId": "3ed0a150950faeba", "scanner": "scanner-primary", "fingerprint": "593f90a4772354d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c51aadd9b8250bb", "level": "note", "message": {"text": "Legacy-named symbol `ind_alpha_001_v2` in rules-tests/livestock_individuals.test.ts:652"}, "properties": {"repobilityId": "48021e8707fd186d", "scanner": "scanner-primary", "fingerprint": "8c51aadd9b8250bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ef64d3f5821d40a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in rules-tests/livestock_individuals.test.ts:4"}, "properties": {"repobilityId": "01e78dcae0194154", "scanner": "scanner-primary", "fingerprint": "ef64d3f5821d40a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd5d963e2c649de9", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/pending_approvals.test.ts:4"}, "properties": {"repobilityId": "046a0cdd965d9916", "scanner": "scanner-primary", "fingerprint": "cd5d963e2c649de9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7c5e1d4d309d1d4", "level": "none", "message": {"text": "Commented-code block (20 lines) in rules-tests/ledger_entries.test.ts:4"}, "properties": {"repobilityId": "b89d1f1066a8d6c6", "scanner": "scanner-primary", "fingerprint": "a7c5e1d4d309d1d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d14242935b901686", "level": "note", "message": {"text": "Legacy-named symbol `tenant_alpha_001_v2` in rules-tests/tenants.test.ts:696"}, "properties": {"repobilityId": "0e5e3a5b4d102ad3", "scanner": "scanner-primary", "fingerprint": "d14242935b901686", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d88170704c144e5b", "level": "none", "message": {"text": "Commented-code block (6 lines) in rules-tests/tenants.test.ts:689"}, "properties": {"repobilityId": "19777307c8b38c24", "scanner": "scanner-primary", "fingerprint": "d88170704c144e5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fea0dc1bc4c36e3c", "level": "none", "message": {"text": "Commented-code block (6 lines) in rules-tests/members.test.ts:3"}, "properties": {"repobilityId": "f8f4d0603c8ade2e", "scanner": "scanner-primary", "fingerprint": "fea0dc1bc4c36e3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c5fcc24c3ef739e", "level": "none", "message": {"text": "Commented-code block (20 lines) in rules-tests/custom_categories.test.ts:4"}, "properties": {"repobilityId": "b63d92d2007afcd7", "scanner": "scanner-primary", "fingerprint": "2c5fcc24c3ef739e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-663bc4f14a1c542b", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/loans.test.ts:5"}, "properties": {"repobilityId": "f97fdb678ee144a2", "scanner": "scanner-primary", "fingerprint": "663bc4f14a1c542b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c13f585870a8e47f", "level": "none", "message": {"text": "Commented-code block (7 lines) in rules-tests/users_memberships.test.ts:221"}, "properties": {"repobilityId": "b9e0771630301470", "scanner": "scanner-primary", "fingerprint": "c13f585870a8e47f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c9923f730032238", "level": "none", "message": {"text": "Commented-code block (19 lines) in rules-tests/custom_roles.test.ts:3"}, "properties": {"repobilityId": "11057b0a6b9d8a56", "scanner": "scanner-primary", "fingerprint": "0c9923f730032238", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e0f7d72e6e6e1df", "level": "none", "message": {"text": "Commented-code block (8 lines) in rules-tests/permissions_drift.test.ts:3"}, "properties": {"repobilityId": "877610243b2b1465", "scanner": "scanner-primary", "fingerprint": "7e0f7d72e6e6e1df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-020bebc3bf2510a2", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/farms_collection_listen.test.ts:9"}, "properties": {"repobilityId": "795d7b603f1faa43", "scanner": "scanner-primary", "fingerprint": "020bebc3bf2510a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e097f8884f49a4a", "level": "none", "message": {"text": "Commented-code block (7 lines) in rules-tests/setup.ts:10"}, "properties": {"repobilityId": "0b62b1e2725166e6", "scanner": "scanner-primary", "fingerprint": "6e097f8884f49a4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99b635d209d8fa2d", "level": "none", "message": {"text": "Commented-code block (7 lines) in rules-tests/nudge_state.test.ts:3"}, "properties": {"repobilityId": "cb1f7a9c434ebdc8", "scanner": "scanner-primary", "fingerprint": "99b635d209d8fa2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-467581675c98f983", "level": "note", "message": {"text": "Legacy-named symbol `event_alpha_001_v2` in rules-tests/livestock_events.test.ts:1112"}, "properties": {"repobilityId": "2a4725919fade9cb", "scanner": "scanner-primary", "fingerprint": "467581675c98f983", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a682db1b903196a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/livestock_events.test.ts:4"}, "properties": {"repobilityId": "ed8260cec9053d5b", "scanner": "scanner-primary", "fingerprint": "a682db1b903196a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-707a8e4ebdfc3573", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/cross_tenant_isolation.test.ts:1"}, "properties": {"repobilityId": "cd6a0a4847d7ae5f", "scanner": "scanner-primary", "fingerprint": "707a8e4ebdfc3573", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16a58d4948ae8ce8", "level": "none", "message": {"text": "Commented-code block (7 lines) in rules-tests/platform_config.test.ts:1"}, "properties": {"repobilityId": "0cfe7eb15085abd1", "scanner": "scanner-primary", "fingerprint": "16a58d4948ae8ce8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ba507ff3c3a1b99", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/ownership.test.ts:1"}, "properties": {"repobilityId": "5052a52af048e2cb", "scanner": "scanner-primary", "fingerprint": "8ba507ff3c3a1b99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c1a5f7c384b53c1", "level": "none", "message": {"text": "Commented-code block (7 lines) in rules-tests/invites.test.ts:4"}, "properties": {"repobilityId": "5b29578dd94efa15", "scanner": "scanner-primary", "fingerprint": "2c1a5f7c384b53c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2f0cfe8335d8bf5", "level": "none", "message": {"text": "Commented-code block (7 lines) in rules-tests/loader.cjs:1"}, "properties": {"repobilityId": "85fbab3e2fda9342", "scanner": "scanner-primary", "fingerprint": "b2f0cfe8335d8bf5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17dbefbf040db057", "level": "none", "message": {"text": "Commented-code block (6 lines) in rules-tests/versioning.test.ts:1"}, "properties": {"repobilityId": "29ff2a3d48e9e061", "scanner": "scanner-primary", "fingerprint": "17dbefbf040db057", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca9e2d640ba3f1da", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/helpers/test_app.ts:81"}, "properties": {"repobilityId": "edfed04f0127befd", "scanner": "scanner-primary", "fingerprint": "ca9e2d640ba3f1da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24d6d7f406e6f681", "level": "none", "message": {"text": "Commented-code block (5 lines) in rules-tests/helpers/storage_test_app.ts:60"}, "properties": {"repobilityId": "6790538f79fcb617", "scanner": "scanner-primary", "fingerprint": "24d6d7f406e6f681", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26238526387d96e7", "level": "none", "message": {"text": "Commented-code block (8 lines) in rules-tests/helpers/query_shapes.ts:3"}, "properties": {"repobilityId": "fc30a1fc5c040f01", "scanner": "scanner-primary", "fingerprint": "26238526387d96e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}