{"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-8873e1f52d0f2d75", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/index.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/index.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-805065abb1a64630", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/api/server.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/api/server.ts:47"}, "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-487a1f4870d5acc8", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/discover.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/discover.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ccc970c109799aba", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testBookingStatus.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testBookingStatus.ts:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3eab5d9508dfd3ef", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testPerf.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testPerf.ts:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03b84b93aa33e276", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testItems.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testItems.ts:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b79b3d64c687d74c", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/addIndexes.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/addIndexes.ts:23"}, "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-637c8270050cb433", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/linkOwner.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/linkOwner.ts:26"}, "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-bdceffc0945b667c", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testTradeAI.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testTradeAI.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-256d6df06c89b400", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testFinishResilient.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testFinishResilient.ts:9"}, "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-29c897c0043461ee", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/migrateToNeon.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/migrateToNeon.ts:57"}, "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-d6cd4a4cdfdbcf31", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testScheduled.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testScheduled.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23be4d66cd624c50", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/demoMessage.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/demoMessage.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dbf036d3969b06c4", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testRaceFixes.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testRaceFixes.ts:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94b06b2d59e8a27c", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testAuthGate.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testAuthGate.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ebb933d6b7e4bec", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testRideCard.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testRideCard.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-acb4f6a83a934b73", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/seed.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/seed.ts:6"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f7fb27d5332cad9", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/captureLiveStrings.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/captureLiveStrings.ts:11"}, "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-f763b4aa163f7e01", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/reset.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/reset.ts:10"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee2caf2e15adf1d8", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasMapProbe.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasMapProbe.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f937e885fb1761a", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/probe.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/probe.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3363bdd527fb1afa", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testMarket.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testMarket.ts:11"}, "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-5934448bcddbf374", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasSweep.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasSweep.ts:52"}, "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-36cf2d2068925fa1", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasProbe2.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasProbe2.ts:17"}, "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-63f7a8e056115caf", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasResearch.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasResearch.ts:11"}, "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-3d21858f3fbca433", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/maxClientBonus.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/maxClientBonus.ts:25"}, "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-4c8ef2d67aa3d887", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testPlusGap.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testPlusGap.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56108e9c83fc2d5b", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/backup.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/backup.ts:34"}, "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-fa89938da7c60235", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/genInitData.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/genInitData.ts:25"}, "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-7a46b88daee17304", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testLink.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testLink.ts:10"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbcd2115aa409468", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testEconomy.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testEconomy.ts:20"}, "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-d3a0956928ebb0f3", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testWheel.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testWheel.ts:10"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf8fa5c346c4e3db", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/diagOwnerFlow.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/diagOwnerFlow.ts:21"}, "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-7c806f292079cc19", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testBooking.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testBooking.ts:9"}, "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-854f5988765e71f9", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testBookingGuard.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testBookingGuard.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9713784817d11e74", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testOneTap.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testOneTap.ts:11"}, "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-b59e59cd5e65781f", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/checkKasReach.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/checkKasReach.ts:34"}, "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-c17149ba0a6bd195", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testPhase2.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testPhase2.ts:11"}, "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-b74640ed1b91678f", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testGarage.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testGarage.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fec7b222c78c76b8", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/liveTest.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/liveTest.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bae8d89628d31886", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testReward.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testReward.ts:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7f56b1bf6ae5140d", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testEngagement.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testEngagement.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7b4612f2866d8c6", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/prodVerify.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/prodVerify.ts:28"}, "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-26e6edac0a00e75e", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testRollback.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testRollback.ts:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f618a7ad3333ee0", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/devLink.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/devLink.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43707e0f02911246", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testEditBonus.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testEditBonus.ts:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b2c958e391b04dc", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testTransfer.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testTransfer.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad90b73a268d1b5a", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testMoneyShield.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testMoneyShield.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2609120893105ca7", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/services/adminOps.ts:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/services/adminOps.ts:225"}, "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-7a27666ac6e5029c", "name": "Stray `console.log` in TS/JS \u2014 packages/server/src/services/weeklyService.ts:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/services/weeklyService.ts:131"}, "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-921f4b62389f7ac9", "name": "Icon-only button without accessible name \u2014 packages/miniapp/src/booking3.tsx:178", "shortDescription": {"text": "Icon-only button without accessible name \u2014 packages/miniapp/src/booking3.tsx:178"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-62258ab657d2c478", "name": "Icon-only button without accessible name \u2014 packages/miniapp/src/booking.tsx:413", "shortDescription": {"text": "Icon-only button without accessible name \u2014 packages/miniapp/src/booking.tsx:413"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5eadf8c49507042", "name": "Insecure pattern 'cors_wildcard' in packages/server/src/api/server.ts:147", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/server/src/api/server.ts:147"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9fd33b890e266b2d", "name": "Insecure pattern 'direct_innerhtml_assignment' in packages/miniapp/public/maptest.html:98", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/miniapp/public/maptest.html:98"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faccb9061e9b52a0", "name": "No README detected", "shortDescription": {"text": "No README detected"}, "fullDescription": {"text": "No README file was found. Generated repos without README context are hard to operate, validate, or safely hand off."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2699d5f16ae11282", "name": "Node manifest has dependencies but no lockfile: packages/shared/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/shared/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0ea2c50d68f6461", "name": "Node manifest has dependencies but no lockfile: packages/admin/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/admin/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b739f2f2be1d714d", "name": "Node manifest has dependencies but no lockfile: packages/server/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/server/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1408b67951ee3b7d", "name": "Node manifest has dependencies but no lockfile: packages/miniapp/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/miniapp/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 210 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 53 placeholder/mock markers across 22 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests, operator-readme, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests, operator-readme, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b7fe94192fe87c1", "name": "Commented-code block (5 lines) in packages/shared/src/gamify.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/gamify.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-43d3d722fd2ef1f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/admin/src/api.ts:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/admin/src/api.ts:72"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0011b003d4aea3de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/admin/src/App.tsx:319", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/admin/src/App.tsx:319"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ad85005da6da22e", "name": "Commented-code block (5 lines) in packages/server/src/scripts/testBookingStatus.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/server/src/scripts/testBookingStatus.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-c092bd4e50ff001d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/scripts/linkOwner.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/scripts/linkOwner.ts:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2ac0b9c698e9308e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/scripts/testAuthGate.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/scripts/testAuthGate.ts:27"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ff7b7a8280f3360e", "name": "Commented-code block (5 lines) in packages/server/src/scripts/testRideCard.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/server/src/scripts/testRideCard.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-db9f58fc64bda2b5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/scripts/genInitData.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/scripts/genInitData.ts:30"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-738f5d7f3b31aecc", "name": "Commented-code block (6 lines) in packages/server/src/scripts/testRollback.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in packages/server/src/scripts/testRollback.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-ed6a02233522a970", "name": "Commented-code block (6 lines) in packages/server/src/services/marketService.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/server/src/services/marketService.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-10297c26bc2fbc0d", "name": "Commented-code block (6 lines) in packages/server/src/services/coinService.ts:38", "shortDescription": {"text": "Commented-code block (6 lines) in packages/server/src/services/coinService.ts:38"}, "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-0dd2b6aa930830e8", "name": "Commented-code block (5 lines) in packages/server/src/services/economyService.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/server/src/services/economyService.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-664a2f7dabcd132d", "name": "Commented-code block (5 lines) in packages/server/src/services/bookingNotifier.ts:22", "shortDescription": {"text": "Commented-code block (5 lines) in packages/server/src/services/bookingNotifier.ts:22"}, "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-b68925355deaab01", "name": "Commented-code block (5 lines) in packages/server/src/services/bookingPlus.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/server/src/services/bookingPlus.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-54f4766f5b073f6a", "name": "Commented-code block (5 lines) in packages/server/src/services/tradeService.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/server/src/services/tradeService.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-243278bdb39ec150", "name": "Commented-code block (6 lines) in packages/server/src/services/referralService.ts:96", "shortDescription": {"text": "Commented-code block (6 lines) in packages/server/src/services/referralService.ts:96"}, "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-db4e10dcd77577c1", "name": "Commented-code block (6 lines) in packages/server/src/services/analyticsService.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in packages/server/src/services/analyticsService.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-a7a32674a171b7c5", "name": "Commented-code block (5 lines) in packages/server/src/services/transferService.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/server/src/services/transferService.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-e4c21706e655b991", "name": "Commented-code block (5 lines) in packages/server/src/services/cashbackService.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/server/src/services/cashbackService.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-4720c4085bb6e6df", "name": "Commented-code block (7 lines) in packages/server/src/services/ai/llmRouter.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in packages/server/src/services/ai/llmRouter.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-4ce346816bc3d37b", "name": "Legacy-named symbol `BookingViewOld` in packages/miniapp/src/booking3.tsx:18", "shortDescription": {"text": "Legacy-named symbol `BookingViewOld` in packages/miniapp/src/booking3.tsx:18"}, "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-de3c01347cd941be", "name": "Commented-code block (8 lines) in packages/miniapp/src/booking3.tsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in packages/miniapp/src/booking3.tsx: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-70fcae2d13c708b6", "name": "17 env vars used in code but missing from .env.example", "shortDescription": {"text": "17 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ANOMALY_24H_GAIN`, `BOZOR_BASE_BUDGET`, `BOZOR_PER_RIDE`, `DIRECT_URL`, `GEMINI_API_KEY`, `GROQ_API_KEY`, `KAS_MAX_PAGES`, `KAS_PAGE_SIZE` + 9 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c1545494ab6166c", "name": "Unused endpoint: GET /api/me", "shortDescription": {"text": "Unused endpoint: GET /api/me"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e603144b6066c68", "name": "Unused endpoint: POST /api/checkin", "shortDescription": {"text": "Unused endpoint: POST /api/checkin"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/checkin` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f808c29709cc794a", "name": "Unused endpoint: POST /api/wheel", "shortDescription": {"text": "Unused endpoint: POST /api/wheel"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/wheel` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69bd9257e4d3078b", "name": "Unused endpoint: GET /api/wallet", "shortDescription": {"text": "Unused endpoint: GET /api/wallet"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/wallet` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f0d9d473b02ec71", "name": "Unused endpoint: POST /api/wallet/withdraw", "shortDescription": {"text": "Unused endpoint: POST /api/wallet/withdraw"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/wallet/withdraw` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64f8abccab149f4e", "name": "Unused endpoint: POST /api/wallet/topup", "shortDescription": {"text": "Unused endpoint: POST /api/wallet/topup"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/wallet/topup` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-650f0c9e2a2bd3cc", "name": "Unused endpoint: POST /api/wallet/recipient", "shortDescription": {"text": "Unused endpoint: POST /api/wallet/recipient"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/wallet/recipient` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3dec348947a1112", "name": "Unused endpoint: POST /api/wallet/transfer", "shortDescription": {"text": "Unused endpoint: POST /api/wallet/transfer"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/wallet/transfer` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faed6ffa7555f784", "name": "Unused endpoint: GET /api/items", "shortDescription": {"text": "Unused endpoint: GET /api/items"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/items` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20642c242118d41b", "name": "Unused endpoint: POST /api/items/mint", "shortDescription": {"text": "Unused endpoint: POST /api/items/mint"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/items/mint` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db1c44d958136474", "name": "Unused endpoint: POST /api/items/list", "shortDescription": {"text": "Unused endpoint: POST /api/items/list"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/items/list` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd1b2fbf396ab621", "name": "Unused endpoint: POST /api/items/unlist", "shortDescription": {"text": "Unused endpoint: POST /api/items/unlist"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/items/unlist` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3dd86a4c8665663", "name": "Unused endpoint: GET /api/plus", "shortDescription": {"text": "Unused endpoint: GET /api/plus"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/plus` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-134d7ac3f88dbb88", "name": "Unused endpoint: POST /api/plus/subscribe", "shortDescription": {"text": "Unused endpoint: POST /api/plus/subscribe"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/plus/subscribe` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4017efcb6f0f7bbc", "name": "Unused endpoint: GET /api/gap", "shortDescription": {"text": "Unused endpoint: GET /api/gap"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/gap` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7ec5fdb5214bdd9", "name": "Unused endpoint: POST /api/gap/create", "shortDescription": {"text": "Unused endpoint: POST /api/gap/create"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/gap/create` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e0715b40cb02925", "name": "Unused endpoint: POST /api/gap/join", "shortDescription": {"text": "Unused endpoint: POST /api/gap/join"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/gap/join` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4bc4cb4ce6b1d551", "name": "Unused endpoint: POST /api/items/buy", "shortDescription": {"text": "Unused endpoint: POST /api/items/buy"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/items/buy` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-133b6e58404d2674", "name": "Unused endpoint: GET /api/driver/earnings", "shortDescription": {"text": "Unused endpoint: GET /api/driver/earnings"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/driver/earnings` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17bcc6bd11bbbda1", "name": "Unused endpoint: GET /api/market/shops", "shortDescription": {"text": "Unused endpoint: GET /api/market/shops"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/market/shops` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-694935a8c0e9deca", "name": "Unused endpoint: POST /api/market/buy", "shortDescription": {"text": "Unused endpoint: POST /api/market/buy"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/market/buy` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3c8d10451ab98bb", "name": "Unused endpoint: GET /api/market/orders", "shortDescription": {"text": "Unused endpoint: GET /api/market/orders"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/market/orders` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b4e42bc539169b3", "name": "Unused endpoint: POST /api/market/redeem", "shortDescription": {"text": "Unused endpoint: POST /api/market/redeem"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/market/redeem` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-abed04e20f1b2fec", "name": "Unused endpoint: GET /api/market/myshop", "shortDescription": {"text": "Unused endpoint: GET /api/market/myshop"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/market/myshop` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e8a217236ea09494", "name": "Unused endpoint: POST /api/admin/market/shop", "shortDescription": {"text": "Unused endpoint: POST /api/admin/market/shop"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/admin/market/shop` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dbd1476b1925dc19", "name": "Unused endpoint: POST /api/admin/market/shopmode", "shortDescription": {"text": "Unused endpoint: POST /api/admin/market/shopmode"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/admin/market/shopmode` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20feaa119339d107", "name": "Unused endpoint: POST /api/admin/market/listing", "shortDescription": {"text": "Unused endpoint: POST /api/admin/market/listing"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/admin/market/listing` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-013a5528555acb4f", "name": "Unused endpoint: GET /api/missions", "shortDescription": {"text": "Unused endpoint: GET /api/missions"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/missions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ef77f8d7ea3d83a", "name": "Unused endpoint: POST /api/missions/claim", "shortDescription": {"text": "Unused endpoint: POST /api/missions/claim"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/missions/claim` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f5a1fa3d0a414d9", "name": "Unused endpoint: GET /api/referral", "shortDescription": {"text": "Unused endpoint: GET /api/referral"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/referral` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e25ca4a02ec37b2", "name": "Unused endpoint: GET /api/weekly", "shortDescription": {"text": "Unused endpoint: GET /api/weekly"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/weekly` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99f6404e6c4782bc", "name": "Unused endpoint: GET /api/box", "shortDescription": {"text": "Unused endpoint: GET /api/box"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/box` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6a5b2c7d4e9eb63", "name": "Unused endpoint: POST /api/box/open", "shortDescription": {"text": "Unused endpoint: POST /api/box/open"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/box/open` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-788bf17b0327648b", "name": "Unused endpoint: GET /api/booking/info", "shortDescription": {"text": "Unused endpoint: GET /api/booking/info"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/booking/info` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa503c8ac5d1d84f", "name": "Unused endpoint: GET /api/booking/active", "shortDescription": {"text": "Unused endpoint: GET /api/booking/active"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/booking/active` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d22ef93c6823edfa", "name": "Unused endpoint: POST /api/booking/search", "shortDescription": {"text": "Unused endpoint: POST /api/booking/search"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/booking/search` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a960d740bc7d00c", "name": "Unused endpoint: POST /api/booking/create", "shortDescription": {"text": "Unused endpoint: POST /api/booking/create"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/booking/create` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35733b27839bbcf4", "name": "Unused endpoint: POST /api/booking/now", "shortDescription": {"text": "Unused endpoint: POST /api/booking/now"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/booking/now` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02f8a7815c7f34a9", "name": "Unused endpoint: GET /api/booking/history", "shortDescription": {"text": "Unused endpoint: GET /api/booking/history"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/booking/history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c1686d8612ca6f7b", "name": "Unused endpoint: POST /api/booking/cancel", "shortDescription": {"text": "Unused endpoint: POST /api/booking/cancel"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/booking/cancel` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a9f1b0917c74b9c4", "name": "Unused endpoint: GET /api/garage", "shortDescription": {"text": "Unused endpoint: GET /api/garage"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/garage` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46110072fb6d6d76", "name": "Unused endpoint: POST /api/garage/buy", "shortDescription": {"text": "Unused endpoint: POST /api/garage/buy"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/garage/buy` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b73207216028fff", "name": "Unused endpoint: POST /api/garage/equip", "shortDescription": {"text": "Unused endpoint: POST /api/garage/equip"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/garage/equip` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1ac3a0cdbccd0ed", "name": "Unused endpoint: POST /api/garage/service", "shortDescription": {"text": "Unused endpoint: POST /api/garage/service"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/garage/service` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23c82d0845e4fcb8", "name": "Unused endpoint: POST /api/booking/estimate", "shortDescription": {"text": "Unused endpoint: POST /api/booking/estimate"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/booking/estimate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5a290ad902e11ed", "name": "Unused endpoint: GET /api/fare/config", "shortDescription": {"text": "Unused endpoint: GET /api/fare/config"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/fare/config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a369f71214e9ef56", "name": "Unused endpoint: GET /api/leaderboard", "shortDescription": {"text": "Unused endpoint: GET /api/leaderboard"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/leaderboard` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7467d7bee7e158a7", "name": "Unused endpoint: GET /api/booking/predict", "shortDescription": {"text": "Unused endpoint: GET /api/booking/predict"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/booking/predict` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5d4b9ffb5a6c881", "name": "Unused endpoint: GET /api/booking/nearby", "shortDescription": {"text": "Unused endpoint: GET /api/booking/nearby"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `GET /api/booking/nearby` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1ebb7d6ce2c95ec", "name": "Unused endpoint: POST /api/booking/rate", "shortDescription": {"text": "Unused endpoint: POST /api/booking/rate"}, "fullDescription": {"text": "`packages/server/src/api/server.ts` declares `POST /api/booking/rate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18948"}, "properties": {"repository": "SarvarkhonH/1067-taxi-bot", "repoUrl": "https://github.com/SarvarkhonH/1067-taxi-bot", "branch": "main"}, "results": [{"ruleId": "scanner-8873e1f52d0f2d75", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/index.ts:16"}, "properties": {"repobilityId": "ac04c2b36447664c", "scanner": "scanner-primary", "fingerprint": "8873e1f52d0f2d75", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-805065abb1a64630", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/api/server.ts:47"}, "properties": {"repobilityId": "073c57bbdfd41e77", "scanner": "scanner-primary", "fingerprint": "805065abb1a64630", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-487a1f4870d5acc8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/discover.ts:19"}, "properties": {"repobilityId": "cf8e5a10d44979f6", "scanner": "scanner-primary", "fingerprint": "487a1f4870d5acc8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ccc970c109799aba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testBookingStatus.ts:13"}, "properties": {"repobilityId": "3b36982e4ab0ea0d", "scanner": "scanner-primary", "fingerprint": "ccc970c109799aba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3eab5d9508dfd3ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testPerf.ts:24"}, "properties": {"repobilityId": "d617572c73039a9b", "scanner": "scanner-primary", "fingerprint": "3eab5d9508dfd3ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03b84b93aa33e276", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testItems.ts:13"}, "properties": {"repobilityId": "c2f512bf48758606", "scanner": "scanner-primary", "fingerprint": "03b84b93aa33e276", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b79b3d64c687d74c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/addIndexes.ts:23"}, "properties": {"repobilityId": "9652eacbc19832bd", "scanner": "scanner-primary", "fingerprint": "b79b3d64c687d74c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-637c8270050cb433", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/linkOwner.ts:26"}, "properties": {"repobilityId": "21b47b8e06838f1e", "scanner": "scanner-primary", "fingerprint": "637c8270050cb433", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bdceffc0945b667c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testTradeAI.ts:15"}, "properties": {"repobilityId": "0ee42990e6ca1e92", "scanner": "scanner-primary", "fingerprint": "bdceffc0945b667c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-256d6df06c89b400", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testFinishResilient.ts:9"}, "properties": {"repobilityId": "c10a3882ae7ec9d3", "scanner": "scanner-primary", "fingerprint": "256d6df06c89b400", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29c897c0043461ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/migrateToNeon.ts:57"}, "properties": {"repobilityId": "d2276d8f30196608", "scanner": "scanner-primary", "fingerprint": "29c897c0043461ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6cd4a4cdfdbcf31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testScheduled.ts:16"}, "properties": {"repobilityId": "e343038956dd76c2", "scanner": "scanner-primary", "fingerprint": "d6cd4a4cdfdbcf31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23be4d66cd624c50", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/demoMessage.ts:15"}, "properties": {"repobilityId": "a7aac86d64f26d5b", "scanner": "scanner-primary", "fingerprint": "23be4d66cd624c50", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dbf036d3969b06c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testRaceFixes.ts:13"}, "properties": {"repobilityId": "8478acfac4db0059", "scanner": "scanner-primary", "fingerprint": "dbf036d3969b06c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94b06b2d59e8a27c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testAuthGate.ts:12"}, "properties": {"repobilityId": "18eda152ee789bed", "scanner": "scanner-primary", "fingerprint": "94b06b2d59e8a27c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ebb933d6b7e4bec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testRideCard.ts:16"}, "properties": {"repobilityId": "1a8d0947599d6362", "scanner": "scanner-primary", "fingerprint": "3ebb933d6b7e4bec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acb4f6a83a934b73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/seed.ts:6"}, "properties": {"repobilityId": "e66c35546abba0c9", "scanner": "scanner-primary", "fingerprint": "acb4f6a83a934b73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f7fb27d5332cad9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/captureLiveStrings.ts:11"}, "properties": {"repobilityId": "cf762bc585fdf705", "scanner": "scanner-primary", "fingerprint": "1f7fb27d5332cad9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f763b4aa163f7e01", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/reset.ts:10"}, "properties": {"repobilityId": "fd56ac64c2f6b8d1", "scanner": "scanner-primary", "fingerprint": "f763b4aa163f7e01", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee2caf2e15adf1d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasMapProbe.ts:15"}, "properties": {"repobilityId": "2f5a1da0f90e4618", "scanner": "scanner-primary", "fingerprint": "ee2caf2e15adf1d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f937e885fb1761a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/probe.ts:15"}, "properties": {"repobilityId": "d505f03aad0e13d9", "scanner": "scanner-primary", "fingerprint": "4f937e885fb1761a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3363bdd527fb1afa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testMarket.ts:11"}, "properties": {"repobilityId": "73afaa537d9e99be", "scanner": "scanner-primary", "fingerprint": "3363bdd527fb1afa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5934448bcddbf374", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasSweep.ts:52"}, "properties": {"repobilityId": "f1214deb46c7651f", "scanner": "scanner-primary", "fingerprint": "5934448bcddbf374", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36cf2d2068925fa1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasProbe2.ts:17"}, "properties": {"repobilityId": "302f75c05d0e2cc7", "scanner": "scanner-primary", "fingerprint": "36cf2d2068925fa1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63f7a8e056115caf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/kasResearch.ts:11"}, "properties": {"repobilityId": "a979888742afc7c2", "scanner": "scanner-primary", "fingerprint": "63f7a8e056115caf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d21858f3fbca433", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/maxClientBonus.ts:25"}, "properties": {"repobilityId": "f09db6738e439864", "scanner": "scanner-primary", "fingerprint": "3d21858f3fbca433", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c8ef2d67aa3d887", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testPlusGap.ts:15"}, "properties": {"repobilityId": "e5c9feaf1e909303", "scanner": "scanner-primary", "fingerprint": "4c8ef2d67aa3d887", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56108e9c83fc2d5b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/backup.ts:34"}, "properties": {"repobilityId": "28b830cd6574a4fc", "scanner": "scanner-primary", "fingerprint": "56108e9c83fc2d5b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa89938da7c60235", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/genInitData.ts:25"}, "properties": {"repobilityId": "52e3bc480d769cf5", "scanner": "scanner-primary", "fingerprint": "fa89938da7c60235", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a46b88daee17304", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testLink.ts:10"}, "properties": {"repobilityId": "a2ea294dc2d12e20", "scanner": "scanner-primary", "fingerprint": "7a46b88daee17304", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cbcd2115aa409468", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testEconomy.ts:20"}, "properties": {"repobilityId": "0d75db8d8c2ab3bc", "scanner": "scanner-primary", "fingerprint": "cbcd2115aa409468", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3a0956928ebb0f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testWheel.ts:10"}, "properties": {"repobilityId": "83057bec27c3d84f", "scanner": "scanner-primary", "fingerprint": "d3a0956928ebb0f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf8fa5c346c4e3db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/diagOwnerFlow.ts:21"}, "properties": {"repobilityId": "f6ea1c349945fd8b", "scanner": "scanner-primary", "fingerprint": "bf8fa5c346c4e3db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c806f292079cc19", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testBooking.ts:9"}, "properties": {"repobilityId": "bfa85c92e4df30a1", "scanner": "scanner-primary", "fingerprint": "7c806f292079cc19", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-854f5988765e71f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testBookingGuard.ts:18"}, "properties": {"repobilityId": "cf6e5d2b8205cf44", "scanner": "scanner-primary", "fingerprint": "854f5988765e71f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9713784817d11e74", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testOneTap.ts:11"}, "properties": {"repobilityId": "2ee52c6656bae954", "scanner": "scanner-primary", "fingerprint": "9713784817d11e74", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b59e59cd5e65781f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/checkKasReach.ts:34"}, "properties": {"repobilityId": "131a277f7e2621f8", "scanner": "scanner-primary", "fingerprint": "b59e59cd5e65781f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c17149ba0a6bd195", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testPhase2.ts:11"}, "properties": {"repobilityId": "d63aa10ce6776598", "scanner": "scanner-primary", "fingerprint": "c17149ba0a6bd195", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b74640ed1b91678f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testGarage.ts:12"}, "properties": {"repobilityId": "9f6fc0e74f0129e2", "scanner": "scanner-primary", "fingerprint": "b74640ed1b91678f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fec7b222c78c76b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/liveTest.ts:18"}, "properties": {"repobilityId": "9e99c1a7206df80c", "scanner": "scanner-primary", "fingerprint": "fec7b222c78c76b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bae8d89628d31886", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testReward.ts:13"}, "properties": {"repobilityId": "5e1c84e6d1182a76", "scanner": "scanner-primary", "fingerprint": "bae8d89628d31886", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7f56b1bf6ae5140d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testEngagement.ts:19"}, "properties": {"repobilityId": "0687d07fcb0207f3", "scanner": "scanner-primary", "fingerprint": "7f56b1bf6ae5140d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7b4612f2866d8c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/prodVerify.ts:28"}, "properties": {"repobilityId": "f3898c0b2d3bfe51", "scanner": "scanner-primary", "fingerprint": "c7b4612f2866d8c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26e6edac0a00e75e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testRollback.ts:13"}, "properties": {"repobilityId": "e315b30dec793093", "scanner": "scanner-primary", "fingerprint": "26e6edac0a00e75e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f618a7ad3333ee0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/devLink.ts:22"}, "properties": {"repobilityId": "491a2b99583d4874", "scanner": "scanner-primary", "fingerprint": "8f618a7ad3333ee0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43707e0f02911246", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testEditBonus.ts:13"}, "properties": {"repobilityId": "37c8ef0af7ce260d", "scanner": "scanner-primary", "fingerprint": "43707e0f02911246", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8b2c958e391b04dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testTransfer.ts:12"}, "properties": {"repobilityId": "1595e3ceb7b3199c", "scanner": "scanner-primary", "fingerprint": "8b2c958e391b04dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ad90b73a268d1b5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/scripts/testMoneyShield.ts:19"}, "properties": {"repobilityId": "3c8795a4f4351414", "scanner": "scanner-primary", "fingerprint": "ad90b73a268d1b5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2609120893105ca7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/services/adminOps.ts:225"}, "properties": {"repobilityId": "76593ca481087ce3", "scanner": "scanner-primary", "fingerprint": "2609120893105ca7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a27666ac6e5029c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/server/src/services/weeklyService.ts:131"}, "properties": {"repobilityId": "692ace95b37bd80e", "scanner": "scanner-primary", "fingerprint": "7a27666ac6e5029c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-921f4b62389f7ac9", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 packages/miniapp/src/booking3.tsx:178"}, "properties": {"repobilityId": "e1cc555c9bdbac81", "scanner": "scanner-primary", "fingerprint": "921f4b62389f7ac9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-62258ab657d2c478", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 packages/miniapp/src/booking.tsx:413"}, "properties": {"repobilityId": "a2c275d1a3ca2b4e", "scanner": "scanner-primary", "fingerprint": "62258ab657d2c478", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-c5eadf8c49507042", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/server/src/api/server.ts:147"}, "properties": {"repobilityId": "9057b9372f7f63a4", "scanner": "scanner-primary", "fingerprint": "c5eadf8c49507042", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/server/src/api/server.ts"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-9fd33b890e266b2d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/miniapp/public/maptest.html:98"}, "properties": {"repobilityId": "ef897b6c71687abf", "scanner": "scanner-primary", "fingerprint": "9fd33b890e266b2d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/miniapp/public/maptest.html"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "f6433029d595dc29", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-faccb9061e9b52a0", "level": "note", "message": {"text": "No README detected"}, "properties": {"repobilityId": "932e2e607019458d", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2699d5f16ae11282", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/shared/package.json"}, "properties": {"repobilityId": "37ac218a4ef9b430", "scanner": "scanner-primary", "fingerprint": "2699d5f16ae11282", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b0ea2c50d68f6461", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/admin/package.json"}, "properties": {"repobilityId": "ae48e375e73a1926", "scanner": "scanner-primary", "fingerprint": "b0ea2c50d68f6461", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/admin/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b739f2f2be1d714d", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/server/package.json"}, "properties": {"repobilityId": "d7cb4fafc3b292b2", "scanner": "scanner-primary", "fingerprint": "b739f2f2be1d714d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/server/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1408b67951ee3b7d", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/miniapp/package.json"}, "properties": {"repobilityId": "512d574cf70f2268", "scanner": "scanner-primary", "fingerprint": "1408b67951ee3b7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/miniapp/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "a7e2bf70395732cf", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "81977ca67e08c1d4", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "04d284f6e09e4525", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "115c102e858d5ade", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "1cc1e8c902a2dea5", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "1add2780f9df0f3c", "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": "d1a6ec9ca21a1d49", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-6b7fe94192fe87c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/gamify.ts:1"}, "properties": {"repobilityId": "cf96fb656172b1a8", "scanner": "scanner-primary", "fingerprint": "6b7fe94192fe87c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43d3d722fd2ef1f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/admin/src/api.ts:72"}, "properties": {"repobilityId": "b1dc75404ffe1126", "scanner": "scanner-primary", "fingerprint": "43d3d722fd2ef1f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0011b003d4aea3de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/admin/src/App.tsx:319"}, "properties": {"repobilityId": "79fa62a2c997050a", "scanner": "scanner-primary", "fingerprint": "0011b003d4aea3de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ad85005da6da22e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/server/src/scripts/testBookingStatus.ts:1"}, "properties": {"repobilityId": "54484b74daf81c63", "scanner": "scanner-primary", "fingerprint": "3ad85005da6da22e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c092bd4e50ff001d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/scripts/linkOwner.ts:21"}, "properties": {"repobilityId": "f5cdc458d2561734", "scanner": "scanner-primary", "fingerprint": "c092bd4e50ff001d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ac0b9c698e9308e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/scripts/testAuthGate.ts:27"}, "properties": {"repobilityId": "0a284ee1cee0c8a7", "scanner": "scanner-primary", "fingerprint": "2ac0b9c698e9308e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ff7b7a8280f3360e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/server/src/scripts/testRideCard.ts:1"}, "properties": {"repobilityId": "85c67d6232110b1e", "scanner": "scanner-primary", "fingerprint": "ff7b7a8280f3360e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db9f58fc64bda2b5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/scripts/genInitData.ts:30"}, "properties": {"repobilityId": "5dfca00e6acb49d4", "scanner": "scanner-primary", "fingerprint": "db9f58fc64bda2b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-738f5d7f3b31aecc", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/server/src/scripts/testRollback.ts:1"}, "properties": {"repobilityId": "51c3569c1f384a56", "scanner": "scanner-primary", "fingerprint": "738f5d7f3b31aecc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed6a02233522a970", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/server/src/services/marketService.ts:3"}, "properties": {"repobilityId": "b12eb5694edd50cb", "scanner": "scanner-primary", "fingerprint": "ed6a02233522a970", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10297c26bc2fbc0d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/server/src/services/coinService.ts:38"}, "properties": {"repobilityId": "77c02ee55dfcbbc2", "scanner": "scanner-primary", "fingerprint": "10297c26bc2fbc0d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0dd2b6aa930830e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/server/src/services/economyService.ts:1"}, "properties": {"repobilityId": "7281d185b1a69b21", "scanner": "scanner-primary", "fingerprint": "0dd2b6aa930830e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-664a2f7dabcd132d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/server/src/services/bookingNotifier.ts:22"}, "properties": {"repobilityId": "ad99741ae6846144", "scanner": "scanner-primary", "fingerprint": "664a2f7dabcd132d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b68925355deaab01", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/server/src/services/bookingPlus.ts:1"}, "properties": {"repobilityId": "d161aabb1a9ce586", "scanner": "scanner-primary", "fingerprint": "b68925355deaab01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54f4766f5b073f6a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/server/src/services/tradeService.ts:1"}, "properties": {"repobilityId": "accb96cd8fd4bf52", "scanner": "scanner-primary", "fingerprint": "54f4766f5b073f6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-243278bdb39ec150", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/server/src/services/referralService.ts:96"}, "properties": {"repobilityId": "fab3e864381d306a", "scanner": "scanner-primary", "fingerprint": "243278bdb39ec150", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db4e10dcd77577c1", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/server/src/services/analyticsService.ts:1"}, "properties": {"repobilityId": "288c8a448bb9f43a", "scanner": "scanner-primary", "fingerprint": "db4e10dcd77577c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7a32674a171b7c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/server/src/services/transferService.ts:3"}, "properties": {"repobilityId": "49d85d91de96b064", "scanner": "scanner-primary", "fingerprint": "a7a32674a171b7c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4c21706e655b991", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/server/src/services/cashbackService.ts:3"}, "properties": {"repobilityId": "c654493767b12cac", "scanner": "scanner-primary", "fingerprint": "e4c21706e655b991", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4720c4085bb6e6df", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/server/src/services/ai/llmRouter.ts:1"}, "properties": {"repobilityId": "bbbeba97b271b650", "scanner": "scanner-primary", "fingerprint": "4720c4085bb6e6df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ce346816bc3d37b", "level": "note", "message": {"text": "Legacy-named symbol `BookingViewOld` in packages/miniapp/src/booking3.tsx:18"}, "properties": {"repobilityId": "c2e6d82019d807ae", "scanner": "scanner-primary", "fingerprint": "4ce346816bc3d37b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-de3c01347cd941be", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/miniapp/src/booking3.tsx:1"}, "properties": {"repobilityId": "b9fcc8c2d64e8ab1", "scanner": "scanner-primary", "fingerprint": "de3c01347cd941be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70fcae2d13c708b6", "level": "note", "message": {"text": "17 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "f21675bed249619c", "scanner": "scanner-primary", "fingerprint": "70fcae2d13c708b6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-5c1545494ab6166c", "level": "note", "message": {"text": "Unused endpoint: GET /api/me"}, "properties": {"repobilityId": "4e8c475ca26fd5fc", "scanner": "scanner-primary", "fingerprint": "5c1545494ab6166c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5e603144b6066c68", "level": "note", "message": {"text": "Unused endpoint: POST /api/checkin"}, "properties": {"repobilityId": "962fc8ad7fcd3891", "scanner": "scanner-primary", "fingerprint": "5e603144b6066c68", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f808c29709cc794a", "level": "note", "message": {"text": "Unused endpoint: POST /api/wheel"}, "properties": {"repobilityId": "c3798bd2784a7c93", "scanner": "scanner-primary", "fingerprint": "f808c29709cc794a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69bd9257e4d3078b", "level": "note", "message": {"text": "Unused endpoint: GET /api/wallet"}, "properties": {"repobilityId": "a44d260f24bda3c4", "scanner": "scanner-primary", "fingerprint": "69bd9257e4d3078b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1f0d9d473b02ec71", "level": "note", "message": {"text": "Unused endpoint: POST /api/wallet/withdraw"}, "properties": {"repobilityId": "b4ff0f390b27e733", "scanner": "scanner-primary", "fingerprint": "1f0d9d473b02ec71", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-64f8abccab149f4e", "level": "note", "message": {"text": "Unused endpoint: POST /api/wallet/topup"}, "properties": {"repobilityId": "decb5e8ce5df33ad", "scanner": "scanner-primary", "fingerprint": "64f8abccab149f4e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-650f0c9e2a2bd3cc", "level": "note", "message": {"text": "Unused endpoint: POST /api/wallet/recipient"}, "properties": {"repobilityId": "881ed57615894f2e", "scanner": "scanner-primary", "fingerprint": "650f0c9e2a2bd3cc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b3dec348947a1112", "level": "note", "message": {"text": "Unused endpoint: POST /api/wallet/transfer"}, "properties": {"repobilityId": "364649c082dd1816", "scanner": "scanner-primary", "fingerprint": "b3dec348947a1112", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-faed6ffa7555f784", "level": "note", "message": {"text": "Unused endpoint: GET /api/items"}, "properties": {"repobilityId": "316c77f08caed2af", "scanner": "scanner-primary", "fingerprint": "faed6ffa7555f784", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-20642c242118d41b", "level": "note", "message": {"text": "Unused endpoint: POST /api/items/mint"}, "properties": {"repobilityId": "697685907d00c0c5", "scanner": "scanner-primary", "fingerprint": "20642c242118d41b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-db1c44d958136474", "level": "note", "message": {"text": "Unused endpoint: POST /api/items/list"}, "properties": {"repobilityId": "b93a5f1d7fda3646", "scanner": "scanner-primary", "fingerprint": "db1c44d958136474", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd1b2fbf396ab621", "level": "note", "message": {"text": "Unused endpoint: POST /api/items/unlist"}, "properties": {"repobilityId": "a6dcb4e25a65fa69", "scanner": "scanner-primary", "fingerprint": "cd1b2fbf396ab621", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c3dd86a4c8665663", "level": "note", "message": {"text": "Unused endpoint: GET /api/plus"}, "properties": {"repobilityId": "3c266c0c9b41152d", "scanner": "scanner-primary", "fingerprint": "c3dd86a4c8665663", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-134d7ac3f88dbb88", "level": "note", "message": {"text": "Unused endpoint: POST /api/plus/subscribe"}, "properties": {"repobilityId": "89172c0950bbca68", "scanner": "scanner-primary", "fingerprint": "134d7ac3f88dbb88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4017efcb6f0f7bbc", "level": "note", "message": {"text": "Unused endpoint: GET /api/gap"}, "properties": {"repobilityId": "92a0e52ffd85fbea", "scanner": "scanner-primary", "fingerprint": "4017efcb6f0f7bbc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b7ec5fdb5214bdd9", "level": "note", "message": {"text": "Unused endpoint: POST /api/gap/create"}, "properties": {"repobilityId": "58058414411c0f43", "scanner": "scanner-primary", "fingerprint": "b7ec5fdb5214bdd9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1e0715b40cb02925", "level": "note", "message": {"text": "Unused endpoint: POST /api/gap/join"}, "properties": {"repobilityId": "1fc41ed7c88ffb26", "scanner": "scanner-primary", "fingerprint": "1e0715b40cb02925", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4bc4cb4ce6b1d551", "level": "note", "message": {"text": "Unused endpoint: POST /api/items/buy"}, "properties": {"repobilityId": "1ecf7a8e4932e580", "scanner": "scanner-primary", "fingerprint": "4bc4cb4ce6b1d551", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-133b6e58404d2674", "level": "note", "message": {"text": "Unused endpoint: GET /api/driver/earnings"}, "properties": {"repobilityId": "148898e3a76962ec", "scanner": "scanner-primary", "fingerprint": "133b6e58404d2674", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-17bcc6bd11bbbda1", "level": "note", "message": {"text": "Unused endpoint: GET /api/market/shops"}, "properties": {"repobilityId": "aabe7b432bb3e992", "scanner": "scanner-primary", "fingerprint": "17bcc6bd11bbbda1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-694935a8c0e9deca", "level": "note", "message": {"text": "Unused endpoint: POST /api/market/buy"}, "properties": {"repobilityId": "71c95a1f9d5f3794", "scanner": "scanner-primary", "fingerprint": "694935a8c0e9deca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f3c8d10451ab98bb", "level": "note", "message": {"text": "Unused endpoint: GET /api/market/orders"}, "properties": {"repobilityId": "b5321d813789d78a", "scanner": "scanner-primary", "fingerprint": "f3c8d10451ab98bb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9b4e42bc539169b3", "level": "note", "message": {"text": "Unused endpoint: POST /api/market/redeem"}, "properties": {"repobilityId": "3919ba3d114e1d4d", "scanner": "scanner-primary", "fingerprint": "9b4e42bc539169b3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-abed04e20f1b2fec", "level": "note", "message": {"text": "Unused endpoint: GET /api/market/myshop"}, "properties": {"repobilityId": "4d9cc6dd299acc8c", "scanner": "scanner-primary", "fingerprint": "abed04e20f1b2fec", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e8a217236ea09494", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/market/shop"}, "properties": {"repobilityId": "317d3ef3875865a9", "scanner": "scanner-primary", "fingerprint": "e8a217236ea09494", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dbd1476b1925dc19", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/market/shopmode"}, "properties": {"repobilityId": "57f814529c138e4e", "scanner": "scanner-primary", "fingerprint": "dbd1476b1925dc19", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-20feaa119339d107", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/market/listing"}, "properties": {"repobilityId": "8e6bb933d085fbbe", "scanner": "scanner-primary", "fingerprint": "20feaa119339d107", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-013a5528555acb4f", "level": "note", "message": {"text": "Unused endpoint: GET /api/missions"}, "properties": {"repobilityId": "a8d674a60366e70e", "scanner": "scanner-primary", "fingerprint": "013a5528555acb4f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9ef77f8d7ea3d83a", "level": "note", "message": {"text": "Unused endpoint: POST /api/missions/claim"}, "properties": {"repobilityId": "d2af440e54a171a7", "scanner": "scanner-primary", "fingerprint": "9ef77f8d7ea3d83a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0f5a1fa3d0a414d9", "level": "note", "message": {"text": "Unused endpoint: GET /api/referral"}, "properties": {"repobilityId": "bbbce01a976a06e3", "scanner": "scanner-primary", "fingerprint": "0f5a1fa3d0a414d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4e25ca4a02ec37b2", "level": "note", "message": {"text": "Unused endpoint: GET /api/weekly"}, "properties": {"repobilityId": "45c7fb0eee33cf25", "scanner": "scanner-primary", "fingerprint": "4e25ca4a02ec37b2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99f6404e6c4782bc", "level": "note", "message": {"text": "Unused endpoint: GET /api/box"}, "properties": {"repobilityId": "1583fbdf42e65c8b", "scanner": "scanner-primary", "fingerprint": "99f6404e6c4782bc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b6a5b2c7d4e9eb63", "level": "note", "message": {"text": "Unused endpoint: POST /api/box/open"}, "properties": {"repobilityId": "f62dbb26ddee3585", "scanner": "scanner-primary", "fingerprint": "b6a5b2c7d4e9eb63", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-788bf17b0327648b", "level": "note", "message": {"text": "Unused endpoint: GET /api/booking/info"}, "properties": {"repobilityId": "e5058764d900fcd0", "scanner": "scanner-primary", "fingerprint": "788bf17b0327648b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fa503c8ac5d1d84f", "level": "note", "message": {"text": "Unused endpoint: GET /api/booking/active"}, "properties": {"repobilityId": "f9427efe1f22f1b1", "scanner": "scanner-primary", "fingerprint": "fa503c8ac5d1d84f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d22ef93c6823edfa", "level": "note", "message": {"text": "Unused endpoint: POST /api/booking/search"}, "properties": {"repobilityId": "e82c3927de2a0a89", "scanner": "scanner-primary", "fingerprint": "d22ef93c6823edfa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9a960d740bc7d00c", "level": "note", "message": {"text": "Unused endpoint: POST /api/booking/create"}, "properties": {"repobilityId": "23d3a41f4f0eadcd", "scanner": "scanner-primary", "fingerprint": "9a960d740bc7d00c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-35733b27839bbcf4", "level": "note", "message": {"text": "Unused endpoint: POST /api/booking/now"}, "properties": {"repobilityId": "e274923995f334e7", "scanner": "scanner-primary", "fingerprint": "35733b27839bbcf4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-02f8a7815c7f34a9", "level": "note", "message": {"text": "Unused endpoint: GET /api/booking/history"}, "properties": {"repobilityId": "e80b51ec6af129d9", "scanner": "scanner-primary", "fingerprint": "02f8a7815c7f34a9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c1686d8612ca6f7b", "level": "note", "message": {"text": "Unused endpoint: POST /api/booking/cancel"}, "properties": {"repobilityId": "8b07bd90119e9c79", "scanner": "scanner-primary", "fingerprint": "c1686d8612ca6f7b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a9f1b0917c74b9c4", "level": "note", "message": {"text": "Unused endpoint: GET /api/garage"}, "properties": {"repobilityId": "f94cc951f00d5c7e", "scanner": "scanner-primary", "fingerprint": "a9f1b0917c74b9c4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-46110072fb6d6d76", "level": "note", "message": {"text": "Unused endpoint: POST /api/garage/buy"}, "properties": {"repobilityId": "37cb4a6de3b4bdf8", "scanner": "scanner-primary", "fingerprint": "46110072fb6d6d76", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7b73207216028fff", "level": "note", "message": {"text": "Unused endpoint: POST /api/garage/equip"}, "properties": {"repobilityId": "3768cb0ef89fac38", "scanner": "scanner-primary", "fingerprint": "7b73207216028fff", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d1ac3a0cdbccd0ed", "level": "note", "message": {"text": "Unused endpoint: POST /api/garage/service"}, "properties": {"repobilityId": "703b1f36baa35b3c", "scanner": "scanner-primary", "fingerprint": "d1ac3a0cdbccd0ed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-23c82d0845e4fcb8", "level": "note", "message": {"text": "Unused endpoint: POST /api/booking/estimate"}, "properties": {"repobilityId": "09e038f96befa6d8", "scanner": "scanner-primary", "fingerprint": "23c82d0845e4fcb8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e5a290ad902e11ed", "level": "note", "message": {"text": "Unused endpoint: GET /api/fare/config"}, "properties": {"repobilityId": "c18dd9dd91b1233e", "scanner": "scanner-primary", "fingerprint": "e5a290ad902e11ed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a369f71214e9ef56", "level": "note", "message": {"text": "Unused endpoint: GET /api/leaderboard"}, "properties": {"repobilityId": "f3d951921f962a3d", "scanner": "scanner-primary", "fingerprint": "a369f71214e9ef56", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7467d7bee7e158a7", "level": "note", "message": {"text": "Unused endpoint: GET /api/booking/predict"}, "properties": {"repobilityId": "1b9bbc1f95070398", "scanner": "scanner-primary", "fingerprint": "7467d7bee7e158a7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c5d4b9ffb5a6c881", "level": "note", "message": {"text": "Unused endpoint: GET /api/booking/nearby"}, "properties": {"repobilityId": "dce587fc7161aeed", "scanner": "scanner-primary", "fingerprint": "c5d4b9ffb5a6c881", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d1ebb7d6ce2c95ec", "level": "note", "message": {"text": "Unused endpoint: POST /api/booking/rate"}, "properties": {"repobilityId": "d19dc20e7bec76e4", "scanner": "scanner-primary", "fingerprint": "d1ebb7d6ce2c95ec", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}