{"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-e81f393c7092fa25", "name": "Possibly dead Python function: reset_allow_roots", "shortDescription": {"text": "Possibly dead Python function: reset_allow_roots"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15c10857121cabe8", "name": "Possibly dead Python function: registered_tool_names", "shortDescription": {"text": "Possibly dead Python function: registered_tool_names"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3cc837e0d61f3c3", "name": "Possibly dead Python function: repl", "shortDescription": {"text": "Possibly dead Python function: repl"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: 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-835eae4c7f17a2f8", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "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-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a81854405987a63c", "name": "Possible secret in typescript/README.md", "shortDescription": {"text": "Possible secret in typescript/README.md"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 8 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc55229a7a3c078d", "name": "Agent authority lacks a verifier contract: .mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0f63c5fa5011fbea", "name": "Commented-code block (5 lines) in typescript/vitest.config.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/vitest.config.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-84cb5b468b4064a6", "name": "Commented-code block (6 lines) in typescript/vitest.integration.config.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in typescript/vitest.integration.config.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-8c43641d2f3aa549", "name": "Commented-code block (5 lines) in typescript/test/id-formats.test.ts:131", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/test/id-formats.test.ts:131"}, "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-08d71f29771e3a95", "name": "Commented-code block (6 lines) in typescript/test/tool-request-upload-url.test.ts:302", "shortDescription": {"text": "Commented-code block (6 lines) in typescript/test/tool-request-upload-url.test.ts:302"}, "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-4917432d85965fd7", "name": "Commented-code block (5 lines) in typescript/test/tool-seal-session.test.ts:283", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/test/tool-seal-session.test.ts:283"}, "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-e622f1fe4fab8417", "name": "Commented-code block (5 lines) in typescript/test/tool-delete-artifact.test.ts:279", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/test/tool-delete-artifact.test.ts:279"}, "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-b7d35561b09f4817", "name": "Commented-code block (9 lines) in typescript/test/setlevel.test.ts:34", "shortDescription": {"text": "Commented-code block (9 lines) in typescript/test/setlevel.test.ts:34"}, "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-f175eeccc265c3d3", "name": "Commented-code block (6 lines) in typescript/test/tool-complete-upload.test.ts:262", "shortDescription": {"text": "Commented-code block (6 lines) in typescript/test/tool-complete-upload.test.ts:262"}, "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-d4beeb7b692ad8bb", "name": "Commented-code block (5 lines) in typescript/test/http-client.test.ts:328", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/test/http-client.test.ts:328"}, "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-9990c42b21c9967b", "name": "Commented-code block (10 lines) in typescript/test/schema-validation.test.ts:3", "shortDescription": {"text": "Commented-code block (10 lines) in typescript/test/schema-validation.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76572b2a64cc3159", "name": "Commented-code block (5 lines) in typescript/test/error-envelope.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/test/error-envelope.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e2989c35a98ef59", "name": "Commented-code block (5 lines) in typescript/test/integration/path-confinement-denial.test.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/test/integration/path-confinement-denial.test.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e877528a1d8fc3ef", "name": "Commented-code block (5 lines) in typescript/test/integration/stub-server.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/test/integration/stub-server.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f244a229ed1abfb", "name": "Commented-code block (5 lines) in typescript/test/integration/non-retry-ambiguous-completion.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/test/integration/non-retry-ambiguous-completion.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c9840a30e87cdf37", "name": "Commented-code block (6 lines) in typescript/test/integration/non-compliant-client-gating.test.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in typescript/test/integration/non-compliant-client-gating.test.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a3dc23230802cde9", "name": "Commented-code block (5 lines) in typescript/test/integration/per-error-code.test.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/test/integration/per-error-code.test.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-881a35c15398c216", "name": "Commented-code block (6 lines) in typescript/test/integration/_setup.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in typescript/test/integration/_setup.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-a1fbbdba92752b54", "name": "Commented-code block (7 lines) in typescript/test/integration/idempotency-replay.test.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in typescript/test/integration/idempotency-replay.test.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2340db590711bd97", "name": "Commented-code block (5 lines) in typescript/test/_helpers/ajv.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/test/_helpers/ajv.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-259c14d3f59fc68c", "name": "Commented-code block (8 lines) in typescript/src/resources/registry.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in typescript/src/resources/registry.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-f80d84fa888425b5", "name": "Commented-code block (10 lines) in typescript/src/resources/artifact-bytes.ts:3", "shortDescription": {"text": "Commented-code block (10 lines) in typescript/src/resources/artifact-bytes.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-55df0e812beaf5f0", "name": "Commented-code block (7 lines) in typescript/src/resources/session.ts:29", "shortDescription": {"text": "Commented-code block (7 lines) in typescript/src/resources/session.ts:29"}, "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-d9d797d1e120d7ce", "name": "Commented-code block (6 lines) in typescript/src/http/client.ts:120", "shortDescription": {"text": "Commented-code block (6 lines) in typescript/src/http/client.ts:120"}, "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-653ffd2efc5c1f2a", "name": "Commented-code block (5 lines) in typescript/src/http/instance.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/src/http/instance.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-91a1bf9cb665f645", "name": "Commented-code block (7 lines) in typescript/src/http/multipart.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in typescript/src/http/multipart.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-3dcd5152ae9c29aa", "name": "Commented-code block (12 lines) in typescript/src/ids/formats.ts:9", "shortDescription": {"text": "Commented-code block (12 lines) in typescript/src/ids/formats.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2384be22bdf0f90c", "name": "Commented-code block (8 lines) in typescript/src/tools/store-artifact.ts:7", "shortDescription": {"text": "Commented-code block (8 lines) in typescript/src/tools/store-artifact.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2cc6a0cee0c25ea5", "name": "Commented-code block (5 lines) in typescript/src/tools/store-artifact-path.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/src/tools/store-artifact-path.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-cf652b952d2ce379", "name": "Commented-code block (15 lines) in typescript/src/tools/create-download-link.ts:7", "shortDescription": {"text": "Commented-code block (15 lines) in typescript/src/tools/create-download-link.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c316e1452470228c", "name": "Commented-code block (8 lines) in typescript/src/tools/request-upload-url.ts:7", "shortDescription": {"text": "Commented-code block (8 lines) in typescript/src/tools/request-upload-url.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc3104b27b48dabb", "name": "Commented-code block (7 lines) in typescript/src/tools/seal-session.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in typescript/src/tools/seal-session.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3569e8c518b11103", "name": "Commented-code block (14 lines) in typescript/src/tools/delete-artifact.ts:6", "shortDescription": {"text": "Commented-code block (14 lines) in typescript/src/tools/delete-artifact.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cdc9c6d6e9be9b9f", "name": "Commented-code block (6 lines) in typescript/src/tools/complete-upload.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in typescript/src/tools/complete-upload.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07cea44f21e4f93c", "name": "Commented-code block (5 lines) in typescript/src/path/allowlist.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in typescript/src/path/allowlist.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-2ef88ab7c765c9e9", "name": "Commented-code block (5 lines) in python/src/artifacta_mcp/__init__.py:3", "shortDescription": {"text": "Commented-code block (5 lines) in python/src/artifacta_mcp/__init__.py: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-a68994908b0a0b21", "name": "Commented-code block (6 lines) in python/src/artifacta_mcp/cli.py:92", "shortDescription": {"text": "Commented-code block (6 lines) in python/src/artifacta_mcp/cli.py:92"}, "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-d79ee4ad08891f90", "name": "Commented-code block (8 lines) in python/src/artifacta_mcp/_integration_common.py:22", "shortDescription": {"text": "Commented-code block (8 lines) in python/src/artifacta_mcp/_integration_common.py: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-0d5d1e6302848fc6", "name": "Commented-code block (5 lines) in python/src/artifacta_mcp/tools/store_artifact.py:192", "shortDescription": {"text": "Commented-code block (5 lines) in python/src/artifacta_mcp/tools/store_artifact.py:192"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npython/src/artifacta_mcp/openai_agents.py:artifacta_mcp_server, python/src/artifacta_mcp/_integration_common.py:build_stdio_params\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18732"}, "properties": {"repository": "SagaPeak/artifacta-mcp", "repoUrl": "https://github.com/SagaPeak/artifacta-mcp", "branch": "main"}, "results": [{"ruleId": "scanner-e81f393c7092fa25", "level": "note", "message": {"text": "Possibly dead Python function: reset_allow_roots"}, "properties": {"repobilityId": "bd75bae123fddce5", "scanner": "scanner-primary", "fingerprint": "e81f393c7092fa25", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/artifacta_mcp/allowlist.py:27"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-15c10857121cabe8", "level": "note", "message": {"text": "Possibly dead Python function: registered_tool_names"}, "properties": {"repobilityId": "730dfcbe5055e9c2", "scanner": "scanner-primary", "fingerprint": "15c10857121cabe8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/artifacta_mcp/server.py:133"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e3cc837e0d61f3c3", "level": "note", "message": {"text": "Possibly dead Python function: repl"}, "properties": {"repobilityId": "6f5d3779bbb8be8b", "scanner": "scanner-primary", "fingerprint": "e3cc837e0d61f3c3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/artifacta_mcp/errors.py:116"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-835eae4c7f17a2f8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "86a3b21209d1ca2a", "scanner": "scanner-primary", "fingerprint": "835eae4c7f17a2f8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-835eae4c7f17a2f8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "0807d183bc6a36fb", "scanner": "scanner-primary", "fingerprint": "835eae4c7f17a2f8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-a81854405987a63c", "level": "error", "message": {"text": "Possible secret in typescript/README.md"}, "properties": {"repobilityId": "fe464194bd73c675", "scanner": "scanner-primary", "fingerprint": "a81854405987a63c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "typescript/README.md"}, "region": {"startLine": 34}}}]}, {"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-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "720ae4d8cdf817e5", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "275912c9113b648e", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "4b111e9d517b02d1", "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": "efb62ab5a0129feb", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-cc55229a7a3c078d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "properties": {"repobilityId": "51942fb3d5b8b5b4", "scanner": "scanner-primary", "fingerprint": "cc55229a7a3c078d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f63c5fa5011fbea", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/vitest.config.ts:4"}, "properties": {"repobilityId": "9b7adddb65a131ec", "scanner": "scanner-primary", "fingerprint": "0f63c5fa5011fbea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84cb5b468b4064a6", "level": "none", "message": {"text": "Commented-code block (6 lines) in typescript/vitest.integration.config.ts:3"}, "properties": {"repobilityId": "2459a060b00cd173", "scanner": "scanner-primary", "fingerprint": "84cb5b468b4064a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c43641d2f3aa549", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/test/id-formats.test.ts:131"}, "properties": {"repobilityId": "0e2a63cdf68f1ae8", "scanner": "scanner-primary", "fingerprint": "8c43641d2f3aa549", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08d71f29771e3a95", "level": "none", "message": {"text": "Commented-code block (6 lines) in typescript/test/tool-request-upload-url.test.ts:302"}, "properties": {"repobilityId": "218f1aac101b8790", "scanner": "scanner-primary", "fingerprint": "08d71f29771e3a95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4917432d85965fd7", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/test/tool-seal-session.test.ts:283"}, "properties": {"repobilityId": "02734c237a773de8", "scanner": "scanner-primary", "fingerprint": "4917432d85965fd7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e622f1fe4fab8417", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/test/tool-delete-artifact.test.ts:279"}, "properties": {"repobilityId": "239d547e60046ee1", "scanner": "scanner-primary", "fingerprint": "e622f1fe4fab8417", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7d35561b09f4817", "level": "none", "message": {"text": "Commented-code block (9 lines) in typescript/test/setlevel.test.ts:34"}, "properties": {"repobilityId": "2d5f505cb2e70272", "scanner": "scanner-primary", "fingerprint": "b7d35561b09f4817", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f175eeccc265c3d3", "level": "none", "message": {"text": "Commented-code block (6 lines) in typescript/test/tool-complete-upload.test.ts:262"}, "properties": {"repobilityId": "cfef6c9cf6c1bf8a", "scanner": "scanner-primary", "fingerprint": "f175eeccc265c3d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4beeb7b692ad8bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/test/http-client.test.ts:328"}, "properties": {"repobilityId": "28db253e73f4f768", "scanner": "scanner-primary", "fingerprint": "d4beeb7b692ad8bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9990c42b21c9967b", "level": "none", "message": {"text": "Commented-code block (10 lines) in typescript/test/schema-validation.test.ts:3"}, "properties": {"repobilityId": "eb17e4d9e30582d3", "scanner": "scanner-primary", "fingerprint": "9990c42b21c9967b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76572b2a64cc3159", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/test/error-envelope.test.ts:3"}, "properties": {"repobilityId": "d4f9cdbaf59b717b", "scanner": "scanner-primary", "fingerprint": "76572b2a64cc3159", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e2989c35a98ef59", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/test/integration/path-confinement-denial.test.ts:11"}, "properties": {"repobilityId": "144d6859a2d29c00", "scanner": "scanner-primary", "fingerprint": "5e2989c35a98ef59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e877528a1d8fc3ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/test/integration/stub-server.ts:5"}, "properties": {"repobilityId": "c01868c9618d35ba", "scanner": "scanner-primary", "fingerprint": "e877528a1d8fc3ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f244a229ed1abfb", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/test/integration/non-retry-ambiguous-completion.test.ts:3"}, "properties": {"repobilityId": "7995f7b4dd20d9e4", "scanner": "scanner-primary", "fingerprint": "3f244a229ed1abfb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9840a30e87cdf37", "level": "none", "message": {"text": "Commented-code block (6 lines) in typescript/test/integration/non-compliant-client-gating.test.ts:8"}, "properties": {"repobilityId": "8d3eb277d6036164", "scanner": "scanner-primary", "fingerprint": "c9840a30e87cdf37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a3dc23230802cde9", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/test/integration/per-error-code.test.ts:8"}, "properties": {"repobilityId": "b0d3fd8153869ae4", "scanner": "scanner-primary", "fingerprint": "a3dc23230802cde9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-881a35c15398c216", "level": "none", "message": {"text": "Commented-code block (6 lines) in typescript/test/integration/_setup.ts:3"}, "properties": {"repobilityId": "9cb5eb962c467255", "scanner": "scanner-primary", "fingerprint": "881a35c15398c216", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1fbbdba92752b54", "level": "none", "message": {"text": "Commented-code block (7 lines) in typescript/test/integration/idempotency-replay.test.ts:8"}, "properties": {"repobilityId": "9b03a54c557d35aa", "scanner": "scanner-primary", "fingerprint": "a1fbbdba92752b54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2340db590711bd97", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/test/_helpers/ajv.ts:1"}, "properties": {"repobilityId": "efbd5eebcf4ed734", "scanner": "scanner-primary", "fingerprint": "2340db590711bd97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-259c14d3f59fc68c", "level": "none", "message": {"text": "Commented-code block (8 lines) in typescript/src/resources/registry.ts:3"}, "properties": {"repobilityId": "87f296331608c74f", "scanner": "scanner-primary", "fingerprint": "259c14d3f59fc68c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f80d84fa888425b5", "level": "none", "message": {"text": "Commented-code block (10 lines) in typescript/src/resources/artifact-bytes.ts:3"}, "properties": {"repobilityId": "37ac0d43f69bc7b1", "scanner": "scanner-primary", "fingerprint": "f80d84fa888425b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55df0e812beaf5f0", "level": "none", "message": {"text": "Commented-code block (7 lines) in typescript/src/resources/session.ts:29"}, "properties": {"repobilityId": "496fa67fe9a63fcd", "scanner": "scanner-primary", "fingerprint": "55df0e812beaf5f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9d797d1e120d7ce", "level": "none", "message": {"text": "Commented-code block (6 lines) in typescript/src/http/client.ts:120"}, "properties": {"repobilityId": "c0e8085964382477", "scanner": "scanner-primary", "fingerprint": "d9d797d1e120d7ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-653ffd2efc5c1f2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/src/http/instance.ts:3"}, "properties": {"repobilityId": "e2f9feb5f5c6ca14", "scanner": "scanner-primary", "fingerprint": "653ffd2efc5c1f2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91a1bf9cb665f645", "level": "none", "message": {"text": "Commented-code block (7 lines) in typescript/src/http/multipart.ts:3"}, "properties": {"repobilityId": "bf3509237e345c20", "scanner": "scanner-primary", "fingerprint": "91a1bf9cb665f645", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3dcd5152ae9c29aa", "level": "none", "message": {"text": "Commented-code block (12 lines) in typescript/src/ids/formats.ts:9"}, "properties": {"repobilityId": "9ac99e10fd4fcc1d", "scanner": "scanner-primary", "fingerprint": "3dcd5152ae9c29aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2384be22bdf0f90c", "level": "none", "message": {"text": "Commented-code block (8 lines) in typescript/src/tools/store-artifact.ts:7"}, "properties": {"repobilityId": "990fb67b1205d834", "scanner": "scanner-primary", "fingerprint": "2384be22bdf0f90c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2cc6a0cee0c25ea5", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/src/tools/store-artifact-path.ts:3"}, "properties": {"repobilityId": "effb661201f81526", "scanner": "scanner-primary", "fingerprint": "2cc6a0cee0c25ea5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf652b952d2ce379", "level": "none", "message": {"text": "Commented-code block (15 lines) in typescript/src/tools/create-download-link.ts:7"}, "properties": {"repobilityId": "f2837a4436a764d3", "scanner": "scanner-primary", "fingerprint": "cf652b952d2ce379", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c316e1452470228c", "level": "none", "message": {"text": "Commented-code block (8 lines) in typescript/src/tools/request-upload-url.ts:7"}, "properties": {"repobilityId": "2ce41104cbe13e6f", "scanner": "scanner-primary", "fingerprint": "c316e1452470228c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc3104b27b48dabb", "level": "none", "message": {"text": "Commented-code block (7 lines) in typescript/src/tools/seal-session.ts:8"}, "properties": {"repobilityId": "8cc7ba994294a6fb", "scanner": "scanner-primary", "fingerprint": "cc3104b27b48dabb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3569e8c518b11103", "level": "none", "message": {"text": "Commented-code block (14 lines) in typescript/src/tools/delete-artifact.ts:6"}, "properties": {"repobilityId": "cbfbeb0ae21eaeef", "scanner": "scanner-primary", "fingerprint": "3569e8c518b11103", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cdc9c6d6e9be9b9f", "level": "none", "message": {"text": "Commented-code block (6 lines) in typescript/src/tools/complete-upload.ts:7"}, "properties": {"repobilityId": "1fb34c01b461c1e1", "scanner": "scanner-primary", "fingerprint": "cdc9c6d6e9be9b9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07cea44f21e4f93c", "level": "none", "message": {"text": "Commented-code block (5 lines) in typescript/src/path/allowlist.ts:3"}, "properties": {"repobilityId": "3395018bc555ca72", "scanner": "scanner-primary", "fingerprint": "07cea44f21e4f93c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ef88ab7c765c9e9", "level": "none", "message": {"text": "Commented-code block (5 lines) in python/src/artifacta_mcp/__init__.py:3"}, "properties": {"repobilityId": "6a2c0fde07d0bcac", "scanner": "scanner-primary", "fingerprint": "2ef88ab7c765c9e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a68994908b0a0b21", "level": "none", "message": {"text": "Commented-code block (6 lines) in python/src/artifacta_mcp/cli.py:92"}, "properties": {"repobilityId": "595d6871f09a57b2", "scanner": "scanner-primary", "fingerprint": "a68994908b0a0b21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d79ee4ad08891f90", "level": "none", "message": {"text": "Commented-code block (8 lines) in python/src/artifacta_mcp/_integration_common.py:22"}, "properties": {"repobilityId": "8493da8f88ea6723", "scanner": "scanner-primary", "fingerprint": "d79ee4ad08891f90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d5d1e6302848fc6", "level": "none", "message": {"text": "Commented-code block (5 lines) in python/src/artifacta_mcp/tools/store_artifact.py:192"}, "properties": {"repobilityId": "976b3cdb771da425", "scanner": "scanner-primary", "fingerprint": "0d5d1e6302848fc6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c74bc4fd7b03e77a", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "0564d052cf88858c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "373dedaaffcc58c9", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "365a769b59b1c4b3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}