{"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-8eb71205cb49ae35", "name": "Stray `console.log` in TS/JS \u2014 tests/playwright/global-setup.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/playwright/global-setup.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-1e48e3427d1af289", "name": "Dockerfile runs as root: tests/playwright/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: tests/playwright/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7081df7408df5beb", "name": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/playwright:v1.58.2-noble", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/playwright:v1.58.2-noble"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f1dab7eea77d55b", "name": "Insecure pattern 'eval_used' in crates/uncloud-web/src/hooks/tauri.rs:59", "shortDescription": {"text": "Insecure pattern 'eval_used' in crates/uncloud-web/src/hooks/tauri.rs:59"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b253fee77d9f6d20", "name": "Insecure pattern 'eval_used' in crates/uncloud-web/src/components/mail.rs:188", "shortDescription": {"text": "Insecure pattern 'eval_used' in crates/uncloud-web/src/components/mail.rs:188"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd6b0b41a2e5d0bc", "name": "Insecure pattern 'weak_hash' in crates/uncloud-web/src/components/passwords.rs:202", "shortDescription": {"text": "Insecure pattern 'weak_hash' in crates/uncloud-web/src/components/passwords.rs:202"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6bae4923b390cb35", "name": "Insecure pattern 'weak_hash' in crates/uncloud-server/src/services/auth.rs:634", "shortDescription": {"text": "Insecure pattern 'weak_hash' in crates/uncloud-server/src/services/auth.rs:634"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-614cc085cd1a8784", "name": "Insecure pattern 'direct_innerhtml_assignment' in crates/uncloud-desktop/src-frontend/preferences.html:104", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in crates/uncloud-desktop/src-frontend/preferences.html:104"}, "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-d76eaf0bd66712c9", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dtolnay/rust-toolchain@stable can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b95d7b10e8652696", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e0ea5f197c973534", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dtolnay/rust-toolchain@stable can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76ec770d0e53b759", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-06014eb57e7c624e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "docker/login-action@v3 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c62c4959f381abd", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dtolnay/rust-toolchain@stable can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-df78decece7a82bc", "name": "Very large file: crates/uncloud-web/src/components/shopping.rs (1859 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-web/src/components/shopping.rs (1859 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87f43d8d71892211", "name": "Very large file: crates/uncloud-web/src/components/settings.rs (2705 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-web/src/components/settings.rs (2705 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e88727295119136", "name": "Very large file: crates/uncloud-web/src/components/mail.rs (4768 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-web/src/components/mail.rs (4768 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f667e647933c998a", "name": "Very large file: crates/uncloud-web/src/components/passwords.rs (2748 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-web/src/components/passwords.rs (2748 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a980644edc99920c", "name": "Very large file: crates/uncloud-web/src/components/file_browser.rs (1799 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-web/src/components/file_browser.rs (1799 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aac1aa7ce58650fb", "name": "Very large file: crates/uncloud-web/src/components/finance.rs (5083 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-web/src/components/finance.rs (5083 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb23735a6fc5e6fe", "name": "Very large file: crates/uncloud-web/src/components/tasks/task_detail.rs (1845 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-web/src/components/tasks/task_detail.rs (1845 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28f82c68bc8f4255", "name": "Very large file: crates/uncloud-web/src/components/tasks/list_view.rs (1469 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-web/src/components/tasks/list_view.rs (1469 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb6258416d96f3d9", "name": "Very large file: crates/uncloud-server/src/services/mail.rs (2656 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-server/src/services/mail.rs (2656 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-464808ea3be35670", "name": "Very large file: crates/uncloud-server/src/routes/music.rs (1576 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-server/src/routes/music.rs (1576 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8481a83e08354edc", "name": "Very large file: crates/uncloud-server/src/routes/s3.rs (1614 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-server/src/routes/s3.rs (1614 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43e8f8818944d575", "name": "Very large file: crates/uncloud-server/src/routes/files.rs (2116 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-server/src/routes/files.rs (2116 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da9149f6ff6a4319", "name": "Very large file: crates/uncloud-server/src/routes/mail.rs (4915 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-server/src/routes/mail.rs (4915 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f67198452223ebc7", "name": "Very large file: crates/uncloud-server/src/routes/subsonic.rs (2906 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-server/src/routes/subsonic.rs (2906 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48d8146f55a069cb", "name": "Very large file: crates/uncloud-server/src/routes/task_items.rs (1493 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-server/src/routes/task_items.rs (1493 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b6ebcb5a893463c", "name": "Very large file: crates/uncloud-server/src/routes/finance.rs (2846 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-server/src/routes/finance.rs (2846 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b0f230346542dd9", "name": "Very large file: crates/uncloud-desktop/src/lib.rs (1741 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-desktop/src/lib.rs (1741 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b517faa337143f41", "name": "Very large file: crates/uncloud-sync/src/engine.rs (2128 lines)", "shortDescription": {"text": "Very large file: crates/uncloud-sync/src/engine.rs (2128 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "34 tests / 252 src (ratio 0.13)."}, "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 92 placeholder/mock markers across 27 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}}]}}, "automationDetails": {"id": "repobility/25310"}, "properties": {"repository": "decaychain/uncloud", "repoUrl": "https://github.com/decaychain/uncloud", "branch": "main"}, "results": [{"ruleId": "scanner-8eb71205cb49ae35", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/playwright/global-setup.ts:26"}, "properties": {"repobilityId": "f948c739d282aa7f", "scanner": "scanner-primary", "fingerprint": "8eb71205cb49ae35", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e48e3427d1af289", "level": "warning", "message": {"text": "Dockerfile runs as root: tests/playwright/Dockerfile"}, "properties": {"repobilityId": "4942bd0c837cb022", "scanner": "scanner-primary", "fingerprint": "1e48e3427d1af289", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-7081df7408df5beb", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/playwright:v1.58.2-noble"}, "properties": {"repobilityId": "0e1fb4d53dd34258", "scanner": "scanner-primary", "fingerprint": "7081df7408df5beb", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/playwright/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2f1dab7eea77d55b", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in crates/uncloud-web/src/hooks/tauri.rs:59"}, "properties": {"repobilityId": "74464d73a1252463", "scanner": "scanner-primary", "fingerprint": "2f1dab7eea77d55b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/uncloud-web/src/hooks/tauri.rs"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-b253fee77d9f6d20", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in crates/uncloud-web/src/components/mail.rs:188"}, "properties": {"repobilityId": "d27b3565eb56425a", "scanner": "scanner-primary", "fingerprint": "b253fee77d9f6d20", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/uncloud-web/src/components/mail.rs"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-bd6b0b41a2e5d0bc", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in crates/uncloud-web/src/components/passwords.rs:202"}, "properties": {"repobilityId": "8f6adfb0ba2a1fae", "scanner": "scanner-primary", "fingerprint": "bd6b0b41a2e5d0bc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/uncloud-web/src/components/passwords.rs"}, "region": {"startLine": 202}}}]}, {"ruleId": "scanner-6bae4923b390cb35", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in crates/uncloud-server/src/services/auth.rs:634"}, "properties": {"repobilityId": "5a8128fd5b351d0f", "scanner": "scanner-primary", "fingerprint": "6bae4923b390cb35", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/uncloud-server/src/services/auth.rs"}, "region": {"startLine": 634}}}]}, {"ruleId": "scanner-614cc085cd1a8784", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in crates/uncloud-desktop/src-frontend/preferences.html:104"}, "properties": {"repobilityId": "6bdd40b0fc281438", "scanner": "scanner-primary", "fingerprint": "614cc085cd1a8784", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/uncloud-desktop/src-frontend/preferences.html"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-d76eaf0bd66712c9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7772edd9ea4e79e5", "scanner": "scanner-primary", "fingerprint": "d76eaf0bd66712c9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-d76eaf0bd66712c9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0581d555405303ce", "scanner": "scanner-primary", "fingerprint": "d76eaf0bd66712c9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-d76eaf0bd66712c9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "23b38c2297c27441", "scanner": "scanner-primary", "fingerprint": "d76eaf0bd66712c9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-d76eaf0bd66712c9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7772edd9ea4e79e5", "scanner": "scanner-primary", "fingerprint": "d76eaf0bd66712c9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-d76eaf0bd66712c9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0581d555405303ce", "scanner": "scanner-primary", "fingerprint": "d76eaf0bd66712c9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-d76eaf0bd66712c9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "934d55b67f74f0ff", "scanner": "scanner-primary", "fingerprint": "d76eaf0bd66712c9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-d76eaf0bd66712c9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "23b38c2297c27441", "scanner": "scanner-primary", "fingerprint": "d76eaf0bd66712c9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-d76eaf0bd66712c9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "32c328a67fb93a87", "scanner": "scanner-primary", "fingerprint": "d76eaf0bd66712c9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 169}}}]}, {"ruleId": "scanner-d76eaf0bd66712c9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "32c328a67fb93a87", "scanner": "scanner-primary", "fingerprint": "d76eaf0bd66712c9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-d76eaf0bd66712c9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "23b38c2297c27441", "scanner": "scanner-primary", "fingerprint": "d76eaf0bd66712c9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 213}}}]}, {"ruleId": "scanner-b95d7b10e8652696", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "a47a1d35d34e6ab7", "scanner": "scanner-primary", "fingerprint": "b95d7b10e8652696", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-desktop.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e0ea5f197c973534", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "24730041e9ba08cc", "scanner": "scanner-primary", "fingerprint": "e0ea5f197c973534", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-android.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-e0ea5f197c973534", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "afa5a4bd12bb9c57", "scanner": "scanner-primary", "fingerprint": "e0ea5f197c973534", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-android.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-e0ea5f197c973534", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "08816475fff89d44", "scanner": "scanner-primary", "fingerprint": "e0ea5f197c973534", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-android.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-e0ea5f197c973534", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f8c2a22eb11864aa", "scanner": "scanner-primary", "fingerprint": "e0ea5f197c973534", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-android.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-e0ea5f197c973534", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "edb423afa09b1a5d", "scanner": "scanner-primary", "fingerprint": "e0ea5f197c973534", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-android.yml"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-e0ea5f197c973534", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "36df68a234f732f4", "scanner": "scanner-primary", "fingerprint": "e0ea5f197c973534", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-android.yml"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-76ec770d0e53b759", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3215d5477d309270", "scanner": "scanner-primary", "fingerprint": "76ec770d0e53b759", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-android.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-06014eb57e7c624e", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b47d3cced1918c07", "scanner": "scanner-primary", "fingerprint": "06014eb57e7c624e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-server.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-06014eb57e7c624e", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "53f7e4c992dbfc23", "scanner": "scanner-primary", "fingerprint": "06014eb57e7c624e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-server.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-06014eb57e7c624e", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2f25cee8c82b08f3", "scanner": "scanner-primary", "fingerprint": "06014eb57e7c624e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-server.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-06014eb57e7c624e", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b47d3cced1918c07", "scanner": "scanner-primary", "fingerprint": "06014eb57e7c624e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-server.yml"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-1c62c4959f381abd", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "133d6b967f29b4de", "scanner": "scanner-primary", "fingerprint": "1c62c4959f381abd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-server.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae83c03bfc0a4d34", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae83c03bfc0a4d34", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ce2ca11407a99c04", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "03bf07e866eb59ee", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae83c03bfc0a4d34", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae83c03bfc0a4d34", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-df78decece7a82bc", "level": "note", "message": {"text": "Very large file: crates/uncloud-web/src/components/shopping.rs (1859 lines)"}, "properties": {"repobilityId": "8ac5e96b4865c1c6", "scanner": "scanner-primary", "fingerprint": "df78decece7a82bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-87f43d8d71892211", "level": "note", "message": {"text": "Very large file: crates/uncloud-web/src/components/settings.rs (2705 lines)"}, "properties": {"repobilityId": "acddf2a7f25e21db", "scanner": "scanner-primary", "fingerprint": "87f43d8d71892211", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9e88727295119136", "level": "note", "message": {"text": "Very large file: crates/uncloud-web/src/components/mail.rs (4768 lines)"}, "properties": {"repobilityId": "d5e09158a081ffe4", "scanner": "scanner-primary", "fingerprint": "9e88727295119136", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f667e647933c998a", "level": "note", "message": {"text": "Very large file: crates/uncloud-web/src/components/passwords.rs (2748 lines)"}, "properties": {"repobilityId": "8a1363bf4ea7686a", "scanner": "scanner-primary", "fingerprint": "f667e647933c998a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a980644edc99920c", "level": "note", "message": {"text": "Very large file: crates/uncloud-web/src/components/file_browser.rs (1799 lines)"}, "properties": {"repobilityId": "9145fa42b08b3247", "scanner": "scanner-primary", "fingerprint": "a980644edc99920c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aac1aa7ce58650fb", "level": "note", "message": {"text": "Very large file: crates/uncloud-web/src/components/finance.rs (5083 lines)"}, "properties": {"repobilityId": "8b8eb74600d18365", "scanner": "scanner-primary", "fingerprint": "aac1aa7ce58650fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cb23735a6fc5e6fe", "level": "note", "message": {"text": "Very large file: crates/uncloud-web/src/components/tasks/task_detail.rs (1845 lines)"}, "properties": {"repobilityId": "53e92d20bb8e593e", "scanner": "scanner-primary", "fingerprint": "cb23735a6fc5e6fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-28f82c68bc8f4255", "level": "note", "message": {"text": "Very large file: crates/uncloud-web/src/components/tasks/list_view.rs (1469 lines)"}, "properties": {"repobilityId": "45d3499e2b7d4edf", "scanner": "scanner-primary", "fingerprint": "28f82c68bc8f4255", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fb6258416d96f3d9", "level": "note", "message": {"text": "Very large file: crates/uncloud-server/src/services/mail.rs (2656 lines)"}, "properties": {"repobilityId": "3a6b468559e04b0f", "scanner": "scanner-primary", "fingerprint": "fb6258416d96f3d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-464808ea3be35670", "level": "note", "message": {"text": "Very large file: crates/uncloud-server/src/routes/music.rs (1576 lines)"}, "properties": {"repobilityId": "d01385432890211d", "scanner": "scanner-primary", "fingerprint": "464808ea3be35670", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8481a83e08354edc", "level": "note", "message": {"text": "Very large file: crates/uncloud-server/src/routes/s3.rs (1614 lines)"}, "properties": {"repobilityId": "d1b0d230462afc59", "scanner": "scanner-primary", "fingerprint": "8481a83e08354edc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-43e8f8818944d575", "level": "note", "message": {"text": "Very large file: crates/uncloud-server/src/routes/files.rs (2116 lines)"}, "properties": {"repobilityId": "cd12a16aa3c3ef25", "scanner": "scanner-primary", "fingerprint": "43e8f8818944d575", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-da9149f6ff6a4319", "level": "note", "message": {"text": "Very large file: crates/uncloud-server/src/routes/mail.rs (4915 lines)"}, "properties": {"repobilityId": "32b368b355440f13", "scanner": "scanner-primary", "fingerprint": "da9149f6ff6a4319", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f67198452223ebc7", "level": "note", "message": {"text": "Very large file: crates/uncloud-server/src/routes/subsonic.rs (2906 lines)"}, "properties": {"repobilityId": "375592b60095e8fb", "scanner": "scanner-primary", "fingerprint": "f67198452223ebc7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-48d8146f55a069cb", "level": "note", "message": {"text": "Very large file: crates/uncloud-server/src/routes/task_items.rs (1493 lines)"}, "properties": {"repobilityId": "05ef5b2034137b18", "scanner": "scanner-primary", "fingerprint": "48d8146f55a069cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5b6ebcb5a893463c", "level": "note", "message": {"text": "Very large file: crates/uncloud-server/src/routes/finance.rs (2846 lines)"}, "properties": {"repobilityId": "0409374d60c73fbf", "scanner": "scanner-primary", "fingerprint": "5b6ebcb5a893463c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1b0f230346542dd9", "level": "note", "message": {"text": "Very large file: crates/uncloud-desktop/src/lib.rs (1741 lines)"}, "properties": {"repobilityId": "fa3439e788770851", "scanner": "scanner-primary", "fingerprint": "1b0f230346542dd9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b517faa337143f41", "level": "note", "message": {"text": "Very large file: crates/uncloud-sync/src/engine.rs (2128 lines)"}, "properties": {"repobilityId": "e50ab3886ce38ebe", "scanner": "scanner-primary", "fingerprint": "b517faa337143f41", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "d148246f264c3025", "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": "4c0c3715a2561f84", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}]}]}